libsvg2 と scim-bridge-gtk の RPM が削除できなくなる
x86_64 環境で i386 の RPM を削除する の方法で、以下のようなエラーが発生した x86_64 のサーバ (CentOS 5) がありました。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \ | grep i[36]86 | xargs rpm -e Invalid link from "ld-linux.so.2" to "/lib/ld-lsb.so.3": No such file or directory ls: /etc/gtk-2.0/i?86*: そのようなファイルやディレクトリはありません /usr/bin/update-gdk-pixbuf-loaders: line 44: /etc/gtk-2.0/i686-redhat-linux-gnu/gdk-pixbuf.loaders: そのようなファイルやディレクトリはありません エラー: %postun(librsvg2-2.16.1-1.el5.i386) スクリプトの実行に失敗しました。終了ステータス 1 ls: /etc/gtk-2.0/i?86*: そのようなファイルやディレクトリはありません /usr/bin/update-gtk-immodules: line 44: /etc/gtk-2.0/i686-redhat-linux-gnu/gtk.immodules: そのようなファイルやディレクトリはありません エラー: %postun(scim-bridge-gtk-0.4.5-7.el5.i386) スクリプトの実行に失敗しました。終了ステータス 1 xargs: rpm: ステータス255で終了; 中断
RPM の削除でエラーが発生したようですが、scim-bridge-gtk-0.4.5-7.el5.i386 と librsvg2-2.16.1-1.el5.i386 だけが残って、他のパッケージは削除されていました。これらのパッケージを個別に削除しようとしても、やはりエラーとなります。
どうやら、RPM パッケージの削除の際に使われたり参照するファイルが別のパッケージに含まれていて、それらがすでに削除されてしまったために発生しているようです。SPEC ファイルへの依存関係の記述漏れか、RPM コマンドの不具合、もしくは RPM データベースの不整合が発生していたなどの理由も考えられます。
このままでは気持ち悪いので、依存関係のありそうな gdk-pixbuf と gtk2 の i386 版を yum でインストールして、それから削除を試みました。
# yum install gtk2.i386 gdk-pixbuf.i386
これにより、依存関係のある glibc や zlib などの i386 (i686) 版など 30 パッケージほどが再びインストールされてしました。これらは後で消すことにして、この状態でアンインストールしてみます。
# rpm -e librsvg2-2.16.1-1.el5.i386 # rpm -e scim-bridge-gtk-0.4.5-7.el5.i386
エラーは出ずにパッケージが削除できました。そして一時的にインストールした glibc や zlib などを、最初のコマンドを使ってアンインストールしました。
# rpm -qa --qf "%{NAME}-%{VERSION}-%{RELEASE}.%{ARCH}\n" \ | grep i[36]86 | xargs rpm -e
他のパッケージでも似たようなトラブルが発生するケースもあると思いますが、無理矢理ファイルを消すのではなく、このように一度パッケージ群を入れ直して消した方がきれいに問題なく消せると思います。
コメントはまだありません
No comments yet.
Sorry, the comment form is closed at this time.