Linuxコマンド - RPMコマンド

提供:MochiuWiki : SUSE, EC, PCB
ナビゲーションに移動 検索に移動

概要

RPM (Red Hat Package Manager) は、RHELやその派生ディストリビューションで使用されるパッケージ管理システムである。
rpmコマンドは、パッケージのインストール、更新、削除、検索等を行うために使用される。


rpmファイルの詳細情報の確認(インストール前)

-pオプションを付与すると、インストール前にrpmファイルから確認できる。
パッケージファイル情報の詳細を表示する。

rpm -qip <rpmファイル名>


該当パッケージでインストールされるファイルの一覧を表示する。

rpm -qlp <rpmファイル名>


パッケージが依存しているファイルを表示する。

rpm -qRp <rpmファイル名>



rpmファイルの詳細情報の確認

-iまたは--infoオプションで確認できる。

rpm -qi <rpmファイル名>



インストールされているrpmのリストの表示

-aまたは--allオプションで確認できる。

rpm -qa

openal-soft-1.17.2-lp151.5.3.1.x86_64
libpng16-16-32bit-1.6.34-lp151.3.3.1.x86_64
openssl-1.1.0i-lp151.1.1.noarch
wicked-service-0.6.60-lp151.2.12.1
・
・
・



rpmファイルでインストールされるファイルの表示

-lまたは--listオプションで表示できる。

rpm -ql <rpmファイル名>

/etc/pki/CA
/etc/pki/CA/certs
/etc/pki/CA/crl
・
・
・



特定のファイルがどのrpmに含まれているかを確認

-fオプション、または、--fileオプションで表示することができる。

特定のコマンドおよびライブラリがインストールされているパッケージ名を調べるために使用する。

rpm -qf $(which <コマンド名>)
# または
rpm -qf <ライブラリのパス>


各オプションを以下に示す。

  • -qオプション
    quiet (静粛) モードを指定する。
    つまり、通常の出力ではなく、エラー以外の情報を表示しないようにする。

  • -fオプション
    指定されたファイルがどのパッケージに属するかを調べるために使用する。
    -qオプションと組み合わせて使用する場合、指定されたファイルが含まれるパッケージ名を表示する。


whichコマンドで実行可能ファイルのパスを表示することにより、
特定のコマンドの実行可能ファイルのパスを調べて、それがどのパッケージに属するかを調べるために使用するものである。

# 使用例:
rpm -qf $(which dd)

# 出力例:
# これは、ddコマンドがcoreutilsパッケージの一部であることを示している
coreutils-8.32-3.el8.x86_64


# 使用例:
rpm -qf /usr/lib64/libcrypto.so.10

# 出力例:
# /usr/lib64/libcrypto.so.10ファイルは、openssl-libs-1.0.2k-8.el7.x86_64というrpmに含まれている
openssl-libs-1.0.2k-8.el7.x86_64



特定のrpmファイルをインストールするために必要なパッケージ名称の表示

以下の例では、nssをインストールするには、bashやglibcが必要であることがわかる。

rpm -q --requires nss | cut -d ' ' -f 1 | xargs rpm -q --whatprovides | sort | uniq

bash-4.2.46-28.el7.x86_64
chkconfig-1.7.4-1.el7.x86_64
glibc-2.17-196.el7_4.2.x86_64
・
・
・



特定のrpmファイルが提供するファイルに依存するパッケージの表示

以下の例では、nssで提供するファイルは、NetworkManagerが使用していることがわかる。

rpm -q --provides nss | cut -d ' ' -f 1 | xargs rpm -q --whatrequires | sort | uniq

NetworkManager-1.8.0-9.el7.x86_64
NetworkManager-libnm-1.8.0-9.el7.x86_64
NetworkManager-tui-1.8.0-9.el7.x86_64
・
・
・



rpmファイルのインストールおよびアンインストール時に実行されるスクリプトの表示

--scriptsオプションで表示できる。

