OSS Fan ~OSSでLinuxサーバ構築~

このエントリーをはてなブックマークに追加

rpmパッケージの管理(導入・削除・情報確認)

カテゴリ:OSSセットアップ | ソフトウェア:Linux | タグ:
最終更新日:2020/11/19 | 公開日:2013/09/14

目次

概要

 最近のLinuxはyumで簡単にrpmパッケージ(アプリケーション)をインストールしたり アップデートしたりすることができるようになりました。 市販されているLinux関連書籍でもrpmよりyumを使用してインストールの解説をしたものが 増えてきたように感じます。

 個人的にはインターネットにつながっていない環境でのサーバ構築の機会が多いため、 今でもrpmを中心に使用しています。ただインストールするだけでなく 実はパッケージに関するいろいろな情報を提供してくれる rpm コマンドについて紹介します。

構成

サーバ構成

OSバージョン

Red Hat Enterprise Linux 5.9 x86_64

手順

 以下では vsftpd-2.0.5-28.el5.x86_64.rpm ファイルに対する 操作を例に rpm コマンドのオプションを紹介します。

パッケージファイルを使用したパッケージ情報の確認

パッケージファイルの情報を表示

 引数で指定したパッケージファイルの情報(バージョンやパッケージの説明など)を表示します。

# rpm -qip vsftpd-2.0.5-28.el5.x86_64.rpm
Name        : vsftpd                       Relocations: (not relocatable)
Version     : 2.0.5                             Vendor: Red Hat, Inc.
Release     : 28.el5                        Build Date: 2012年09月25日 21時38分52秒
Install Date: (not installed)               Build Host: x86-022.build.eng.bos.redhat.com
Group       : System Environment/Daemons    Source RPM: vsftpd-2.0.5-28.el5.src.rpm
Size        : 293689                           License: GPL
Signature   : DSA/SHA1, 2012年10月09日 15時26分26秒, Key ID 5326810137017186
Packager    : Red Hat, Inc. 
URL         : http://vsftpd.beasts.org/
Summary     : vsftpd - 非常に安全な Ftp デーモン
Description :
vsftpd は 非常に安全なFTP デーモンです。これは完全に最初から
書き直されています。

パッケージファイルからインストールされるファイルの一覧を表示

 引数で指定したパッケージファイルのインストールを実行することで、 ディスク上に展開されるファイル、ディレクトリの一覧を表示します。

# rpm -qlp vsftpd-2.0.5-28.el5.x86_64.rpm
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
(中略)
/usr/share/doc/vsftpd-2.0.5/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub

パッケージファイルが依存しているファイルの一覧を表示

 引数で指定したパッケージファイルが依存しているファイルの一覧を表示します。 インストール実行時にこれらファイルがないと依存関係のエラーが表示されて インストールできません。

# rpm -qRp vsftpd-2.0.5-28.el5.x86_64.rpm
/bin/bash
/bin/sh
/bin/sh
/lib64/security/pam_loginuid.so
/sbin/chkconfig
(中略)
openssl
pam
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

パッケージファイルのインストール時に実行されるスクリプトを表示

 引数で指定したパッケージファイルのインストール、アンインストール時に 実行されるスクリプトを表示します。 postinstall に続く行はインストール後に実行されるコマンド、 preuninstall に続く行はアンインストール前に実行されるコマンドを表しています。

# rpm -qp -scripts vsftpd-2.0.5-28.el5.x86_64.rpm
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add vsftpd
#/usr/sbin/usermod -d /var/ftp ftp >/dev/null 2>&1 || :
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
 /sbin/service vsftpd stop > /dev/null 2>&1
 /sbin/chkconfig --del vsftpd
fi

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

パッケージのインストールテスト

 引数で指定したパッケージファイルのインストールテストを行います。 ファイルの依存関係のチェックなどが実行され、問題があればエラーになります。 問題がなければ以下のように 100% と表示されますが、チェックが 100% 終わった ことを表しているだけで、インストールは行われません。

# rpm -ihv --test vsftpd-2.0.5-28.el5.x86_64.rpm
準備中...                ########################################### [100%]

パッケージの新規インストール

 引数で指定したパッケージファイルの新規インストールを行います。 インストールテストと同様にパッケージのチェックが実行され、 その後ファイルがディスク上に展開されます。

# rpm -ihv vsftpd-2.0.5-28.el5.x86_64.rpm
準備中...                ########################################### [100%]
   1:vsftpd                 ########################################### [100%]

パッケージのアップグレード

 引数で指定したパッケージファイルを使用したアップグレードを行います。 -F オプションを指定したアップグレードでは、同じ名前のパッケージが インストールされている場合のみアップグレードが行われます。

# rpm -Fhv vsftpd-2.0.5-28.el5.x86_64.rpm

