x86_64 環境で i386 の RPM を削除する
CentOS 5 の x86_64 版を入れていろいろやっていたら、いつのまにか i386 のパッケージが紛れていて、しかも依存関係の解決のために Gnome とか libxx など 100 近いパッケージが入ってしまっていました。rpm コマンドで一覧を表示させると次のように同じパッケージが複数表示される状態になっています。
$ rpm -qa | sort | more GConf2-2.14.0-9.el5 GConf2-2.14.0-9.el5 ImageMagick-6.2.8.0-3.el5.4 ImageMagick-6.2.8.0-3.el5.4 MAKEDEV-3.23-1.2 NetworkManager-0.6.4-6.el5 NetworkManager-glib-0.6.4-6.el5 NetworkManager-glib-0.6.4-6.el5 NetworkManager-gnome-0.6.4-6.el5 ORBit2-2.14.3-4.el5 ORBit2-2.14.3-4.el5 PyXML-0.8.4-4 SDL-1.2.10-8.el5 SDL-1.2.10-8.el5 SDL-devel-1.2.10-8.el5 SDL-devel-1.2.10-8.el5 ……
重って表示されるのは片方が x86_64 でもう片方が i386 (i686) です。
i386 の方だけ狙って消すには
# rpm -e GConf2-2.14.0-9.el5.i386
のように パッケージ名とバージョンのあとに i386 (または i686) までつけて消せばよいのですが、依存関係もあるので大変です。そこで、rpm -qf でフォーマットを指定して xargs を使って一気に消せないか試したところうまくいきました。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" | grep i[36]86 | xargs rpm -e
2009-11-19追記
ある環境で scim-bridge-gtk の i386 パッケージが上記コマンドでどうしても削除できないという状況に陥りました。これは scim-bridge-gtk i386 パッケージがアンインストール時に /usr/bin/gtk-query-immodules-2.0-32 を実行しようとするのですが、このファイルが含まれている gtk2 パッケージが先に削除されてしまっているためです。このときは、一度 gtk2.i386 を入れ直してから、scim-bridge-gtk を先に手動で削除してから、改めて i386 のパッケージをまとめて削除することで解決しました。
2010-03-29追記
さらに別の環境で、librsvg2.i386 が同様のエラーで削除できませんでした。この時も yum install gtk2.i386 として一度 gtk2 を入れた状態で、先に rpm -e librsvg2.i386 を実行してパッケージを削除してから、i386 のパッケージをすべて削除するという手順で行ないました。
libsvg2 と scim-bridge-gtk の RP…
x86_64 環境で i386 の RPM を削除する の方法で、以下のようなエラーが発生した x86_64 のサーバ (CentOS 5) がありました。
(more…)
トラックバック by futuremix — 2007-10-1 23:01