エンタープライズ:特集 2003/09/05 21:00:00 更新


特集:第1回 RPM活用でLinuxサーバ運用の手間を軽減 (4/5)

rpmの基本的な操作方法〜アンインストール

 アンインストールの方法は基本的にインストール時と同じで、指定するオプションを「-e」に変えるだけだ。

# rpm -e balsa ←balsaをアンインストール
# rpm -q balsa ←インストール状態のチェック

 「-evv」として実行すると、より詳細なデバッグメッセージを表示することもできる。

RPM最大の難関は依存関係の解決

 RPMでパッケージがインストール、アンインストールできない最も多い理由は依存関係だ。開発系のライブラリ類に多くみられるが、小さなプログラムでも発生することがある。このとき、次のようなエラーが表示される。

# rpm -ivh alsa-lib-devel-0.9.6-1.fr.i386.rpm
エラー: Failed dependencies:
alsa-driver >= 0.9.6 is needed by alsa-lib-devel-0.9.6-1.fr
alsa-lib = 0.9.6 is needed by alsa-lib-devel-0.9.6-1.fr

 この表示内容は「alsa-lib-devel」パッケージをインストールしようとしているものの、バージョン0.9.6の「alsa-lib」とバージョン0.9.6以降の「alsa-driver」パッケージが必要だというエラーが返されている。単に条件を満たしたパッケージを順にインストール・アップグレードすれば依存関係が解決する。

 アンインストールをする時にも、他のパッケージに必要とされエラーとなる場合がある。

# rpm -e pango

〜中略〜

libpangox-1.0.so.0 is needed by (installed) balsa-2.0.6-1
libpangoxft-1.0.so.0 is needed by (installed) gtk2-2.2.1-4
libpangoxft-1.0.so.0 is needed by (installed) GConf2-2.2.0-1
libpangoxft-1.0.so.0 is needed by (installed) libglade2-2.0.1-3
libpangoxft-1.0.so.0 is needed by (installed) libgnomecanvas-2.2.0.1-1
libpangoxft-1.0.so.0 is needed by (installed) gail-1.2.0-1
libpangoxft-1.0.so.0 is needed by (installed) gtkhtml2-2.2.0-5

〜以下略〜

 これも依存関係にあるパッケージから順にアンインストールしてやれば解決する。

 ところが、インストールしてあるはずのパッケージが「インストールされていない」というエラーを返したり、他の依存関係とエラーがループしてインストールできないことがまれにある。この解決策は2つある。ひとつはパッケージを同時に複数インストールすることだ。

# rpm -ivh alsa-lib-devel-0.9.6-1.fr.i386.rpm alsa-lib-0.9.6-1.fr.i386.rpm alsa-driver-0.9.6-1.fr.i386.rpm
Preparing... ########################################### [100%]
1:alsa-driver ########################################### [ 33%]
2:alsa-lib  ########################################### [ 67%]
3:alsa-lib-devel ########################################### [100%]

 このようにrpmコマンドに続けて必要な3パッケージを同時に指定する。すると依存される順番にパッケージがインストールされるのだ。解決に必要なパッケージが数多くある場合には、それらをひとつのディレクトリにまとめてコピーしてワイルドカードを使ってインストールしてもよい。

# rpm -ivh *.rpm

 同時にインストールする方法で解決しないなら、前記の「--force」と「--nodeps」オプションを使うことだ。「--force」は古いバージョンの上書きインストール、既にインストールされているパッケージの強制上書きインストール、他のパッケージによってインストールされたファイルの置き換えと、3つの管理規制を解除する(この3つはそれぞれ単独で許可するオプションもある)。「--nodeps」は依存関係で問題があっても無視する。

 パッケージはインストールしたはずなのにエラーを返すなら「--force」を使い、依存関係だけなら「--nodeps」を使う。場合によっては次のように併用する。

# rpm -ivh --force --nodepth [パッケージ名]

 ただし、どちらもパッケージデータベースの情報、システム内のファイル関連性を破壊する可能性がある。「問題が起きない」と確信できる場合のみに使いたい方法だ。

 逆にいえば、インストールしたものがインストールされていないと表示されたり、依存関係のループが頻発するのであれば、この2つのオプションを使うよりもパッケージデータベース情報の整合性をチェックし、メンテナンスをした方がよい。このデータはインストール/アンインストールを繰り返すと壊れる可能性が高いからだ。

前のページ | 1 2 3 4 5 | 次のページ

[渡辺裕一,ITmedia]