RPM의 데이터베이스가 어떤 Berkeley DB 버전을 사용하고 있는지 확인하는 방법은 무엇입니까?

RPM의 데이터베이스가 어떤 Berkeley DB 버전을 사용하고 있는지 확인하는 방법은 무엇입니까?

CentOS 5에서는 /var/lib/rpm에 있고 결국 다른 시스템 유형(CentOS 6, RHEL 등)에서는 RPM 데이터베이스에 대한 읽기 및 쓰기를 시도했습니다.

문제는 내가 사용하고 있는 Berkeley DB의 버전이 무엇인지 모른다는 것입니다.

file데이터베이스 파일에 대한 명령은 "데이터"를 보고합니다.

Berkeley DB 버전 3.3, 4.4 및 6.1을 사용하여 데이터베이스를 열려고 시도했지만 "잘못된 매개변수"로 인해 실패했습니다.

이것은 내가 사용하고 있는 코드입니다(4.4/6.1에서 작동).

int main()
{
    #define DATABASE "__db.001"

    DB *dbp;
    int ret;

    if ((ret = db_create(&dbp, NULL, 0)) != 0) {
        fprintf(stderr, "db_create: %s\n", db_strerror(ret));
        exit (1);
    }

    if ((ret = dbp->open(
        dbp, NULL, DATABASE, NULL, DB_UNKNOWN, 0, 0664)) != 0) {
        dbp->err(dbp, ret, "%s", DATABASE);
        exit(1);
    }
}

무엇이 잘못되었는지에 대한 힌트가 있나요?

답변1

/var/lib/rpm에 있는 파일은 다음과 같습니다.그들의 이름으로아니요버클리 데이터베이스 파일. 파일 없음그들의 이름으로버클리 데이터베이스 파일.

그러므로 이름이 .인 파일을 열려고 시도하는 __db.001것은 실수입니다 .

(이 질문을 삭제하는 것을 고려했지만 다른 사람들이 이 문제를 겪을 수도 있습니다.)

관련 정보