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 固有のスクリプトのようなので、それを実行しないということは、パッケージによってはともすると、アンインストールが半端になって問題が発生する可能性もあるかもしれません。