数日前、お客様の 1 人が、CentOS Linux を使用して yum コマンドを使用してパッケージをインストールできないと報告しました。調査した結果、RPM データベースが破損していることがわかりました。これは、CentOS および RHEL サーバーで非常に一般的な問題です。
CentOS および RHEL サーバーは、rpm を使用してパッケージのインストール、削除、およびアップグレードを管理します。 rpm データベースが何らかの形で破損すると、Yum/Dnf などの RPM に依存する他のシステム ツールが動作しなくなります。
CentOS または RHEL で RPM データベースを再構築するにはどうすればよいですか?
RPM データベースを確実に修正できるように、いくつかの要件をインストールします。
yum install db4-utils yum-utils -y
現在の RPM データベースのバックアップがあることを常に確認してください
rsync -avpr /var/lib/rpm /var/lib/rpm.bak
破損した RPM データベースの再構築:2 つの解決策
1) RPM データベース ファイルを削除して再構築する:
rm /var/lib/__db* -fv rpm --rebuilddb
rpm –rebuilddb コマンドは、ファイル /var/lib/rpm/Packages に基づいて RPM データベースを再構築します。 RPM データベースを再構築するには、「パッケージ」ファイルが必要です。低速のサーバーでは、このコマンドの実行に時間がかかる場合があります。
今すぐ yum normall を使用してみてください。それでも問題が解決しない場合は、ステップ 2 に進んでください:
2) RPM パッケージのリロード
破損した RPM データベースを再構築するもう 1 つの優れた戦略は、 db_dump および db_load ツールを使用することです。以下の例では、db_dump を使用して Packages ファイルをダンプし、db_load を使用して Packages ファイルをリロードします。これは、RPM データベースの問題を修正する別の方法です:
cd /var/lib/rpmdb mv Packages Packages.bak db_dump Packages.bak | db_load Packages
追加の健全性チェックとして、DB 内のすべてのヘッダーを照会します
rpm -qa
最後に、RPM データベースを再構築します。
rpm --rebuilddb
この時点で、RPM データベースが再び完全に機能するはずです。この 2 つの手順がうまくいかない場合、または他の解決策を知っている場合はお知らせください。
さらに読む
- rpm.org による RPM データベースの再構築:http://www.rpm.org/max-rpm/ch-rpm-miscellania.html
- RPM データベースの再構築:fedoraproject.org:http://docs.fedoraproject.org/en-US/Fedora_Draft_Documentation/0.1/html/RPM_Guide/ch04s05s02.html
- Daniel Berrange による RHEL での RPM DB リカバリ:http://people.redhat.com/berrange/notes/rpmrecovery.html
破損した RPM データベースの再構築の最終変更日:2017 年 2 月 7 日 Esteban Borges