#navi_header|技術| 2009年11月現在、メジャーなLinuxディストリビューションではyumやaptが整備されているとはいえ、ある程度はRPMを触れないと楽しくないので、自分用にメモ。 [[103]] でも簡単にまとめているが、もう少し詳細にまとめておく。 - http://en.wikipedia.org/wiki/RPM_Package_Manager - rpm.org -- http://rpm.org/ CentOS5.2, RPM 4.4.2 で動作確認しており、本文も同左のmanページを元にしている。 #more|| #outline|| ---- * RPMの情報取得に使うクエリ系の日常的に使うオプションまとめ 基本形: rpm {-q|--query} [select-options] [query-options] インストール済パッケージ名が分かっている場合は、次のようにselect-optionsをスキップしてOK。 rpm {-q|--query} [query-options] パッケージ名 ** パッケージ選択オプション[select-options] 情報を取り出したいパッケージを検索 or 選択する為のオプション。日常的に使うのは以下の三つ。 : "-a" :#block||> インストールされている全てのパッケージを検索する。grepと組み合わせて使う。 rpm -qa | grep foobar ||< : "-f FILE" :#block||> "FILE"を所有するパッケージを検索する。which/whereとの組み合わせで使う。 $ which rpm /bin/rpm $ rpm -qf /bin/rpm rpm-4.4.2-48.el5 ||< : "-p PACKAGE_FILE" :#block||> 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パッケージの情報を調べるには -- http://www.atmarkit.co.jp/flinux/rensai/linuxtips/050inforpm.html - RPMパッケージの変更履歴を表示するには - @IT -- http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a025changelog.html - rpmパッケージファイルを調べる際のコマンドメモ - あたまのものおき -- http://d.hatena.ne.jp/redeel/20110203/1296743323 - rpm, yumコマンドでパッケージの更新履歴を見る - blog.tnmt.info -- http://blog.tnmt.info/2010/04/15/see-rpm-changelog/ * インストール/アップデート/削除系のオプション 基本形: 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アーカイブ形式については [[491]] 参照((というかrpm2cpioのメモを書く為「だけに」わざわざ [[491]] を書いている))。 引数で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"オプションにより出力フォーマットや表示項目を調整できる。次の公式ドキュメントを参照。 -- Docs/QueryFormat - rpm - Trac : http://rpm.org/wiki/Docs/QueryFormat - "-V"オプションでインストールされたパッケージに含まれているファイル状態を検証できる。 - "rpm --import PUBKEY ..." で電子署名の検査に使う公開鍵を取り込む事ができる。 - RHELやCentOSの場合は、RPMforgeというリポジトリを加えるといろいろなソフトウェアをyum経由でインストールできるようになるらしい。 -- http://rpmrepo.org/RPMforge/ -- http://d.hatena.ne.jp/radio-keios/20080521/1211389508 -- http://centossrv.com/rpmforge.shtml --- など参照の事。 ---- 以下余談: 数年ぶりにrpmのmanページを漁ってみたら、やけに読みやすいな~と感じた。それは恐らく、RPMのビルド関連のオプション記述がごっそり削られたからだろう。ビルド機能がrpmbuildに分離されたおかげだろう。公式ドキュメントにしても、rpmの本家サイトでTracを使って書かれていたりして随分と分かりやすくなったようである。 最後にRPMにどっぷりはまり、必要に迫られてローカルで使うRPMパッケージを作ったりしたのが2002-2003年頃で、隔世の感がある。 #navi_footer|技術|