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
コメントやシェアをお願いします!