x86_64 環境で i386 の RPM を削除する

2007-9-23 07:00
このエントリーをはてなブックマークに追加

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 のパッケージをすべて削除するという手順で行ないました。

  • ブックマーク : アクセス: 29,431回
  • カテゴリー : Linux
  • キーワード : ,

1件のコメント

  1. (thumbnail)

    libsvg2 と scim-bridge-gtk の RP…

    x86_64 環境で i386 の RPM を削除する の方法で、以下のようなエラーが発生した x86_64 のサーバ (CentOS 5) がありました。
    (more…)

    トラックバック by futuremix2007-10-1 23:01

現在、コメントフォームは閉鎖中です。

23 queries. HTML convert time: 0.186 sec. Powered by WordPress. Valid XHTML
Copyright © 2003-2013 @ futuremix.org ログイン