RPMデータベース(RPMではなくその中にあるデータベース)が破損しているか一貫していないかどうかをスクリプトに適した方法で確認する必要があります/var/lib/rpm
(つまり、正常な場合は終了コード0を返し、破損した場合は別のコードを返します)。db_verify
個々のBerkeleyデータベースを検証するために使用できますが、これは個々のBerkeleyデータベースが完全に有効であり、データベース間に矛盾があると想定しています。データベースを削除(名前変更)しようとしましたが、rpm -qa --dump
気付かず、rpm -Va
警告とともに再生成しました。出力で "warning:" 文字列を見つけることができるようですが、これは信頼できないようです。また、ファイルを検証したくなく、データベースを検証したいと思います。 OpenSuSE RPM関連のパッケージを検索しましたが、適切なパッケージが見つかりませんでした。どんな提案がありますか?ちょうど捨てるよりも徹底した検証になるように設計されたことを好みます。
答え1
--verifydb
最小rpm-4.1以降に文書化されていないフラグがあります。
バラよりrpm/rpmdb.c
:
{ "verifydb", '\0', (POPT_ARG_VAL|POPT_ARGFLAG_OR|POPT_ARGFLAG_DOC_HIDDEN),
&mode, MODE_VERIFYDB, N_("verify database files"), NULL},
だからrpm --verifydb
あなたが探していることをしなければなりません。