PR

CentOS の yum が壊れた!?

適当に使っているDIT の提供するServersMan@VPS に久しぶりにログインし、yum を実行した。

正確にはBlueOnyx 上のアップデート処理を実行したのだが、これは「処理中」などと表示されず、処理が完了するまで何をしているのかわからない。とは言え、同画面からlog も閲覧できるし、yum が実行中(or 壊れている)の場合はアップデート操作ボタンが表示されないから確認や推測はできる。

# どうでもよいけど、その点を比較すると、Webmin は進行状況がわかる

さて、久しぶりなこともあり、475 個くらいのパッケージがアップデートされるらしい。3時間ほど放置していて、もう終わっただろうとロクに確認もせず再起動してしまった。浅はかな行動をとると、当然の報いを受けることになるわけだ。

念のためアップデートが無いことを確認しようと思ったのだが、そのボタンが表示されない。この場合、前述した通りyum が実行中うか壊れていることになる。

スポンサードリンク

現状の確認

ログを見た(完全に順番が逆・・)ところ、reboot 直前にも何らかの作業をしていたらしい。ということは壊してしまった可能性がとても高い・・。SSH からログインしてyum update としてみると、以下のように表示した。

---> Package yum-fastestmirror.noarch 0:1.1.16-21.el5.centos set to be updated
--> Finished Dependency Resolution
rpm-libs-4.4.2.3-22.el5_7.2.i386 from installed has depsolving problems
  --> Missing Dependency: rpm = 4.4.2.3-22.el5_7.2 is needed by package rpm-libs-4.4.2.3-22.el5_7.2.i386 (installed)
Error: Missing Dependency: rpm = 4.4.2.3-22.el5_7.2 is needed by package rpm-libs-4.4.2.3-22.el5_7.2.i386 (installed)
 You could try using --skip-broken to work around the problem
 You could try running: package-cleanup --problems
                        package-cleanup --dupes
                        rpm -Va --nofiles --nodigest

対処1

言われた通りコマンドを実行する。例えば次のように。

# package-cleanup --problems
Setting up yum
Repository 'vz-base' is missing name in configuration, using id
Repository 'vz-updates' is missing name in configuration, using id
Reading local RPM database
Processing all local requires
Missing dependencies:
Package rpm-libs requires rpm = 4.4.2.3-28.el5_8

しかし、解決しない。

対処2

# rpm --rebuilddb

とするも解決しない。

対処3

ログと突き合わせると、どうやらreboot したその時にやっていたパッケージが問題を起こしているだろうことがわかった。参考文献より重複してインストールされていないか確認するという項目があったので早速やってみた。

# rpm -qa  rpm-libs
rpm-libs-4.4.2.3-28.el5_8
rpm-libs-4.4.2.3-22.el5_7.2

どうやら当たりらしい。そこで、これを次のようにして削除する。

# rpm -ev --nodeps rpm-libs-4.4.2.3-22.el5_7.2

何となく以下のようにもしておく。

# yum clean all
# rpm --rebuilddb

対処4

ところが、まだyum 様はご立腹の様子。

Transaction Check Error:
  file /usr/bin/stap-report from install of systemtap-1.6-7.el5_8.i386 conflicts with file from package systemtap-runtime-1.3-9.el5.i386
  file /usr/share/man/man7/stappaths.7.gz from install of systemtap-1.6-7.el5_8.i386 conflicts with file from package systemtap-runtime-1.3-9.el5.i386

Error Summary
-------------

また、良く見ると上の方には次のメッセージも書かれていた。

Resolving Dependencies
There are unfinished transactions remaining. You might consider running yum-complete-transaction first to finish them.

ということなので、素直にそれを実行する。

# yum-complete-transaction

何やら大量に削除している。以前、なにか重要なものを削除してしまって、綺麗スッキリシステム関連パッケージが削除された経験「も」あるから、その時の記憶が蘇る・・・・・・。

# yum update
Loaded plugins: fastestmirror
Repository 'vz-base' is missing name in configuration, using id
Repository 'vz-updates' is missing name in configuration, using id
Loading mirror speeds from cached hostfile
 * BlueOnyx: ftp.dti.ad.jp
 * Solarspeed.net: blueonyx.solarspeed.net
 * Virtual-5106R: vbq.solarspeed.net
 * base: rsync.atworks.co.jp
 * extras: rsync.atworks.co.jp
 * updates: rsync.atworks.co.jp
Setting up Update Process
No Packages marked for Update

しかし、今回は特に問題ないようだった。念のため再起動して確かめたが、問題は無いらしい。とは言え、あまり活用していない(特定の機能しか利用していない)から遭遇していないだけで、実は問題を内包しているかもしれない。

参考文献

コメント