我尝试在 CentOS 5 下读取和写入位于 /var/lib/rpm 中的 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 中的文件带有D b他们的名字里有不是伯克利数据库文件。没有的文件D b以他们的名义是伯克利数据库文件。
因此尝试打开名为 的文件__db.001
是错误的做法。
(考虑过删除这个问题,但其他人可能会遇到这个问题)。