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にあるファイルは次のとおりです。彼らの名前でいいえBerkeleyデータベースファイル。ファイルなし彼らの名前ではいBerkeleyデータベースファイル。

したがって、名前が..のファイルを開こうとするのは__db.001間違いです。

(この質問を削除することを検討しましたが、他の人がこの問題に遭遇する可能性があります。)

関連情報