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
間違いです。
(この質問を削除することを検討しましたが、他の人がこの問題に遭遇する可能性があります。)