|
|
|
|
このサイトは、もともと作者の自分用メモとして書き始めたものです。書いてあることが全て正しいとは限りません。他の文献、オフィシャルなサイトも確認して、自己責任にて利用してください。 |
|
RPM
パッケージマネージャ rpm と、RPMパッケージ作成ユーティリティ rpmbuild の使い方。
Table of Contents
rpmコマンド
問い合わせ系
未インストールの RPMファイル自体を対象にする場合には、以下の -q を -qp に変えてコマンドする。
- rpm -q PACKAGE
- パッケージ名 (バージョンなどを含む) を表示。
- rpm -q --qf '%{NAME}\n' PACKAGE
- 出力フォーマットをマクロタグで指定したかたち。この例はバージョンなしのパッケージ名だけを表示する。他にも %{VERSION}, %{RELEASE}, %{ARCH} などたくさんのタグがある。通用するマクロタグのリストを知りたい時には `rpm --querytags` で調べられる。
- rpm -qa | grep STRING
- 正確なパッケージ名が分からない時は -qa (すべてのパッケージ) を指定して grep で出力をフィルタリングするのが常套手段。
- rpm -qi PACKAGE
- そのパッケージの詳細な情報を表示。
- rpm -ql PACKAGE
- そのパッケージによってインストールされるファイルやディレクトリ全てを表示。
- rpm -qd PACKAGE
- そのパッケージによってインストールされるドキュメントをリストアップ。
- rpm -qc PACKAGE
- そのパッケージによってインストールされる設定ファイルをリストアップ。
- rpm -q --whatprovides /FILE_OR_DIR
- ファイルまたはディレクトリ /FILE_OR_DIR が何というパッケージによってインストールされるか調べる。/FILE_OR_DIR はフルパスでなければならない。
- rpm -q --provides PACKAGE
- そのパッケージの提供するファイルや機能を表示する。
- rpm -q --requires PACKAGE
- そのパッケージのインストールや動作に必要な、依存パッケージや依存ファイルを調べる。
- rpm -q --whatrequires /FILE_OR_DIR
- /FILE_OR_DIR に依存するパッケージを調べる。/FILE_OR_DIR はフルパスで。
インストール系
基本的に、インストールは -i, 入れ替え(アップデート) は -U。 -h を追加すると進行を示す ### メータを表示、-v は冗長表示。
- rpm -ivh /PACKAGE_FILE
- インストール。
- rpm -Uvh /PACKAGE_FILE
- 既にインストールされているものをアップデート。インストールされていない場合は -ivh と同じ効果となる。
- rpm -ivh --test /PACKAGE_FILE
- 実際にインストールは行わず、試すだけ。依存関係などの衝突を事前に調べておきたい時使用。
- rpm -Uvh --oldpackage /PACKAGE_FILE
- 古いバージョンへ戻したい時。つまり「ダウンデート」。
- rpm -ivh --replacepkgs /PACKAGE_FILE
- 同一バージョンの再インストール。既にそのパッケージがインストールされていてもインストールを行う。
- rpm -ivh --replacefiles /PACKAGE_FILE
- 既に他のパッケージによってインストールされているファイルがあっても強制的にインストールする。
- rpm -ivh --nosignature /PACKAGE_FILE
- インストールに先立つシグネチャの検査を行わない。
アンインストール系
- rpm -ev PACKAGE
- アンインストール。
- rpm -ev --nodeps PACKAGE
- そのパッケージに依存する他のパッケージがあっても強制的にそのパッケージだけアンインストール
- rpm -ev --nopostun PACKAGE
- アンインストール後の %{postun} マクロを実行しない。パッケージで定義されている %{postun} マクロには、インストール時に作成したユーザの削除や、スタートアップ外し (chkconfig SERVICE off) などが含まれていることが多い。
RPMビルド
パッケージを作成したり再構成するためのコマンド rpmbuild の使い方。古くは `rpm --build' だったが、現在では rpmbuild という専用コマンドを使用すべきである。
一般ユーザでのビルド
root権限でビルドを行うと、SPECファイルの間違いなどによって、重要なシステムディレクトリを根こそぎ削除することも簡単に起こりうる。 RHEL や Fedora Core で標準で用意されているビルドツリーは /usr/src/redhat/ だが、そこは root の所有になっていて一般ユーザは書き込みができない。正しくは、ビルドを行いたいユーザのホームディレクトリ下に別途ビルドツリーを用意し、そのユーザの権限でビルドするべきだ。標準ビルドツリーはユーザでも読み込みはできるので、以下のようにしてユーザのホームディレクトリ下へコピーすればよい。
hoge$ cp -dR /usr/src/redhat ~hoge/
もう少し凝るなら、fedora-rpmdevtools というツールもある。これは、ビルドツリー構造を作成する fedora-buildrpmtree コマンド、SPECファイルのひな形を作る fedora-newrpmspec コマンドなどから成る便利なツール集だ。下記URLから入手できる;
http://rpmfind.net/linux/rpm2html/search.php?query=fedora-rpmdevtools
さて、ビルドツリーはできたが、作っただけでは rpmbuild コマンドがそこを利用してくれない。そこで必要なのが、 ~/.rpmmacros ファイル。このマクロファイルは rpm および rpmbuild コマンドに対する基本的な環境マクロを定義する。最低限必要な項目を記述したサンプルファイルがこれ;
dot.rpmmacros
%_tmpdir と %_tmppath は、指定するとビルドできない SPECファイルも存在するためコメントアウトしてある。
rpmbuildの主なコマンド
- rpmbuild -bb /SPEC_FILE
- バイナリパッケージをビルドする。通常はこれを使う。
- rpmbuild -bs /SPEC_FILE
- ソースパッケージをビルドする。
- rpmbuild -ba /SPEC_FILE
- バイナリパッケージとソースパッケージの両方をビルド。
- rpmbuild -tb /TAR_BALL
- SPECファイルを内蔵している tar(.gz) アーカイブからバイナリパッケージをビルド (-ts, -ta もあり上記同様)。
- rpmbuild --clean /SPEC_FILE
- ビルド時に BUILD/ 下に展開されたファイルを、削除する。 -b* と同時に指定することも可能。
- rpmbuild --rmsource /SPEC_FILE
- SOURCE/ 下のファイルを削除する。 -b* と同時に指定することも可能。
- rpmbuild --rebuild /SRPM_FILE
- ソースRPM SRPM_FILE をビルドディレクトリへ展開し、バイナリパッケージをビルドし、ビルドできたらビルドディレクトリ下のソースを掃除する。オプション `-bb --clean --rmsource --rmspec' がこの一言で済むわけだ。引数が SPECファイルでなく SRPM である点に注意。
- rpmbuild --showrc
- ビルド時に使用されるであろうマクロ定義を列挙する。prefix や manpath などがどこになっているのか確認する際に便利。
-