エンタープライズ:特集 | 2003/09/05 21:00:00 更新 |
特集:第1回 RPM活用でLinuxサーバ運用の手間を軽減 (5/5)
パッケージ管理には専用のデータベースが用意されている
インストールしたパッケージの情報は、Red Hat Linuxの場合/var/lib/rpm/ディレクトリ下に保存されている。
# cd /var/lib/rpm/# ls Basenames Group Providename Requireversion __db.001 Conflictname Installtid Provideversion Sha1header __db.002 Dirnames Name Pubkeys Sigmd5 __db.003 Filemd5s Packages Requirename Triggername |
上記リスト中の「__db.001」ファイルなどが、RPMの主な情報データベースになる。データベースが壊れていると思われた場合、これらのファイルを削除して次の方法で新しく作り直すことができる。
# rm -rf /var/lib/rpm/__db.* # rpm -vv --rebuilddb |
ここで挙げた「-vv」は、デバッグ情報を表示する共通オプションであり、画面上にパッケージのさまざまな情報が表示出力される。データベースを再構築するオプションは「--rebuilddb」であり、本来はこのオプションで実行するだけでもよい。ただし、Red Hat Linux 9では、このオプションだけを使うと次のようなエラー表示となってしまう。
# rpm --rebuilddb エラー: db4 error(16) from dbenv->remove: デバイスもしくはリソースがビジー状態です |
このメッセージについては、www.rpm.orgサイトでも「見苦しいメッセージ」だと確認されているものだ。しかし実害はなく、無視しても構わない。データベースファイルそのものは更新されている(ファイルのタイムスタンプを確認してみよう)。なお、データベースファイルはコピー保存後にファイルを削除し、データベースファイルを作成するのが公式な手順となっている(http://www.rpm.org/hintskinks/repairdb-2003-06/)。
rpmの基本的な操作方法〜パッケージ管理
RPMパッケージの基本情報は「-q」というクエリーオプションで調べることができる。続けて以下のようなオプションがよく用いられる。
|
例えばSambaのパッケージがインストールされているかを調べるのであれば、次のように入力するだけでもよい。
# rpm -q samba samba-2.2.7a-8.9.0 |
ここではバージョン2.2.7aのパッケージがインストールされていることが分かった。しかし、パッケージ名が正確に分からない場合もある。前述したalsa(サウンド関連のドライバ)をインストールしたが、単に「alsa」と入力して検索しても見つからない。
# rpm -q alsa パッケージ alsa はインストールされていません |
このような場合には、いちど「-a」オプションを含めてすべてのパッケージを表示させ、grepで絞り込んでいくのがよい。「-a」オプションに続く文字列(引数)は必要ないが、大量のパッケージ名が一気にスクロールしてしまい確認しきれないだろう。
# rpm -qa |grep alsa alsa-lib-0.9.6-1.fr alsa-driver-0.9.6-1.fr alsa-lib-devel-0.9.6-1.fr |
これで先の3つのパッケージがインストールされていることが、バージョン名と共に分かる。
「-d」と「-c」のオプションは、そのパッケージをよく知るために便利だ。大抵のコマンドは、manコマンドのオンラインマニュアルを読めば概略と機能、利用可能なオプションが書かれている。しかし、manよりも詳細な情報がドキュメントとして用意されている場合もある。通常は/usr/share/doc/ディレクトリ下にあるが、「-d」オプションで正確な配置ディレクトリが調べられる。コマンドの入力時にはどちらも「-q」に続けてハイフン無しで指定可能だ。例えば、Postfix(メール配送エージェント)パッケージのドキュメントを調べたいのであれば、次のように入力する。
# rpm -qd postfix |more /usr/share/doc/postfix-1.1.12/0README /usr/share/doc/postfix-1.1.12/ACKNOWLEDGEMENTS.TLS /usr/share/doc/postfix-1.1.12/CHANGES.TLS /usr/share/doc/postfix-1.1.12/COMPATIBILITY /usr/share/doc/postfix-1.1.12/HISTORY /usr/share/doc/postfix-1.1.12/INSTALL /usr/share/doc/postfix-1.1.12/LICENSE /usr/share/doc/postfix-1.1.12/PORTING /usr/share/doc/postfix-1.1.12/README-Postifx-SASL-RedHat.txt /usr/share/doc/postfix-1.1.12/README.TLS /usr/share/doc/postfix-1.1.12/README_FILES/DB_README 〜以下略〜 |
これらのドキュメントにはプログラムを設定するためのconfファイルなどの情報も含まれる。しかし、その所在はプログラムごとに決まっており、実際の配置ディレクトリはディストリビューションごとにも異なっている場合がある。例えば、/etc/ディレクトリ下に直接置くものもあれば、/usr/local/etc/下、独自のディレクトリを作成していることもある。そのような際には「-c」オプションを使えば明らかだ。
# rpm -qc postfix /etc/postfix/access /etc/postfix/aliases /etc/postfix/aliases.db /etc/postfix/canonical /etc/postfix/main.cf /etc/postfix/master.cf /etc/postfix/pcre_table /etc/postfix/post-install /etc/postfix/postfix-script /etc/postfix/regexp_table /etc/postfix/relocated /etc/postfix/transport /etc/postfix/virtual /etc/rc.d/init.d/postfix |
上記のように、ここではPostfixパッケージ内に含まれる主要な設定ファイルが/etc/postfix/ディレクトリ下にすべてあり、起動時の設定は/etc/rc.d/init.d/下であることが分かる。
Linuxの場合、FHS規格による推進こそあるものの(参考特集)、実際のところはまだまだ設定ファイルの配置に統一性がないのが実情だ。複数のディストリビューションを利用しているユーザーにとっては、「-qc」オプションで調べるのがよいだろう。特にサーバ系プログラムでは、オリジナルのドキュメントに記載されているディレクトリに配置されていない場合が多い。
RPMのバイナリパッケージとメンテナンスは以上のポイントを押さえておけばよいだろう。次回は、src.rpmからバイナリパッケージを作る方法や、カスタムパッケージの作り方について解説していく。
関連記事Linux Tips|RPMカテゴリー
関連リンク
Linux チャンネル
[渡辺裕一,ITmedia]