エンタープライズ:特集 | 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つのオプションを使うよりもパッケージデータベース情報の整合性をチェックし、メンテナンスをした方がよい。このデータはインストール/アンインストールを繰り返すと壊れる可能性が高いからだ。
[渡辺裕一,ITmedia]