如何确定 RPM 的数据库使用的是哪个 Berkeley DB 版本?

如何确定 RPM 的数据库使用的是哪个 Berkeley DB 版本?

我尝试在 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是错误的做法。

(考虑过删除这个问题,但其他人可能会遇到这个问题)。

相关内容