Scroll to navigation

RPM(8) RPM(8)

名前

rpm - RPM パッケージマネージャ

書式

パッケージの検索と検査:

rpm {-q|--query} [select-options] [query-options]

rpm {-V|--verify} [select-options] [verify-options]

rpm --import PUBKEY ...

rpm {-K|--checksig} [--nogpg] [--nopgp] [--nomd5]

* PACKAGE_FILE ...*

パッケージのインストール・アップグレード・削除:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

[--notriggers] [--test] PACKAGE_NAME ...

その他:

rpm {--initdb|--rebuilddb}

rpm {--addsign|--resign} PACKAGE_FILE ...

rpm {--querytags|--showrc}

rpm {--setperms|--setugids} PACKAGE_NAME ...

select-options(選択オプション)

[PACKAGE_NAME] [-a,--all] [-f,--file FILE]

[-g,--group GROUP] [-p,--package PACKAGE_FILE]

[--hdrid SHA1] [--pkgid MD5] [--tid TID]

[--querybynumber HDRNUM] [--triggerdby PACKAGE_NAME]

[--whatprovies CAPABILITY] [--whatrequires CAPABILITY]

query-options(検索オプション)

[--changelog] [-c,--configfiles] [-d,--docfiles] [--dump]

[--filesbypkg] [-i,--info] [--last] [-l,--list]

[--provides] [--qf,--queryformat QUERYFMT] [-R,--requires]

[--scripts] [-s,--state] [--triggers,--triggerscripts]

verify-options(検査オプション)

[--nodeps] [--nofiles] [--noscripts] [--nodigest]

[--nosignature] [--nolinkto] [--nomd5] [--nosize]

[--nouser] [--nogroup] [--nomtime] [--nomode] [--nordev]

install-options(インストールオプション)

[--aid] [--allfiles] [--badreloc] [--excludepath OLDPATH]

[--excludedocs] [--force] [-h,--hash] [--ignoresize]

[--ignorearch] [--ignoreos] [--includedocs] [--justdb]

[--nodeps] [--nodigest] [--nosignature] [--nosuggest]

[--noorder] [--noscripts] [--notriggers]

[--oldpackage] [--percent] [--prefix NEWPATH]

[--relocate OLDPATH=NEWPATH]

[--replacefiles] [--replacepkgs] [--test]

説明

rpm は強力な パッケージマネージャ であり、個々のソフトウェアパッケージを ビルド・インストール・検索・検査・更新・削除するのに使うことができる。 パッケージ はファイルのアーカイブと、アーカイブされたファイルの インストール・アンインストールに使われるメタデータからなる。 メタデータは補助スクリプト、ファイル属性、 そしてパッケージの説明に関する情報からなる。 パッケージ には 2 種類ある。 インストールするためのソフトウェアをカプセル化するのに使われるバイナリ パッケージと、バイナリパッケージを生成するのに必要なレシピとソースコード からなるソースパッケージである。

以下の基本モードのいずれかが選択されなければならない: 検索検査署名の検査インストール/アップグレード/更新アンインストールデータベースの初期化データベースの再作成再署名署名の追加所有者/グループの設定検索タグの表示設定の表示

共通のオプション

次のオプションはすべてのモードで使用することができる。

