yum が Loaded plugins: fastestmirror でフリーズしたときの対処方法

久々にログインするサーバで yum を起動してパッケージをインストールしていたら、途中でフリーズしてしまいました。一向に進まないのでターミナルをもう一つ開いてプロセスを強制終了。もう一度 yum を起動してみたら、Loaded plugins: fastestmirror でフリーズするようになってしまいました。

yum -y install libXext*
Loaded plugins: fastestmirror

どうやらプロセスを強制終了させたときか、最初にフリーズ状態になったときか、タイミングは不明なのですが、RPM パッケージのデータベースが破損した模様です。そのむかしに経験した覚えがあるので、ぐぐってコマンドを思い出し、対処を施しました。

- スポンサーリンク -

まずは rpm のデータベースの状態を確認してみます。/var/lib/rpm 配下に存在する __db.* 以外のファイル群が rpm のデータベースです。データベースは Berkeley DB を用いており、それぞれのデータベースの排他制御を行うために
__db.000, __db.001, __db.002, __db.003
のようなファイル名でロック管理を行っています。

まぁ状態を確認すると書いたはいいものの、ファイル名を見ただけではロックの状態がわかりません。今回は何かしらの拍子に、いずれかのデータベースでロックがかかりっぱなしの状態に陥ったと推測されます。

ls -l /var/lib/rpm/
合計 33992
-rw-r--r-- 1 root root  5021696 10月 23 22:57 Basenames
-rw-r--r-- 1 root root    12288  3月  3  2010 Conflictname
-rw-r--r-- 1 root root   978944 10月 23 22:57 Dirnames
-rw-r--r-- 1 root root  5226496 10月 23 22:57 Filemd5s
-rw-r--r-- 1 root root    12288 10月 23 22:57 Group
-rw-r--r-- 1 root root    16384 10月 23 22:57 Installtid
-rw-r--r-- 1 root root    40960 10月 23 22:57 Name
-rw-r--r-- 1 root root 20787200 10月 23 22:57 Packages
-rw-r--r-- 1 root root   360448 10月 23 22:57 Providename
-rw-r--r-- 1 root root    73728 10月 23 22:57 Provideversion
-rw-r--r-- 1 root root    12288  3月  3  2010 Pubkeys
-rw-r--r-- 1 root root   204800 10月 23 22:57 Requirename
-rw-r--r-- 1 root root   114688 10月 23 22:57 Requireversion
-rw-r--r-- 1 root root    86016 10月 23 22:57 Sha1header
-rw-r--r-- 1 root root    45056 10月 23 22:57 Sigmd5
-rw-r--r-- 1 root root    12288  3月  3  2010 Triggername
-rw-r--r-- 1 root root        0  2月 18 22:00 __db.000
-rw-r--r-- 1 root root    24576  2月 18 22:07 __db.001
-rw-r--r-- 1 root root  1318912  2月 18 22:07 __db.002
-rw-r--r-- 1 root root   663552  2月 18 22:07 __db.003

このような場合には、ロックファイルを全て削除し、RPM のデータベースを再構築することで不具合は解消します。

sudo rm -rf /var/lib/rpm/__db.00? 
sudo rpm --rebuilddb

最後に念のため yum がちゃんと起動するかを確認します。いつもどおりパッケージのリストが出力されれば修復成功です。

yum list

僕は上記方法で修復が成功しておりますが、成功しない場合には下記のコマンドで、ダウンロードしてあるパッケージファイルと古いヘッダーファイル削除してみると良いかも知れません。

sudo yum clean all
- スポンサーリンク -