rpm(8)

名前
rpm - Red Hat パッケージマネージャ

書式
rpm [options]

説明
rpmは強力なパッケージマネージャである。 個々のソフトウエアパッケージの作成、インストール、問い合わせ、検証、 アップグレード及びアンインストールを行うことが出来る。 パッケージはファイルのアーカイブとパッケージ情報とから構成されている。 パッケージ情報には名称、バージョン及び説明が含まれている。 以下の基本モードのうちの1つを選択しなければならい: データベースの初期化、データベース再構築、パッケージの作成、 パッケージの再コンパイル、tar ボールからのパッケージの作成、 問い合わせ、問い合わせタグの表示、インストール、最新版化、 アンインストール、検証、署名検査、再署名、 署名追加、オーナーとグループの設定、設定の表示。

データベースメンテナンス:
rpm -i [--initdb]
rpm -i [--rebuilddb]

作成:
rpm [-b|t] [package_spec]+
rpm [--rebuild] [sourcerpm]+
rpm [--tarbuild] [tarredsource]+

問い合わせ:
rpm [--query] [queryoptions]
rpm [--querytags]

インストールパッケージのメンテナンス:
rpm [--install] [installoptions] [package_file]+
rpm [--freshen|-F] [installoptions] [package_file]+
rpm [--uninstall|-e] [uninstalloptions] [package]+
rpm [--verify|-V] [verifyoptions] [package]+

署名:
rpm [--verify|-V] [verifyoptions] [package]+
rpm [--resign] [package_file]+
rpm [--addsign] [package_file]+

その他:
rpm [--showrc]
rpm [--setperms] [package]+
rpm [--setgids] [package]+

一般オプション
これらのオプションは全てのモードで共通に用いることが出来る。

-vv 詳細なデバッグ情報を沢山出力する。

--quiet
    表示量を出来るだけ少なくする - 通常はエラーメッセージのみ表示される。

--help
    使用法を通常よりも長く表示する。

--version
    使用中の rpm のバージョン番号を含む 1 行を表示する。

--rcfile <filelist>
    コロンで区切られた <filelist> の各ファイルは設定情報用に rpm に よって順に読みこまれる。 デフォルトの <filelist> は /usr/lib/rpm/rpmrc:/etc/rpmrc:~/.rpmrc である。 リストの先頭のファイルは必ず存在しなければならない、またチルダは $HOME に展開される。

--root <dir>
    全ての操作において、<dir> を最上位ディレクトリとして用いる。 <dir> 以下のデータベースを読み込む又は変更すること及び、 pre 又は post スクリプトは <dir> に chroot() してから 実行されることに注意。

--dbpath <path>
    <path>にある RPM データベースを用いる。

--justdb
    データベースのみを更新し、ファイルシステムはしない。

--ftpproxy <host>, --httpproxy <host>
    FTP もしくは HTTP プロキシホストとして <host> を使用する。 FTP/HTTP オプション を参照のこと。

--ftpport <port>, --httpport <port>
    FTP もしくは HTTP ポートとして <port> を用いる。 FTP/HTTP オプションを参照のこと。

--pipe <cmd>
    rpm の出力を <cmd> にパイプする。

インストール及びアップグレードオプション
rpm インストールコマンドの一般的な書式は以下の通りである。

     rpm -i [install-options] <package_file>+

このコマンドにより新規パッケージがインストールされる。 rpm アップグレードコマンドの一般的な書式は以下の通りである。

     rpm -U [install-options] <package_file>+

このコマンドにより、現在インストールされているパッケージは、新しい RPM 中のものにアップグレードされる。 そのパッケージの、他の全てのバージョンをシステムから削除する事以外は インストールと同じである。

     rpm [-F|--freshen] [install-options] <package_file>+

以前のバージョンがインストールされているときのみパッケージをアップグレードする。 <package_file> は ftp もしくは http スタイルの URL で指定する事もでき、 その場合はインストールに先立ってパッケージをダウンロードする。 RPM に組み込まれた ftp と http 機能に関する情報は、FTP/HTTP オプション を参照の事。

--force
    --replacepkgs と --replacefiles と --oldpackage とを指定した場合に同じ。

