個人的によく使うrpmコマンド逆引き

2014.08.21

この記事は公開されてから1年以上経過しています。情報が古い可能性がありますので、ご注意ください。

こんにちは。望月です。
RHEL系Linuxでパッケージ管理に使われるrpmコマンドですが、色々とオプションがあって「あれ、何使えばいいんだっけ?」ってのが多くなったので、自分がよく使う物をまとめてみました。新しく出てきたら追記していきたいと思います。

検証は全てAmazon Linux 2014.03で実施しています。

インストール

rpmパッケージをインストールする

ローカルにあるrpmファイルをインストールします。-i(--install)オプションを利用します。-v(--verbose)-h(--hash)は、インストールの進行度を表示してくれます。

$ rpm -ivh package-x.y.z.rpm

また、リモートのファイルを指定することも可能です。

$ rpm -ivh http://package.example.com/package-x.y.z.rpm

rpmパッケージをアップグレードする

既にインストールされたrpmパッケージのより新しいバージョンをインストールします。

$ rpm -Uvh package-x.y.z.rpm

rpmパッケージをアンインストールする

インストールされたパッケージをアンインストールします。-e(--erase)を利用します。

$ rpm -e package-x.y.z.rpm

依存性関連でエラーになる場合は、--nodepsで強制的にアンインストールすることが出来ます。(非推奨)

$ rpm -e --nodeps package-x.y.z.rpm

検索系

パッケージの情報などを取得する検索系のrpmコマンドは、-q(--query)オプションと、別のオプションを組み合わせて利用します。

パッケージの情報を表示する

-i(--info)オプションで、パッケージの詳細情報を出力します。

$ rpm -qi httpd24
Name        : httpd24
Version     : 2.4.6
Release     : 2.49.amzn1
Architecture: x86_64
Install Date: 2013年10月31日 01時00分18秒
Group       : System Environment/Daemons
Size        : 3690991
License     : ASL 2.0
Signature   : RSA/SHA256, 2013年09月24日 20時30分40秒, Key ID bcb4a85b21c0f39f
Source RPM  : httpd24-2.4.6-2.49.amzn1.src.rpm
Build Date  : 2013年09月20日 18時02分24秒
Build Host  : build-31003.build
Relocations : (not relocatable)
Packager    : Amazon.com, Inc. <http://aws.amazon.com>
Vendor      : Amazon.com
URL         : http://httpd.apache.org/
Summary     : Apache HTTP Server
Description :
The Apache HTTP Server is a powerful, efficient, and extensible
web server.

インストールされたrpmパッケージを一覧表示する

a(--all)オプションで、インストールされたパッケージを一覧で表示できます。

$ rpm -qa
libjpeg-turbo-1.2.1-1.2.amzn1.x86_64
setup-2.8.14-20.11.amzn1.noarch
libSM-1.2.1-2.6.amzn1.x86_64
ca-certificates-2010.63-3.7.amzn1.noarch
libnih-1.0.1-7.5.amzn1.x86_64
<snip...>

grepと組み合わせて使うと効果的です。

特定のパッケージによってインストールされたファイルを一覧表示する

-l(--list) <パッケージ名>で、あるパッケージによってインストールされたファイルを一覧で出力できます。

$ rpm -ql httpd24
/etc/httpd
/etc/httpd/conf
/etc/httpd/conf.d
/etc/httpd/conf.d/README
<snip...>

特定パッケージから、設定系ファイルのみ表示する

上の例の拡張版です。-c(--configfiles) <パッケージ名>を使うと、パッケージに含まれるファイルのウチ、設定ファイルのみを取得できます。

$ rpm -qc httpd24
/etc/httpd/conf.d/autoindex.conf
/etc/httpd/conf.d/notrace.conf
/etc/httpd/conf.d/userdir.conf
/etc/httpd/conf.d/welcome.conf
<snip...>

あるファイルがどのパッケージに含まれているのかを確認する

-f <ファイル名>を使うと、指定したファイルがどのパッケージに含まれているのかを確認できます。

$ rpm -qf /bin/ls
coreutils-8.4-19.15.amzn1.x86_64

パッケージの更新履歴を確認する

-q --changelog <パッケージ名>を利用すると、指定したパッケージ名のCHANGELOGを新しい順に表示します。headと組み合わせてよく使います。

$ rpm -q --changelog httpd24 | head -n 10

バグフィックスが入ったバージョンかどうかをこのコマンドで確認しましょう。

特定rpmパッケージの依存関係を表示する

-R(--requires) パッケージ名オプションで、特定パッケージの依存関係を表示します。

$ rpm -qR httpd24

まとめ

他にも思いついたら追記していきたいと思います。
使えるオプションについてはRPMのmanページに詳細に記載されているので、一読してみてください。