-?, --help
使い方を通常のものよりも長く表示する。
使用される rpm のバージョン番号からなる 1 行を表示する。
できるだけ少なく表示する。 通常は、エラーメッセージだけが表示される。
より多くの情報を表示する。 通常は、ルーチンの進捗メッセージが表示される。
沢山の汚いデバッグ情報を表示する。
コロン(`:')で区切られた FILELIST の各ファイルは、設定情報として rpm によって順番に読み込まれる。 FILELIST のデフォルトは /usr/lib/rpm/rpmrc:/usr/lib/rpm/<vendor>/rpmrc:~/.rpmrc である。
rpm コマンドの出力を CMD へパイプする。
データベースのパスに、デフォルトの /var/lib/rpm ではなく DIRECTORY を使う。
すべてのオプションに対し、 DIRECTORY をルートとしたファイルシステムを使う。 これは、 依存性のチェックとすべてのスクリプト(群) (例えば、パッケージインストール時の %post や、パッケージビルド時の %prep など)が DIRECTORYchroot(2) した後で、 DIRECTORY 内にあるデータベースが使用されることを意味する。

インストールとアップグレードのオプション

rpm をインストールするコマンドの一般的な形式は:

rpm {-i|--install} [install-options] PACKAGE_FILE ...

これは新しいパッケージをインストールする。

アップグレードするコマンドの一般的な形式は:

rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...

これは現在インストールされているパッケージを新しいバージョンに アップグレードするか、パッケージをインストールする。 新しいパッケージがインストールされたら他のすべてのバージョンのものが 削除されることを除けば、インストールと同じである。

rpm {-F|--freshen} [install-options] PACKAGE_FILE ...

これは以前のバージョンが、現在インストールされている場合にのみ パッケージを更新する。

PACKAGE_FILE には ftp または http の URL を指定することが可能で、その場合にはパッケージをインストールする前に ダウンロードする。 rpm 内部での ftphttp のサポートについての情報は FTP/HTTP オプション の節を参照のこと。

指定されたパッケージを、必要があればトランザンクションに加える。
パッケージ内の missingok ファイルを、存在する/しないにかかわらず インストールまたはアップグレードする。
--relocate と一緒に使われると、パッケージ再配置のヒント(群)の中にその OLDPATH が含まれていなくても、すべてのファイルパスの再配置を許可する。
パスの名前が OLDPATH で始まるファイルをインストールしない。
(man ページ、tenxinfo 文書を含めた)文書であるとマーク付されたファイルを インストールしない。
--replacepkgs, --replacefiles, --oldpackage の組み合わせに同じ。
パッケージアーカイブから取り出されるにつれ、50個のハッシュマーク("#") を表示する。 -v|--verbose と一緒に使えば、よりよい表示が得られる。
パッケージをインストールする前に、ディスクに十分な空きがあるかの チェックをファイルシステムに対して行わない。
バイナリパッケージのアーキテクチャと、そのホストのアーキテクチャが 一致しなくても、インストールやアップグレードを行う。
バイナリパッケージのOSと、そのホストのOSが一致しなくても、 インストールやアップグレードを行う。
文書ファイルをインストールする。これはデフォルトの動作である。
データベースだけを更新し、ファイルシステムを更新しない。
読み込み時にパッケージまたはへッダのダイジェストを検査しない。
読み込み時にパッケージまたはへッダの署名を検査しない。
パッケージのインストールやアップグレードの前に、依存性のチェックをしない。
不明な依存性を解消するパッケージ(群)を提案しない。
パッケージのインストール順を変更しない。 通常は依存性を満たすために、パッケージのリストは並び替えられる。

それぞれ同じ名前を持ったスクリプトを実行しない。 --noscripts オプションは

--nopre --nopost --nopreun --nopostun

に等しく、対応する %pre, %post, %preun, %postun スクリプト(群)を実行しない。

指定された種類のトリガースクリプトを実行しない。 --notriggers オプションは

--notriggerin --notriggerun --notriggerpostun

に等しく、対応する %triggerin, %triggerun, %triggerpostun スクリプト(群)を実行しない。

新しいパッケージをそれより古いパッケージでアップグレードできるようにする。
パッケージアーカイブからファイルが取り出されるにつれて、 その割合をを表示する。 これは rpm が他のツールから実行されるのを容易にすることを意図している。
再配置可能なバイナリパッケージにおいて、パッケージの再配置ヒント(群)にある インストールプレフィックスで始まるファイルのパスを、 NEWPATH に置き換える。
再配置可能なバイナリパッケージにおいて、パッケージの再配置ヒント(群)にある OLDPATH で始まるファイルのパスと NEWPATH で置き換える。 パッケージ内で、複数の OLDPATH が再配置されなければならないのなら、 このオプションを繰り返し指定することができる。
既にインストールされた他のパッケージのファイルを置き換えてしまう場合でも、 パッケージをインストールする。
指定されたパッケージのうちのいくつかがシステムに既にインストール されていても、パッケージをインストールする。
パッケージをインストールせず、単にチェックと、 潜在的な衝突の報告を行う。

削除のオプション

rpm を削除するコマンドの一般的な形式は:

rpm {-e|--erase} [--allmatches] [--nodeps] [--noscripts]

[--notriggers] [--test] PACKAGE_NAME ...

以下のオプションが使用できる:

PACKAGE_NAME に一致するすべてのバージョンのパッケージを削除する。
パッケージをアンインストールする前に依存性のチェックをしない。

それぞれ同じ名前を持ったスクリプトを実行しない。 --noscripts オプションは

--nopreun --nopostun

に等しく、対応する %preun%postun スクリプト(群)を実行しない。

指定された種類のトリガースクリプトを実行しない。 オプション --notriggers

--notriggerun --notriggerpostun

に等しく、対応する %triggerun%triggerpostun スクリプト(群)を実行しない。

実際には何もアンインストールせず挙動だけを見せる。 オプション -vv と共に使えばデバッグに有効である。

検索オプション

rpm 検索の一般的な形式は:

rpm {-q|--query} [select-options] [query-options]

表示されるパッケージ情報の書式を指定することができる。 そうするためには、

--qf|--queryformat QUERYFMT

オプションを使う。 QUERYFMT が書式文字列である。検索の書式は、標準的な printf(3) の書式の修正である。書式は静的な文字列 (改行・タブ・その他の特殊文字の、C 言語の標準的な文字エスケープを含む)と、 printf(3) 型の書式文字列からなる。 しかし rpm は表示する型を既に知っているので、型指定は省略されるべきである。 代わりに {} で囲まれた、表示されるへッダーのタグ名が使用される。 タグ名に大文字/小文字の区別はなく、タグ名の先頭の RPMTAG_ 部分も省略することができる。

以下の :typetag を付加したタグによって、代替の出力書式を要求できる。 現在、以下の種別がサポートされている:

:armor
公開鍵をASCII文字で表示する。
:base64
バイナリデータを base64 で符号化する。
:date
strftime(3)の "%c" 書式を使う。
:day
strftime(3)の "%a %b %d %Y" 書式を使う。
:depflags
依存フラグで表示。
:fflags
ファイルフラグで表示。
:hex
16進数で表示。
:octal
8進数で表示。
:perms
ファイルの許可属性で表示。
:shescape
スクリプト内で使えるようにシングルクォート(')でエスケープする。
:triggertype
トリガーの種類を表示。

例えば、検索結果のパッケージ名だけを表示したければ、書式文字列として %{NAME} を使えばよい。 2 カラムでパッケージ名とディストリビューション情報を表示したければ %-30{NAME}%{DISTRIBUTUIN} を使えばよい。 (訳注: 端末によっては末尾に \n が必要である)。 引数 --querytags をつけて rpm を実行すれば、使用できるタグすべてを表示することができる。

検索のためのオプションは2種類に分けられる。 パッケージの選択と、(訳注: 表示するための)情報の選択である。

インストールされている PACKAGE_NAME という名前のパッケージを検索する。
インストールされているすべてのパッケージを検索する。
FILE を所有するパッケージを検索する。
グループが GROUP であるパッケージを検索する。
与えられたへッダー識別子、 すなわち書き換え不可能なへッダ領域に SHA1 ダイジェストををもつパッケージを検索する。
(インストールされていない)パッケージ PACKAGE_FILE を検索する。 PACKAGE_FILE には ftp または http の URL 形式で指定することができ、 その場合にはパッケージへッダーがダウンロードされて検索される。 ftphttp のクライアントに関する rpm 内部でのサポートについては FTP/HTTP OPTIONS を参照のこと。 PACKAGE_FILE 引数(群)がバイナリパッケージでなければ、それが ASCII 形式の パッケージのリストを表わすものと解釈される。 パッケージのリストファイルでは、'#' で始まる行はコメントである。 各行には空白で区切ったパス名展開式が指定可能で、 展開されたパスは、検索する PACKAGE_FILE 引数への追加として置換される。 パス名展開式には URL のリモートのパス名展開も使うことができる。
与えられたパッケージ識別子、 すなわちへッダーと内容物との組み合わせが MD5 ダイジェストををもつパッケージを検索する。
データベースの HDRNUM 番目のエントリを直接検索する。 デバッグにのみ有効である。
SPECFILE をそれがパッケージであるかのように解析し、検索する。 すべての情報が利用できるわけではない(たとえばファイル一覧)にもかかわらず、 spec ファイルの解析器を書くこと無しに spec ファイルから情報を取り出すことが この種の検索で可能である。
与えられたトランザクション識別子 TID を持つパッケージ(群)を検索する。 現在のところ、unix 時間がトランザクション識別子として使われている。 一つのトランザクションでインストール・削除されたパッケージ(群)は、 すべて共通の識別子を持つ。
パッケージ(群) PACKAGE_NAME によってトリガーされるパッケージを検索する。
CAPABILITY 能力を提供するパッケージを検索する。
適切に機能するために CAPABILITY を必要とするパッケージを検索する。
パッケージの更新情報を表示する。
設定ファイルのみを表示する (-l を指定したものとみなす)。
文書ファイルのみを表示する (-l を指定したものとみなす)。
以下の形式でファイル情報をダンプする (-l を指定したものとみなす)。
パス サイズ 修正時刻 md5ダイジェスト モード \
所有者 グループ 設定ファイル 文書ファイル \
ルートデバイス シンボリックリンク
    
選択されたパッケージごとにファイルを表示する。
名前、バージョン、説明を含めたパッケージ情報を表示する。 これは --queryformat を内部で使用している。
パッケージをインストール時刻順に、 最新のパッケージが先頭になるような順で並べる。
パッケージ内にあるファイルを表示する。
そのパッケージが提供する能力を表示する。
そのパッケージが依存するパッケージを表示する。
インストール・アンインストールの過程で使用される、 パッケージ固有のスクリプトを表示する。
パッケージ内のファイルの 状態 を表示する (-l を指定したものとみなす)。 各ファイルの状態は normal(正常), not installed(インストールされていない), replaced(置き換えられた) のいずれかである。
パッケージにトリガースクリプトが含まれれば表示する。

検査オプション

rpm を検査するコマンドの一般的な形式は:

rpm {-V|--verify} [select-options] [verify-options]

パッケージの検査では、 パッケージ内のインストールされたファイルに関する情報と、 rpm データベースに格納されているパッケージのメタデータから得られた ファイルに関する情報とを比較する。 とりわけ、ファイルのサイズ、MD5 チェックサム、許可属性、タイプ、 所有者、グループを比較する。 インストール時に --excludedocs オプションを使ったために除外された文書ファイルのように、 パッケージからインストールされていないファイルは静かに無視される。

パッケージ選択オプションは、パッケージ検索のためのものと (パッケージのリストファイルを引数に指定できることも含め) 一緒である。 その他の、検査モード固有のオプションは:

パッケージの依存性について検査しない。
読み込み時にパッケージやへッダーのダイジェスト値を検査しない。
パッケージ内のファイルのいかなる属性も検査しない。
%verifyscript がもし存在しても実行しない。
読み込み時にパッケージやへッダーの署名を検査しない。

それぞれ関連するファイル属性を検査しない。

出力の形式は 9 個の文字と属性マーク、その後ろにファイル名である。 パッケージのへッダーから得られる属性マークは:

%config 設定ファイル。
%doc 文書ファイル。
%ghost ファイル(すなわち、パッケージの内容物としては含まれていないファイル)。
%license ライセンスファイル。
%readme readme ファイル。

各 9 個の文字は、ファイルの属性とデータベースに記録されているその属性の 値との比較の結果を意味している。 一つの . (ピリオド) はテストを通過したこと意味し、一つの ? (クエスチョンマーク) はテストが実施されなかった (すなわち、ファイルパーミッションにより読み込めなかった) ことを意味する。でなかれば、 (記憶を助けるために、ボールド化 (emBoldened) されている)文字は関連する --verify テストに失敗したことを意味する:

ファイルのサイズ (Size) が異なる
モード (Mode; 許可属性とファイルの種類) が異なる
5
MD5 チェックサムが異なる
デバイス (Device) のメジャー/マイナー番号が一致しない
readLink(2) したパスが一致しない
所有者 (User) が異なる
グループ (Group) が異なる
修正時刻 (mTime) が異なる

電子署名とダイジェストの検査

rpm の電子書名の一般的な形式は:

rpm --import PUBKEY ...

rpm {-K|--checksig} [--nogpg] [--nopgp] [--nomd5]

* PACKAGE_FILE ...*

--checksig オプションは、 パッケージの完全性と出所を確認するために PACKAGE_FILE に含まれるすべてのダイジェスト値と署名をチェックする。 現在ではパッケージが読み込まれたときはいつでも署名が検査される。 --checksig の方はパッケージに付随するすべてのダイジェスト値と署名を 検査するのに有効である。

公開鍵がなければ電子署名の検査はできない。 --import を使えば rpm データベースに ASCII 形式での公開鍵を追加できる。 取り込まれた公開鍵はあるへッダーへと運ばれ、 パッケージ管理のように厳密な鍵リング管理が実行される。 例として、その時点で取り込まれているすべての公開鍵は以下を実行することで 表示できる。

rpm -qa gpg-pubkey*
    

(訳注: 多くの場合 "*" はシェルによってメタ文字として解釈されるので、 実際には rpm -qa "gpg-pubkey*" のようにクォーティングする必要がある)

取り込んだ、特定の公開鍵に関する詳細は検索によって表示することができる。 Red Hat の GPG/DSA 鍵に関する情報は:

rpm -qi gpg-pubkey-db42a60e

最後に、パッケージでそうできるように、取り込んだ公開鍵を削除することができる。 以下は Red Hat の GPG/DSA 鍵を削除する。

rpm -e gpg-pubkey-db42a60e

パッケージへの署名

rpm {--addsign|--resign} PACKAGE_FILE ...

オプション --addsign--resign の両方とも、与えられた各パッケージ PACKAGE_FILE に対する新たな署名を生成・挿入し、既に存在する署名があれば置き換える。 歴史的な理由により二つのオプションが存在するが、 現在ではその動作に違いはない。

パッケージへの署名に GPG を使用する

GPG を使ってパッケージに署名するためには、 rpm が GPG を実行するように設定されていなければならず、また、 適切な鍵で鍵リングを探すことができなければならない。 rpm はデフォルトで、 GPG が鍵の環を探すのと同じ規則、すなわち環境変数 $GPGPATH を使用する。 GPG が期待する場所に鍵リングが無い場合には、 使用する GPG 鍵リングの場所を %_gpg_path マクロに設定する必要がある。

過去のバージョンの GPG, PGP, rpm との互換性のために、 V3 OpenPGP 署名パケットのみが設定されなければならない。 DSA と RSA の検査アルゴリズムのどちらも使うことができるが、 DSA の方が好ましい。

作成したパッケージに自分自身で署名できるようにしたければ、 公開鍵と秘密鍵のペアを作成しておくことも必要である (GPG のマニュアルを見ること)。 また、以下の rpm マクロを設定することも必要であろう。

%_gpg_name
パッケージに署名するのに使用したい鍵のユーザ名。

例えば、実行ファイルが /usr/bin/gpg で、鍵リングが /etc/rpm/.gpg にあり、その中のユーザ "John Doe <jdoe@foo.com>" としてパッケージに GPG を使って署名する場合には

%_gpg_path /etc/rpm/.gpg
%_gpg_name John Doe <jdoe@foo.com>
%_gpgbin /usr/bin/gpg
    

をマクロの設定ファイルに含めれば良い。 システム全体の設定には /etc/rpm/macros を、ユーザごとの設定には ~/.rpmmacros を使用する。

データベース再作成オプション

データベースを再作成するコマンドの一般的な形式は:

rpm {--initdb|--rebuilddb} [-v] [--dbpath DIRECTORY]

[--root DIRECTORY]

新たなデータベースを作成する場合には --initdb を使い、インストールされているパッケージのへッダーから データベースのインデックスを再作成するには --rebuilddb を使用する。

SHOWRC

コマンド

rpm --showrc

は、 rpm が使用するすべてのオプションの値を表示する。 値はファイル rpmrcmacros で設定される。

FTP/HTTP オプション

インターネットからパッケージを検索したりインストールできるようにするために、 rpm は FTP と HTTP のクライアントとして動作することができる。 インストール、アップグレード、検索するパッケージファイルは 以下の ftp または http スタイルの URL で指定することができる。

ftp://USER:PASSWORD@HOST:PORT/path/to/package.rpm

もし :PASSWORD の部分が省略された場合には、パスワードが (ユーザ/ホスト名の組合わせごとに)尋ねられる。 ユーザとパスワードの両方が省略された場合には、 anonymous(匿名) ftp が使用される。すべての場合において パッシブ (PASV) ftp 転送が利用される。

ftp URL において、 rpm では次のオプションが可能である。

プロキシを用いたファイアウォールを通してユーザが ftp できるように、 すべての ftp 転送にホスト HOST はプロキシサーバーとして使用される。 マクロ %_ftpproxy の設定でも、このオプションを指定することができる。
デフォルトのポートの代わりに、プロキシ ftp サーバの ftp 接続に使用する TCP PORT (ポート)番号。 マクロ %_ftpport の設定でも、このオプションを指定することができる。

http URL において、 rpm では次のオプションが可能である。

すべての http 転送にホスト HOST はプロキシサーバーとして使用される。 マクロ %_httpproxy の設定でも、このオプションを指定することができる。
デフォルトのポートの代わりに、http プロキシサーバの接続で使用する TCP PORT (ポート)番号。

過去の遺産

rpmbuild の実行

rpm のビルドモードは、現在では /usr/bin/rpmbuild に含まれる。 過去との互換性は以下の popt によるエイリアスによって提供され、 それはまずまずではあるが完全ではない。 よって popt のエイリアスを使ったビルドモードの互換性は、 rpm から取り除かれつつある。 以前の rpm(8) に記述されていた rpm ビルドモードについてのすべての文書は、 rpmbuld パッケージをインストールし rpmbuild(8) を参照すること。

これからも rpm のコマンドラインから rpmbuild を呼び出したければ、以下の行を /etc/popt に加えればよい。

rpm     exec --bp               rpmb -bp
rpm     exec --bc               rpmb -bc
rpm     exec --bi               rpmb -bi
rpm     exec --bl               rpmb -bl
rpm     exec --ba               rpmb -ba
rpm     exec --bb               rpmb -bb
rpm     exec --bs               rpmb -bs 
rpm     exec --tp               rpmb -tp 
rpm     exec --tc               rpmb -tc 
rpm     exec --ti               rpmb -ti 
rpm     exec --tl               rpmb -tl 
rpm     exec --ta               rpmb -ta
rpm     exec --tb               rpmb -tb
rpm     exec --ts               rpmb -ts 
rpm     exec --rebuild          rpmb --rebuild
rpm     exec --recompile        rpmb --recompile
rpm     exec --clean            rpmb --clean
rpm     exec --rmsource         rpmb --rmsource
rpm     exec --rmspec           rpmb --rmspec
rpm     exec --target           rpmb --target
rpm     exec --short-circuit    rpmb --short-circuit
    

ファイル

rpmrc 設定

/usr/lib/rpm/rpmrc
/usr/lib/rpm/<vendor>/rpmrc
/etc/rpmrc
~/.rpmrc
    

マクロ設定

/usr/lib/rpm/macros
/usr/lib/rpm/<vendor>/macros
/etc/rpm/macros
~/.rpmmacros
    

データベース

/var/lib/rpm/Basenames
/var/lib/rpm/Conflictname
/var/lib/rpm/Dirnames
/var/lib/rpm/Filemd5s
/var/lib/rpm/Group
/var/lib/rpm/Installtid
/var/lib/rpm/Name
/var/lib/rpm/Packages
/var/lib/rpm/Providename
/var/lib/rpm/Provideversion
/var/lib/rpm/Pubkeys
/var/lib/rpm/Removed
/var/lib/rpm/Requirename
/var/lib/rpm/Requireversion
/var/lib/rpm/Sha1header
/var/lib/rpm/Sigmd5
/var/lib/rpm/Triggername
    

一時ファイル

/var/tmp/rpm*

関連項目

popt(3), rpm2cpio(8), rpmbuild(8),

http://www.rpm.org/
    

著者

Marc Ewing <marc@redhat.com>
Jeff Johnson <jbj@redhat.com>
Erik Troan <ewt@redhat.com>
    
09 June 2002