yum updateでパッケージのアップデートができなくなりました。エラー内容を見るとrpmdbが壊れたらしい。
それを直します。作業自体はかんたんでコマンドを3回たたくだけなんですが、中身の理解が必要です。
(頻繁に起きることではないですが、でもそれが忘れやすい。備忘録です。)
CentOS | 7.8.2003 |
CentOSは、パッケージ(アプリ)の追加・更新・削除でyumコマンドを使います。
いつものようにyum updateを実行したら最後にこんなエラーが出ました。
完了しました!
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB1581 File handles still open at environment close
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.001
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.002
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.003
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Packages
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Requirename
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Name
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from dbenv->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from db->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
error: rpmdb: BDB1581 File handles still open at environment close
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.001
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.002
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/__db.003
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Packages
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Name
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Basenames
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Group
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Requirename
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Providename
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Conflictname
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Obsoletename
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Triggername
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Dirnames
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Installtid
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Sigmd5
error: rpmdb: BDB1582 Open file handle: /var/lib/rpm/Sha1header
error: rpmdb: BDB0060 PANIC: fatal region error detected; run recovery
error: db5 error(-30973) from dbenv->close: BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
rpmのDBが壊れたようです。
rpmはRedhat系OSのパッケージ管理システムで、yum以前はこれを直接操作していたのですが、yumの登場でラッピングされました。
(yumは内部でrpmを操作している。)
エラー内容は、rpm情報テーブルのリカバリをチャレンジして失敗しています。ちなみに、この状態でyum updateを実行するとやっぱりエラーになります。
yum update
エラー: db5 エラー (-30973) (dbenv->open において): BDB0087 DB_RUNRECOVERY: Fatal error, run database recovery
エラー: Packages インデックスを db5 で開けません - (-30973)
エラー: /var/lib/rpm にある Package データベースを開けません。
CRITICAL:yum.main:
Error: rpmdb open failed
リカバリでダメなら作り直しましょう。
rpm情報テーブルの退避。
rpmdbのリカバリ(再生成)。
yumコマンドでクリーン実行。
作業の内容はこれだけです。これをコマンドで実行するとこうなります。
mv /var/lib/rpm/__db* /tmp/
rpm --rebuilddb
yum clean all
作業は以上です。
Redhat系OSを使いはじめて10年? いやそれ以上が経っていますが、こんなことは初めてです。
もしかしたら、HDDの寿命が来たのかも?
今回これが起きたのは、VirtualBoxを使ってローカルPCに作った仮想サーバー。
レンタルサーバーやクラウドサーバーは、サービス提供会社が定期的にメンテナンスでHDDの交換をしているので、ハードが原因で起きることは稀。
勝手にHDDのせいにしてますが確証はありません。それくらい、頻繁に起きるものではないです。
VirtualBoxはバージョン6からWindows10のHyper-Vと共存できるようになりました。
でも、仮想サーバーのネットワークが不安定です。
yumはネット上のrpmリポジトリに頻繁にアクセスするので、通信が途切れて起きたのかも知れません。
※ 追記。依存性の解決エラーでも使える
yum updateの『依存性の解決』でエラーが出たときにも使えます。
yum update
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ mongodb-org.x86_64 0:4.2.9-1.el7 を 更新
---> パッケージ mongodb-org.x86_64 0:4.2.10-1.el7 を アップデート
---> パッケージ mongodb-org-mongos.x86_64 0:4.2.9-1.el7 を 更新
---> パッケージ mongodb-org-mongos.x86_64 0:4.2.10-1.el7 を アップデート
---> パッケージ mongodb-org-server.x86_64 0:4.2.9-1.el7 を 更新
---> パッケージ mongodb-org-server.x86_64 0:4.2.10-1.el7 を アップデート
---> パッケージ mongodb-org-shell.x86_64 0:4.2.9-1.el7 を 更新
---> パッケージ mongodb-org-shell.x86_64 0:4.2.10-1.el7 を アップデート
---> パッケージ mongodb-org-tools.x86_64 0:4.2.9-1.el7 を 更新
---> パッケージ mongodb-org-tools.x86_64 0:4.2.10-1.el7 を アップデート
エラー: rpmdbNextIterator: スキップします。 h# 724 リージョン ヘッダー以降: 異常です。tag 1986338884 type 1768123251 offset -1869490464 count 1529950513
--> 依存性解決を終了しました。
エラー: rpmdbNextIterator: スキップします。 h# 724 リージョン ヘッダー以降: 異常です。tag 1560948000 type 1533440861 offset -544106099 count 975195497
エラー: Rpmdb checksum is invalid: pkg checksums: kernel-headers-0:3.10.0-1127.19.1.el7.x86_64