rpm -q --scripts nss-3.16.1-4.el6_5.x86_64

postinstall scriptlet (using /bin/sh):
# If we upgrade, and the shared filename is a regular file, then we must
# remove it, before we can install the alternatives symbolic link.
if [ $1 -gt 1 ] ; then
・
・
・



特定のrpmファイルのインストールテストを行う

実際には実行せずに、 -iや-eオプションを付与した際のインストールテストを行う。
--testオプションで実行できる。

rpm -i --test postgresql-8.4.20-2.el6_6.i686.rpm

エラー: 依存性の欠如:
   libc.so.6 は postgresql-8.4.20-2.el6_6.i686 に必要とされています
   libc.so.6(GLIBC_2.0) は postgresql-8.4.20-2.el6_6.i686 に必要とされています
   libc.so.6(GLIBC_2.1) は postgresql-8.4.20-2.el6_6.i686 に必要とされています
・
・
・



特定のrpmファイルのアンインストールを行う

-eまたは、--eraseオプションは、指定したパッケージを削除する際に使用する。

rpm -e <パッケージ名>



パッケージの更新履歴を見る

--changelogオプションで実行できる。

rpm -q --changelog libblkid-2.17.2-12.14.el6_5.x86_64

* 水  4月 09 2014 Karel Zak <kzak@redhat.com> 2.17.2-12.14.el6_5
- fix #1085818 - hwclock --systohc can hang on busy or virtual machine
・
・
・



パッケージインストール時のスクリプトの確認

--scriptsオプションで確認できる。

rpm -q --scripts wget-1.19.5-7.el8_0.1.x86_64.rpm

postinstall scriptlet (using /bin/sh):
/sbin/install-info /usr/share/info/wget.info.gz /usr/share/info/dir || :
preuninstall scriptlet (using /bin/sh):
if [ "$1" = 0 ]; then
   /sbin/install-info --delete /usr/share/info/wget.info.gz /usr/share/info/dir || :
fi



特定のパッケージのチェック

-Vまたは--verifyオプションは、指定したパッケージに含まれるファイルの変更や損傷を検査する際に使用する。

rpm -V <パッケージ名>


パッケージの検査では、 パッケージ内のインストールされたファイルの情報と、rpmデータベースに格納されているパッケージのメタデータから得られたファイルの情報を比較する。

例えば、ファイルのサイズ、 所有者、グループ等を比較する。
問題がある場合には、問題に応じて文字が出力されるため、その出力結果から、ファイルの整合性に関する問題を識別し、ファイルを元の状態に戻すか、変更を許可するか等を判断する。


RPMファイルの展開

rpmコマンドの問い合わせ機能は、インストールしたファイルが対象となるため、
インストール前にRPMファイルにどのようなファイルが含まれているかを調べたり、一部のファイルを取り出したりすることはできない。

インストール前に上記のようなことを行う場合、RPMパッケージをcpio形式のアーカイブファイルに変換して、ファイルの一覧を表示・展開すればよい。

RPMファイルをcpioファイルに変換するには、rpm2cpioコマンドを使用する。
また、cpio形式のアーカイブファイルから、ファイルを展開およびファイルの一覧を表示するにはcpioコマンドを使用する。

# RPMファイルの一覧の表示
rpm2cpio <ファイル名>.rpm | cpio --list

# RPMファイルの展開
rpm2cpio <ファイル名>.rpm | cpio -id



rpmdev-extractコマンドの使用

上記の方法では、ファイル形式の変換処理が発生するため、入力するコマンドが長くなる。
RPMファイルを展開するだけであれば、rpmdev-extractコマンドを使用した方が簡単である。

rpmdev-extractコマンドは、rpmdevtoolsというパッケージに含まれている。
以下のコマンドを実行して、rpmdevtoolsをインストールする。

# RHEL
sudo dnf install rpmdevtools


rpmdev-extractコマンドは、引数で指定されたRPMファイルを展開する。

rpmdev-extract <RPMファイル>