-h, --hash
    パッケージアーカイブを解凍する際に50個のハッシュマーク(#)を表示する。 綺麗な表示にするため、-vと一緒に指定しなさい。

--oldpackage
    新しいパッケージを古いもので置き換えることを許す。

--percent
    パッケージアーカイブからファイルを解凍する際にパーセンテージを表示する。 RPM を他のツールから簡単に起動できる様にするためのオプションである。

--replacefiles
    インストール済みの他のパッケージに含まれるファイルを置き換えてしまう場合 でも、インストールを強行する。

--replacepkgs
    インストールしようとしているパッケージのいくつかは既にインストール済み である場合でもインストールを強行する。

--allfiles
    パッケージ中の全ての(missingok)ファイルを、それが実際に存在しようとしまいと インストール又はアップグレードする。

--nodeps
    パッケージのインストール又はアップグレードの前に依存性検査を行なわない。

--noscripts
    プレインストールスクリプトもしくはポストインストールスクリプトを実行しない。

--notriggers
    このパッケージのインストールによってトリガーされるスクリプトを実行しない。

--ignoresize
    このパッケージをインストールする前にマウントされたファイルシステムに十分な ディスクスペースがあるか検査しない。

--excludepath <path>
    <path> で始まるパスを持つファイルをインストールしない。

--excludedocs
    文書ファイルの印を付けられたファイルは(manページ及び texinfo文書を含めて)いかなるものもインストールしない。

--includedocs
    文書ファイルをインストールする。これはデフォルトの動作である。

--test
    パッケージのインストールは行わず検査のみを行ない、 コンフリクトの可能性がある場合は報告する。

--ignorearch
    このオプションを指定すると、バイナリ RPM のアーキテクチャがホストのものと 一致していなくてもパッケージをインストール又はアップグレードを許可する。

--ignoreos
    このオプションを指定すると、バイナリRPMのオペレーティング・システムが ホストのものと一致していなくてもパッケージをインストール又はアップグレード を許可する。

--prefix <path>
    再配置可能なパッケージに対して、インストール・パス接頭辞を <path> に設定する。

--relocate <oldpath>=<newpath>
    再配置可能なパッケージに対して、<oldpath> から <newpath> に 再配置する。

--badreloc
    --relocate と共に用いられる、これはもしパッケージが再配置可能でなく ても強制的に再配置する。

--noorder
    インストールのために順序変えを行なわない。パッケージのリストは通常依存 性を満たすように順序変えが行なわれる。

問い合わせオプション
rpmを用いた問い合わせコマンドの一般形は以下のようになる。

     rpm -q [query-options]

パッケージ情報を表示する書式を指定することもできる。 その為には、--queryformat オプションに書式文字列を続けて指定する。 問い合わせ用の書式は標準の printf(3) 書式を改変したものである。 書式は静的文字列(改行、タブその他の特殊記号に対するCの標準的なエスケープ 文字列を含んでも良い)と printf(3) 的な書式指定子からなる。 しかし、rpm は表示されるものの型を知っているので、型指定子は 省略し、また表示されるべきヘッダータグを {} 文字で囲んだもので 置き換えなくてはならない。 タグ名のRPMTAG_部分は省略可である。 タグ名の後に :typetag を指定することによって、出力書式を変える ことも出来る。 現在は以下の種類をサポートしている: octal、 date、shescape、perms、fflags、depflags。 例えば、問い合わせを受けたパッケージの名前のみを表示するには、 書式文字列として %{NAME} とすればよい。 パッケージ名と配布(DISTRIBUTION)情報を 2 カラムで表示するには、 %-30{NAME}%{DISTRIBUTION} と指定すればよい。 --querytags 引数を付けて起動された際は、rpm の知っている 一連のタグが全て表示される。 問い合わせ用オプションは 2 種類に分類できる: パッケージ選択オプションと情報選択オプションである。 パッケージ選択オプション:

<package_name>
    既にインストール済の <package_name> というパッケージの問い合わせを行う。

-a, --all
    インストールされている全パッケージの問い合わせを行う。

--whatrequires <capability>
    正常に機能するためには <capability> を必要とする全てのパッケージ を問い合わせる。

--whatprovides <virtual>
    <virtual> の機能を提供する全てのパッケージを問い合わせる。

-f <file>, --file <file>
    <file> の持ち主であるパッケージについて問い合わせる。

-g <group>, --group <group>
    <group> のグループであるパッケージについて問い合わせる。

-p <package_file>
    (インストールされていない) <package_file> について問い合わせる。 <package_file> は ftp/http スタイルの URL で指定する事もでき、 その場合はパッケージのヘッダをダウンロードして問い合わせる。 RPM に組み込まれた ftp/http クライアントサポートに関する情報は FTP オプション を参照の事。

--specfile <specfile>
    パッケージだとして <specfile> を構文解析し問い合せる。 全ての情報(ファイルリストなど)が利用できるわけではないので、このタイプ の問い合わせは rpm が spec ファイルパーサに書きこませずに spec ファイ ルから情報を取りだすのに使用される。

--querybynumber <num>
    直接 <num> のデータベースエントリに問い合わせる; デバッグ用に有用。

--triggeredby <pkg>
    パッケージ I<pkg> によってトリガーされるパッケージについて問い合わせる。

情報選択オプション:

-i  名前、バージョン及び説明を含むパッケージ情報を表示する。 --queryformat を指定した場合はそれを用いる。

-R, --requires
    このパッケージが依存しているパッケージを表示する。

--provides
    このパッケージが提供するもの(ライブラリなど)を表示する。 パッケージの変更履歴を表示する。

-l, --list
    パッケージに含まれるファイルを表示する。

-s, --state
    パッケージに含まれるファイルの 状態 を表示する。 (-l の動作も同時に行われる。) 各ファイルの状態は 通常(normal)、インストールされていない(not installed) 又は 置き換えられている(replaced) のいずれかである。

-d, --docfiles
    文書ファイルのみを表示する(-l の働きを含む)。

-c, --configfiles
    設定ファイルのみを表示する(-l の働きを含む)。

--scripts
    インストール及びアンインストールの際に用いられるパッケージ固有の シェルスクリプトが存在するなら表示する。

--triggers, --triggerscripts
    もしパッケージ中にトリガースクリプトが含まれるなら、それを表示する。

--dump
    以下のような情報をダンプする。 path size mtime md5sum mode owner group isconfig isdoc rdev symlink。 このオプションは少なくとも -l、-c 又は -d のいずれか とともに用いなくてはならない。

--last
    インストールされた時刻が最も最新のパッケージが先頭になるように並べる。

--filesbypkg
    各パッケージ中の全ファイルを一覧表にする。

--triggerscripts
    選択されたパッケージの全てのトリガースクリプトを表示する。

検証オプション
rpm検証コマンドの一般的な形式は以下の通りである。

     rpm -V|-y|--verify [verify-options]

パッケージ検証の際は、インストールされているファイルの情報を、 オリジナルのパッケージから抽出し RPM データベースに保存されているものと 比較する。 中でも、各ファイルのサイズ、MD5和、許可属性、種類、所有者及びグループ の比較を行なう。 差異があった場合は表示される。 パッケージ指定オプションはパッケージ問い合わせのものと同じである。 パッケージ中に含まれるがインストールされていないファイル、 例えばインストール時に "--excludedocs" オプションを用いたので インストールされなかった文書ファイルは無視される。 検証モードで使用できるオプションは以下の通りである。

--nofiles
    検証中に見つからないファイルを無視する。

--nomd5
    検証中に MD5 和のエラーを無視する。

--nopgp
    検証中に PGP 署名エラーを無視する。 出力は、まず8文字の文字列、ついで設定ファイルの場合は "c"、 最後にファイル名という書式で表示される。 8つの文字それぞれは、各々のファイル属性を RPM データベース中に記録されている ものと比較した結果を表している。 "." が表示された場合はテストをパスした事をあらわす。 以下の文字が表示された場合はあるテストに失敗したことを示している。

5   MD5和

S   ファイルサイズ

L   シンボリックリンク

T   改変時間

D   デバイス

U   ユーザ

G   グループ

M   モード(許可属性とファイルの種類を含む)

署名検査
rpm 署名検査コマンドの一般形は以下の通りである。

     rpm --checksig <package_file>+

このコマンドはパッケージ <package_file> 中に組み込まれた PGP 署名を検査し、 その完全性及び作成元を確かめる。 PGP の設定情報は設定ファイルから読み込まれる。 詳細は PGP 署名に関する節を参照のこと。

アンインストールオプション
rpm アンインストールコマンドの一般形は以下の通りである。

         rpm -e <package_name>+

--allmatches
    <package_name> と符合するパッケージの全バージョンを削除する。 <package_name> が複数のパッケージと符合した場合は 通常エラーが表示される。

--noscripts
    プレ(ポスト)アンインストールスクリプトを実行しない。

--notriggers
    このパッケージの削除によってトリガーされるスクリプトを実行しない。

--nodeps
    アンインストール前の依存性の検査を行わない。

--test
    実際には何もアンインストールせず、アンインストールしているふりをする。 -vv オプションと共に使用すると有用。

作成オプション
rpm 作成コマンドの一般形は以下の通りである。

     rpm -[b|t]O [build-options] <package_spec>+

用いる引数は、spec ファイルを用いてパッケージを作成する場合には -b、 RPM が使用する spec ファイルが gzip (又は compress)された tar ファイル中 にある場合は -t である。 第一引数の後ろに、次の引数(O)として、行なうべき作成及びパッケージング の過程を表す以下のいずれかを指定する:

-bp spec ファイルの "%prep" 過程を実行する。 通常はソースの展開やパッチをあてる等を行なう。

-bl "リスト検査"を行う。 spec ファイルの "%files" セクションをマクロを展開し、各ファイルが検証する。

-bc spec ファイルの(prep 過程を行った後に) "%build" 過程を実行する。 通常は "make" に相当する作業が行われる。

-bi spec ファイルの(prep 及び build 過程を行った後に) "%install" 過程を実行する。 通常は "make install" に相当する作業が行われる。

-bb (prep、build 及び install の各過程を終えた後に)バイナリパッケージを作成する。

-bs (prep、build 及び install の各過程を終えた後に)ソースパッケージのみを 作成する。

-ba (prep、build 及び install の各過程を終えた後に)バイナリ及びソースパッケージ を作成する。

以下のオプションを指定することもできる。

--short-circuit
    指定した過程までスキップする(即ち、指定した過程に至る全ての過程を スキップする)。

--timecheck
    "timecheck" 期限を設定する(無効にするには 0 を指定する)。 その値は "_timecheck" マクロを定義することによって設定することも出来る。 timechek 値はパッケージされるファイルの最長有効期限を秒単位で表したものである。 timechek 期限を過ぎたファイルには警告が表示される。

--clean
    パッケージを作成した後に作成ツリーを削除する。

--rmsource
    build の後にソースと spec ファイルを削除する。 (単独でも使用される、例: "rpm --rmsource foo.spec")

--test
    build 過程を全く行わない。 spec ファイルをテストするのに有用。

--sign
    パッケージ中にPGP署名を埋め込む。 この署名はパッケージの完全性及び作成元を確認するために用いることが出来る。 設定の詳細については PGP 署名に関する節を参照のこと。

--buildroot <dir>
    パッケージを作成する時、BuildRoot タグのディレクトリを <dir> で上書きする。

--target <platform>
    パッケージを作成する時、<platform> を arch-vendor-os として解釈し、 マクロ _target、_target_arch、_target_os を設定する。

--buildarch <arch>
    パッケージを作成する時、アーキテクチャを <arch> に設定る。 このオプションは RPM 3.0 において --target に置き換えられ旧式のものになった。

--buildos <os>
    パッケージを作成する時、アーキテクチャを <os> に設定する。 このオプションは RPM 3.0 において --target に置き換えられ旧式のものになった。

再作成及びリコンパイルオプション
rpm を起動するにはその他に2通りの方法がある。 rpm --recompile <source_package_file>+ rpm --rebuild <source_package_file>+ この様に起動された場合、rpm は指定されたソースパッケージをインストールし、 prep、コンパイル及びインストールを実行する。 更に --rebuild を指定した場合は、新たにバイナリパッケージを作成する。 作成が完了したときは、(--clean の場合と同様)作成ディレクトリ、 及びそのパッケージのソースと spec ファイルが削除される。

既存のRPMへの署名
rpm --resign <binary_package_file>+ このオプションは、指定されたパッケージに新たに署名を作成して挿入する。 既存の署名は全て削除される。 rpm --addsign <binary_package_file>+ このオプションは指定されたパッケージに対しすでに署名されていても新しい署 名を生成して添付する。

PGP 署名
署名機能を使用するために RPM は PGP を実行できるように設定されていなけ ればならず、また RPM 公開鍵がある公開鍵束を見つけることが可能でなくて はならない。RPM は見つかった PGP 鍵束をデフォルトとして使う(honoring PGPPATH)。 もし鍵束が PGP が期待している場所に無ければ、使用する PGP 鍵束の場所を マクロ

_pgp_path

で設定する必要がある。 自分で作成したパッケージに署名出来る様にしたい場合は、自分自身の公開暗号鍵 及び秘密鍵の対を作る必要がある(PGP のマニュアルを参照)。 同様にマクロ

_signature

を設定する必要があるかもしれない。 署名の種類は、現在のところ pgp のみがサポートされている。 (訳者注: PRM-2.90 からは GnuPG も)

_pgp_name

パッケージに署名する為に用いたい鍵の持ち主の "user" 名。 パッケージ作成時は、コマンドラインオプションに --sign をつけ加える。 そうすると、パスフレーズの入力を促されパッケージが作成されて署名がなされる。 例えば、実行ファイル /usr/bn/pgp を使用し、 /etc/rpm/.pgp に存在する鍵束からユーザ "John Doe<jdoe@foo.com>" として パッケージに署名 に PGP を使用するようにするためにはマクロ設定ファイル中に %_signature pgp %_pgp_name /etc/rpm/.pgp

%_pgp_name John Doe <jdoe@foo.com>

%_pgpbin /usr/bin/pgp を含めるようにする。システム毎の設定は /etc/rpm/macros を使用し、 ユーザ毎の設定は ~/.rpmmacros を使用しなさい。

データベース再構築オプション
rpm データベースの再構築コマンドの一般形は以下の通りである。

     rpm --rebuilddb

新しいデータベースを再構築するには、以下のようにする。

     rpm --initdb

これらのモードのオプションは --dbpath と --root のみ である。

SHOWRC

     rpm --showrc

というコマンドを実行すると、rpmrc ファイル中で設定できる 全てのオプションの現在の値を表示する。

FTP/HTTP オプション
RPMには、インターネット上に置かれているパッケージのインストール又は問い合わせ が出来るように、簡単な FTP と HTTP クライアント機能が組み込まれている。 インストール、アップグレード及び問い合わせ操作を行なうパッケージを 次のような ftp もしくは http スタイルの URL で指定する事が出来る:

     ftp://<user>:<password>@hostname:<port>/path/to/package.rpm

:<password> の部分を省略した場合は(ユーザ/ホスト名の組毎に一度ずつ) パスワードの入力を促される。 ユーザ及びパスワードとも省略した場合は、匿名 ftp を用いる。 いずれの場合も受動(PASV) ftp 転送が用いられる。 ftp の URL とともに以下のようなオプションを用いる事も出来る。

--ftpproxy <hostname>
    ホスト <hostname> は全ての ftp 転送用のプロキシサーバとして使用 される。これによって、プロキシシステムを使用したファイヤーウォールマシ ンを通して ftp を行なう事が出来る。 このオプションは マクロ _ftpproxy で設定する事も出来る。

--ftpport <port>
    プロキシ ftp サーバの ftp コネクション用を使用するため TCP <port> 番号を デフォルトのポートの代りに使用する。 このオプションはマクロ _ftpport を設定することによっても指定できる。

RPM は http URL と共に以下のオプションが使用できる。

--httpproxy <hostname>
    ホスト <hostname> は全ての http 転送用のプロキシサーバとして使用される。 このオプションはマクロ _httpproxy を設定することによっても指定できる。

--httpport <port>
    プロキシ http サーバの http コネクション用を使用するため TCP <port> 番号を デフォルトのポートの代りに使用する。 このオプションはマクロ _httpport を設定することによっても指定できる。

ファイル
/usr/lib/rpm/rpmrc
/etc/rpmrc
~/.rpmrc
/usr/lib/rpm/macros
/etc/rpm/macros
~/.rpmmacros
/var/lib/rpm/conflictsindex.rpm
/var/lib/rpm/fileindex.rpm
/var/lib/rpm/groupindex.rpm
/var/lib/rpm/nameindex.rpm
/var/lib/rpm/packages.rpm
/var/lib/rpm/providesindex.rpm
/var/lib/rpm/requiredby.rpm
/var/lib/rpm/triggerindex.rpm
/tmp/rpm*

関連項目
glint(8), rpm2cpio(8), http://www.rpm.org/

著者
Marc Ewing <marc@redhat.com>
Jeff Johnson <jbj@redhat.com>
Erik Troan <ewt@redhat.com>

翻訳者
神田  充 <kanda@nn.iij4u.or.jp>