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
것은 실수입니다 .
(이 질문을 삭제하는 것을 고려했지만 다른 사람들이 이 문제를 겪을 수도 있습니다.)