ablog

不器用で落着きのない技術者のメモ

yum を実行すると "Error: rpmdb open failed" と怒られる

yum install を kill してから再実行しようとしたら、"Error: rpmdb open failed" と怒られた。以下の対応で解決した。

rpmdbが壊れる原因

CentOSYumコマンドを実行したときに、下記のエラーで yum コマンドが失敗しました。
yum がバックグラウンドでロックしていて、 yum コマンドが実行できないときに、カッとなって、yum のプロセスを kill してしまうと、こういうことが起きてしまいます。

それ以外にも rpm のデータベースの更新作業中に、パソコン・サーバのOSがクラッシュしてしまったなどのケースでも、データベースが破損する可能性があるでしょう。

$ sudo yum install w3m
エラー: rpmdb: BDB0113 Thread/process 3553/139637759510336 failed:
BDB1507 Thread died in Berkeley DB library
エラー: db5 エラー (-30973) (dbenv->failchk において): BDB0087
DB_RUNRECOVERY: Fatal error, run database recovery
エラー: Packages インデックスを db5 で開けません -  (-30973)
エラー: /var/lib/rpm にある Package データベースを開けません。
CRITICAL:yum.main:

Error: rpmdb open failed

修正方法

rpmdb が壊れてしまったので、rpmdb を再構築すれば良いわけです。rpmコマンドには、 rebuilddb (Rebuild DB) というオプションが用意されています。rpmdb を修正するには、以下のコマンドを実行します。

$ sudo rpm --rebuilddb
CentOSのrpmdbが壊れてyumコマンドが失敗する場合の修正方法