RPM データベース(DB)の整理(クリンーナップ)を行いたい

LINEで送る
Pocket

前回記事 壊れたRPMのデータベース(DB)を修復

CentOS6 を CentOS7 に強制アップデートしたり、 パッケージのインストール、アンインストール時にrpm オプションの–nodeps(依存関係を無視) オプションを多用していると RPM のデータベースがおかしくなる事があります。

# rpm -q vsftpd
vsftpd-3.0.2-21.el7.x86_64
vsftpd-3.0.2-22.el7.x86_64

こんな時に、有効なのが package-cleanup コマンドです。package-cleanup を –dupes オプションを使用し実行すると、ダブってインストールされているパッケージを表示してくれます。

# package-cleanup --dupes
読み込んだプラグイン:fastestmirror
vsftpd-3.0.2-21.el7.x86_64
vsftpd-3.0.2-22.el7.x86_64
# rpm -q vsftpd
vsftpd-3.0.2-21.el7.x86_64
vsftpd-3.0.2-22.el7.x86_64

package-cleanup –cleandupes で古いパッケージを自動削除してくれますが、まれにアンインストール出来ない場合があります。

# package-cleanup --cleandupes
Setting up yum
Loaded plugins: refresh-packagekit
I will remove the following old duplicate packages:
vsftpd-3.0.2-21.el7.x86_64
Is this ok [y/N]: y
/var/tmp/rpm-tmp.M40TcK: line 5: abc: コマンドが見つかりません
error: %preun(vsftpd-3.0.2-21.el7.x86_64) scriptlet failed, exit status 127     <- アンインストールスクリプトのエラー

ログを見ると、パッケージアンインストール時に実行されるスクリプト(%preun pre uninstall )が異常終了しアンインストールが失敗しています。そんなときは、rpm の –noscripts を使用し、アンインストール時に実行されるスクリプトを抑制し、アンインストールを行う事が出来ます。

# rpm -e vsftpd-3.0.2-21.el7.x86_64 --noscripts
# rpm -q vsftpd
vsftpd-3.0.2-22.el7.x86_64

次に RPM データベースの依存関係をわざと壊してみましょう。まず bind-libs のアンインストールを試みます。しかし依存関係の問題でアンインストールが出来ませんが、–nodeps を使用し、強制的にアンインストールを行います。その後、RPM データベースの問題箇所を自動検出してくれる –problems オプションを使用し package-cleanup を実行すると、rpm -e bind-libs で表示された問題が package-cleanup –problems でも表示される事が分かります。

# rpm -e bind-libs
エラー: 依存性の欠如:
	bind-libs = 32:9.9.4-51.el7_4.1 は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
	libbind9.so.90()(64bit) は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
	libdns.so.100()(64bit) は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
	libisc.so.95()(64bit) は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
	libisccc.so.90()(64bit) は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
	libisccfg.so.90()(64bit) は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
	liblwres.so.90()(64bit) は (インストール済み)bind-32:9.9.4-51.el7_4.1.x86_64 に必要とされています
# rpm -e bind-libs --nodeps
# package-cleanup --problems
読み込んだプラグイン:fastestmirror
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  bind-libs = ('32', '9.9.4', '51.el7_4.1')
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  libbind9.so.90()(64bit)
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  libdns.so.100()(64bit)
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  libisc.so.95()(64bit)
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  libisccc.so.90()(64bit)
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  libisccfg.so.90()(64bit)
Package 32:bind-9.9.4-51.el7_4.1.x86_64 は次の要求が不足ています:  liblwres.so.90()(64bit)
LINEで送る
Pocket

  • このエントリーをはてなブックマークに追加

アマゾン

LINEで送る
Pocket

記事が面白かった。為になったと思ったら。下記リンクより商品を購入頂くと筆者は喜び記事を更新致します。


LINEで送る
Pocket

コメントを残す

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください