home ホーム search 検索 -  login ログイン  | reload edit datainfo version cmd icon diff delete  | help ヘルプ

技術/Linux/RPMコマンドメモ(実践レベル)

技術/Linux/RPMコマンドメモ(実践レベル)

技術 / Linux / RPMコマンドメモ(実践レベル)
id: 492 所有者: msakamoto-sf    作成日: 2009-11-20 17:11:06
カテゴリ: Linux 

2009年11月現在、メジャーなLinuxディストリビューションではyumやaptが整備されているとはいえ、ある程度はRPMを触れないと楽しくないので、自分用にメモ。
技術/Linux/RPMコマンドメモ(入門レベル) でも簡単にまとめているが、もう少し詳細にまとめておく。

CentOS5.2, RPM 4.4.2 で動作確認しており、本文も同左のmanページを元にしている。


RPMの情報取得に使うクエリ系の日常的に使うオプションまとめ

基本形:

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

インストール済パッケージ名が分かっている場合は、次のようにselect-optionsをスキップしてOK。

rpm {-q|--query} [query-options] パッケージ名

パッケージ選択オプション[select-options]

情報を取り出したいパッケージを検索 or 選択する為のオプション。日常的に使うのは以下の三つ。

"-a"

インストールされている全てのパッケージを検索する。grepと組み合わせて使う。

rpm -qa | grep foobar
"-f FILE"

"FILE"を所有するパッケージを検索する。which/whereとの組み合わせで使う。

$ which rpm
/bin/rpm
$ rpm -qf /bin/rpm
rpm-4.4.2-48.el5
"-p PACKAGE_FILE"

RPMパッケージファイル PACKAGE_FILE を選択する。PACKAGE_FILEはローカルでも、HTTPでもFTP上のファイルでも指定できる。
なおパッケージファイル名/URLを改行で区切って並べたテキストファイルを指定することも可能。

$ rpm -qp rpmforge-release-0.3.6-1.el5.rf.i386.rpm
$ rpm -qp -i  rpmforge-release-0.3.6-1.el5.rf.i386.rpm

パッケージ検索オプション[query-options]

名前は"検索オプション"だが、元の"query-options"が示すとおり、パッケージからどの情報を取得するかを指定するオプション。
常連オプションは "-i", "-l", "-R" だが、ごく希にインストール/アンインストールスクリプトを確認したい時に "--scripts" も使う。

"-i, --info"
名前、バージョン、説明などを含めたパッケージ情報を表示する。
$ rpm -qi rpm
"-l, --list"
パッケージ内に含まれるファイルを一覧表示する。
$ rpm -ql rpm
"-R, --requires"
依存パッケージ情報を表示する。
$ rpm -qR rpm
"-c"
パッケージ内に含まれる設定ファイルを一覧表示する。
$ rpm -qc coreutils
/etc/DIR_COLORS
/etc/DIR_COLORS.256color
/etc/DIR_COLORS.lightbgcolor
...
"--changelog"
パッケージのchangelogを表示する。
$ rpm -q --changelog postgresql-libs
"--scripts"
インストール/アンインストールの過程で使用される、パッケージ固有のスクリプトを表示する。
$ rpm -q --scripts rpm
preinstall scriptlet (using /bin/sh):
...
postinstall scriptlet (using /bin/sh):
...
postuninstall scriptlet (using /bin/sh):
...

なお、複数のquery-optionsを一気に指定する事も出来る。

$rpm -qilR --scripts --changelog rpm

ただし、全てのquery-optionsに対する出力が何の区切りも無しにずらずら表示するだけなので、殆ど使わない。"-iR"の組み合わせくらい。

また、"-qp" とすればインストール済みパッケージでなくRPMファイルを指定して情報を表示することが出来る。

参考:

インストール/アップデート/削除系のオプション

基本形:

rpm {-i|--install} [install-options] PACKAGE_FILE ...
rpm {-U|--upgrade} [install-options] PACKAGE_FILE ...
rpm {-e|--erase} [delete-options] PACKAGE_NAME ...

良く使う他のオプション:

--force
無理矢理インストール/更新させる時に使う。(削除では使わない)
"--replacepkgs, --replacefiles, --oldpackage" の組み合わせに同じ。
--nodeps
パッケージのインストールやアップグレードの前に、依存性のチェックをしない。削除の場合は、依存性をチェックせず強制削除。
--test
実際にパッケージを操作するわけではなく、単にチェックと、潜在的な衝突の報告を行う。

他、"-i"/"-U"では進捗状況を表示する為、"-v", "-h"を組み合わせる事が多い。

rpm -ivh foobar.rpm
rpm -Uvh foobar.rpm

rpm2cpioコマンド

rpmパッケージに含まれている"rpm2cpio"コマンドを使うと、引数 or 標準入力から読み込まれたrpmファイルをcpioアーカイブ形式に変換して、標準出力に出力する。cpioアーカイブ形式については 技術/UNIX/cpio 参照*1

引数でRPMファイルを指定:

$ rpm2cpio rpmforge-release-0.3.6-1.el5.rf.i386.rpm | cpio -t
./etc/apt
./etc/apt/sources.list.d
...
36 blocks

引数に"-"を指定し、標準入力でRPMファイルを読み込ませる:

$ rpm2cpio - < rpmforge-release-0.3.6-1.el5.rf.i386.rpm | cpio -t
./etc/apt
./etc/apt/sources.list.d
...
36 blocks

その他

  • "-q"によるクエリ取得で、"--qf"オプションにより出力フォーマットや表示項目を調整できる。次の公式ドキュメントを参照。
  • "-V"オプションでインストールされたパッケージに含まれているファイル状態を検証できる。
  • "rpm --import PUBKEY ..." で電子署名の検査に使う公開鍵を取り込む事ができる。

以下余談:

数年ぶりにrpmのmanページを漁ってみたら、やけに読みやすいな~と感じた。それは恐らく、RPMのビルド関連のオプション記述がごっそり削られたからだろう。ビルド機能がrpmbuildに分離されたおかげだろう。公式ドキュメントにしても、rpmの本家サイトでTracを使って書かれていたりして随分と分かりやすくなったようである。
最後にRPMにどっぷりはまり、必要に迫られてローカルで使うRPMパッケージを作ったりしたのが2002-2003年頃で、隔世の感がある。


*1: というかrpm2cpioのメモを書く為「だけに」わざわざ 技術/UNIX/cpio を書いている

プレーンテキスト形式でダウンロード
現在のバージョン : 1
更新者: msakamoto-sf
更新日: 2013-12-15 23:26:54
md5:145f89bd8c0f1d8f5c98cbc749d0e84a
sha1:e16959ed7f6d2e8c2adb0d43a7f7a2daf10b58e5
コメント
コメントを投稿するにはログインして下さい。