パッケージの新規インストール、もしくはアップグレード

 引数で指定したパッケージファイルを使用したアップグレードを行います。 -F オプションと違い、-U オプションを使ったアップグレードでは 同じ名前のパッケージがインストールされていない場合には 新規でインストールを行います。

# rpm -Uhv vsftpd-2.0.5-28.el5.x86_64.rpm

インストール済みパッケージのアンインストール

 引数で指定したパッケージをアンインストールします。 成功した場合、画面には何も表示されないので分かりづらいですが、 『rpm -qa | grep vsftpd』のように実行して確認すると、 インストール済みパッケージ一覧からなくなっています。

# rpm -e vsftpd

RPM DBを使用したパッケージ情報の確認

 インストールされたパッケージの情報はRPM DBに格納されています。 この情報を参照することでパッケージに関する詳細情報を確認できます。 インストール済みパッケージの情報を確認するときには、引数として パッケージファイル名ではなく、『パッケージ名』を指定します。 パッケージファイル名を指定するとエラーになりますのでご注意ください。

パッケージファイル名: vsftpd-2.0.5-28.el5.x86_64.rpm
パッケージ名    : vsftpd

2.0.5-28.el5.x86_64 は バージョン、リリース番号、アーキテクチャを表しています。

インストール済みパッケージの一覧を表示

 インストール済みパッケージの一覧を表示します。 特定のパッケージがインストールされているかを 確認したいときは、『rpm -qa | grep ftp』のように キーワードで絞って抽出すると便利です。

# rpm -qa
pciutils-devel-3.1.7-5.el5
atk-1.12.2-1.fc6
nspr-4.9.1-6.el5
libusb-0.1.12-6.el5
freetype-2.2.1-31.el5_8.1
(中略)
xorg-x11-drv-jamstudio-1.1.0-1.1
xorg-x11-drv-spaceorb-1.1.0-1.1
xorg-x11-drv-tdfx-1.2.1-3.1
system-config-display-1.0.48-4.el5
vsftpd-2.0.5-28.el5

指定したインストール済みパッケージの情報を表示

 引数で指定したパッケージの情報(バージョンやパッケージの説明など)を表示します。

# rpm -qi vsftpd
Name        : vsftpd                       Relocations: (not relocatable)
Version     : 2.0.5                             Vendor: Red Hat, Inc.
Release     : 28.el5                        Build Date: 2012年09月25日 21時38分52秒
Install Date: 2013年09月14日 00時44分58秒      Build Host: x86-022.build.eng.bos.redhat.com
Group       : System Environment/Daemons    Source RPM: vsftpd-2.0.5-28.el5.src.rpm
Size        : 293689                           License: GPL
Signature   : DSA/SHA1, 2012年10月09日 15時26分26秒, Key ID 5326810137017186
Packager    : Red Hat, Inc. 
URL         : http://vsftpd.beasts.org/
Summary     : vsftpd - 非常に安全な Ftp デーモン
Description :
vsftpd は 非常に安全なFTP デーモンです。これは完全に最初から
書き直されています。

指定したインストール済みパッケージからインストールされたファイルの一覧を表示

 引数で指定したパッケージのインストール時にディスク上に展開されたファイル、 ディレクトリの一覧を表示します。

# rpm -ql vsftpd
/etc/logrotate.d/vsftpd.log
/etc/pam.d/vsftpd
/etc/rc.d/init.d/vsftpd
/etc/vsftpd
/etc/vsftpd/ftpusers
(中略)
/usr/share/doc/vsftpd-2.0.5/vsftpd.xinetd
/usr/share/man/man5/vsftpd.conf.5.gz
/usr/share/man/man8/vsftpd.8.gz
/var/ftp
/var/ftp/pub

指定したファイルがどのパッケージからインストールされたかを表示

 引数で指定したファイルがどのパッケージインストール時に 配置されたものかを表示されます。

# rpm -qf /etc/vsftpd/ftpusers
vsftpd-2.0.5-28.el5

指定したパッケージが依存しているファイルの一覧を表示

 引数で指定したパッケージが依存しているファイルの一覧を表示します。

# rpm -qR vsftpd
/bin/bash
/bin/sh
/bin/sh
/lib64/security/pam_loginuid.so
/sbin/chkconfig
(中略)
openssl
pam
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rtld(GNU_HASH)

指定したパッケージのインストール時に実行されたスクリプトを表示

 引数で指定したパッケージのインストール時、アンインストール時に 実行されるスクリプトを表示します。

# rpm -q -scripts vsftpd
postinstall scriptlet (using /bin/sh):
/sbin/chkconfig --add vsftpd
#/usr/sbin/usermod -d /var/ftp ftp >/dev/null 2>&1 || :
preuninstall scriptlet (using /bin/sh):
if [ $1 = 0 ]; then
 /sbin/service vsftpd stop > /dev/null 2>&1
 /sbin/chkconfig --del vsftpd
fi