yum でインストールしたパッケージの削除に失敗する
SOFTWARE REPORT
CentOS 5.7 の yum でインストールしたパッケージを削除できない
CentOS 5.7 のパッケージ管理システム yum を使ってインストールしたパッケージを yum update でアップデートしようとしたところ、次のようなエラーとなってしまうことがありました。
/var/tmp/rpm-tmp.79498: line 4: syntax error near unexpected token `fi'
/var/tmp/rpm-tmp.79498: line 4: `fi'
エラー: %preun(xl2tpd-1.2.7-1.el5.x86_64) スクリプトの実行に失敗しました。終了ステータス 2
このとき、パッケージの様子を見てみると、以前のバージョンと新しいバージョンの両方が混在しているような感じでした。
試しにいったん "yum remove" で消そうとしてみると、次のように 2 つリストアップされてきてしまいます。
================================================================================
Package Arch Version Repository Size
================================================================================
Removing:
xl2tpd x86_64 1.2.7-1.el5 installed 320 k
xl2tpd x86_64 1.3.1-1.el5 installed 333 k
Transaction Summary
================================================================================
そのまま削除を行ってみると、新しいバージョンの方だけ削除されて、古いほうは冒頭に記したものと同じエラーになってしまいます。
とりあえず、古いパッケージを何とか削除できないものかと調べてみたところ、どうやら次の方法で削除することが出来るようでした。
rpm -e xl2tpd --noscripts
今回は "xl2tpd" というパッケージが削除できなくなっているので、それを指定してみています。
このようにすることで、冒頭のエラーは表示されずに、yum の一覧からも削除することが出来ました。このパッケージが持っているバイナリープログラムも、システム上からちゃんと取り除かれている様子です。
ちなみにこの "--noscripts" オプションは "パッケージスクリプトレットを実行しない" という意味になるようです。
スクリプトレットというのは、インストールやアンインストールの開始や終了にあわせて実行される、それぞれの rpm 固有のスクリプトのようなので、それを実行しないということは、パッケージによってはともすると、アンインストールが半端になって問題が発生する可能性もあるかもしれません。