rpmが削除できない@CentOS 5.2

rpm -e でパッケージ削除中に誤ってCtrl-Cを押してしまい、中途半端に削除が中断してしまい、完全にパッケージを削除できなくなってしまいました。

# rpm -e postgresql-server
サービス postgresql に関する情報の読み込み中にエラーが発生しました: そのようなファイルやディレクトリはありません
エラー: %preun(postgresql-server-8.1.11-1.el5_1.1.i386) スクリプトの実行に失敗しました。終了ステータス 1

rpmのデータベースが壊れたわけではないようで、rpm –rebuildをしても直りません。仕方なく以下の方法で直しました。

完全に削除できていないので、再度同じrpmをインストールしてあげます。まずはインストールされていたパッケージを用意します。ここではOS付属のpostgresql-serverを例にあげます。

OS付属のパッケージはyumでインストールできますが、パッケージのダウンロードだけという機能はありませんので、Web上から直接ダウンロードするか、以下のようにしてダウンロードだけできるユーティリティをインストールしてダウンロードします。

# yum install yum-utils
~出力省略~
# yumdownloader postgresql-server

/var/cache/yum/base/packages にrpmファイルがダウンロードされるので、ここに移動します。

# cd /var/cache/yum/base/packages
# ls
postgresql-server-8.1.11-1.el5_1.1.i386.rpm

これを普通にインストールしようとしても、すでにインストールされているのでインストールできないので、–forceオプションをつけてインストールします。

# rpm -ivh --repackage postgresql-server-8.1.11-1.el5_1.1.i386.rpm
準備中...                ########################################### [100%]
        パッケージ postgresql-server-8.1.11-1.el5_1.1 は既にインストールされています。
# rpm -ivh --force postgresql-server-8.1.11-1.el5_1.1.i386.rpm
準備中...                ########################################### [100%]
   1:postgresql-server      ########################################### [100%]

インストール完了後、再度削除してあげると綺麗に削除されます。

# rpm -e postgresql-server

もう少し壊れにくいように作ってもらいたいですね。

タイトルとURLをコピーしました