up2date で db 破損エラーが出た時の対処方法

今日は休日出勤で極寒のデータセンターでお仕事中です。リース切れになったサーバ群を総入れ換えしているのですが、RedHat Enterprise Linux の up2date でパッケージの更新作業中にエラーを吐いて止まっているマシンがでました。

具体的には、

rpmdb: Program version 4.2 doesn't match environment version
error: db4 error(22) from dbenv->open: Invalid argument
error: cannot open Packages index using db3 - Invalid argument (22)
error: cannot open Packages database in /var/lib/rpm
というエラーメッセージが出たのですが、ぐぐってみたら対処方法が見付かりました。rpm を管理している db 情報を再構築する必要があるみたいです。具体的には、
rm -rf /var/lib/rpm/__db*
rpm --rebuilddb
で OK です。db の再構築には5分程度かかりますので、じっと待ちましょう。

ちなみに、RedHat Enterprise Linux の up2date は普通に up2date -u ではいくつかのパッケージが依存問題で失敗します。成功させるためには、下記の通りやるとうまくいきます。
up2date -u --packages elfutils rpm-libs bzip2
up2date -u

- スポンサーリンク -