Last Modiffied: 12 Jun 2002
rpm 操作ガイド

1.はじめに

■はじめに

RPMとは、Redhat Package Manager の略で、Redhat社が開発したパッケージ管理のためのツールですが、現在では、Redhat Linux以外にも、Turbo Linux 、Miracle Linux 、Vine Linuxなど、多くのディストリビューションで採用されています。

また、RPM は多くの場合、パッケージのインストールやアンインストールに使われるので、インストーラというイメージがありますが、この他に、パッケージファイルの構成や、パッケージ間の依存関係の管理も行なっているため、アンインストール時に不用意なファイルの削除を防ぐことや、インストール時の依存関係に関する問題を解決することができます。

今回は、install/upgradeモード、uninstallモード、queryモード、verifyモードでよく使用されるオプションを中心に説明を行ないますが、さらに詳細な情報が必要な場合には、[--help]オプション、または、manコマンドで確認して下さい。なお、RPM パッケージの作成方法や、SRPMからのインストールについては、ここでは説明しませんので、Web や書籍などの該当する資料を参照して下さい。



2.RPM パッケージ

■RPMファイルの名前

RPMで管理するソフトウェア(RPMパッケージ)は、拡張子が "rpm" のパッケージとして提供されます。そして、RPMパッケージのファイル名は、以下の規則にしたがって命名されています。

Ex.) apache-1.3.22-2.i386.rpm
apcheパッケージ名
1.3.22ソフトウェアのバージョン
2同一バージョンでのリリース番号
i386アーキテクチャ
rpm拡張子(Redhat Package Manager)

なお、このガイドの中で [package_file] という場合にはパッケージ名から拡張子まで(例:apache-1.3.22-2.i386.rpm) を、[package] といういう場合にはパッケージ名のみ(例:apache) を指すこととします。



3.install/upgredeモード

■install/upgradeモード

installモードでは、[-i]または、[--install]オプションを使用して新しいパッケージのインストールを、upgradeモードでは、[-U]または、[--upgrade]オプションを使用してインストール済みのパッケージを新しいバージョンのパッケージにアップグレードすることができます。
なお、それぞれのモードでのフォーマットは、以下の通りになります。

# rpm -i [options] package_file [...]
# rpm -U [options] package_file [...]

■オプション

オプション機能
--oldpackage既にインストール済みのパッケージよりも古いパッケージをインストールする。
--replacefilesインストール済みの他のパッケージに含まれるファイルを置き換える。
--replacepkgsインストール済みのパッケージを再インストールする。
--force上記の3つのオプション(--oldpackage/--replacefiles/--replacepkgs)を集約したもの。
-h (--hash)インストールの際に、井桁(#)の列で進捗の目安を表示する。
--percent進行状況をパーセント表示する。
--nodeps依存性の検査を行なわない。したがって、依存性に関わらず、パッケージをインストールすることができる。
--test実際にファイルに書き込まずに、全ての動作を実行する。
[-v]と[-h]オプションは、このオプションと同時に使用することはできない。
-vより多くの情報を表示する。
-vvさらに多くの情報を表示するモードに設定する。


■使用例

  1. 新しいパッケージをインストールする。
  2. # rpm -ivh hoge-1.1.1-1.i386.rpm
    Preparing...      ######################################## [100%]
       1:hoge         ######################################## [100%]

  3. 既存のパッケージを新しいバージョンにアップデートする。
  4. # rpm -Uvh hoge-2.2.2-2.i386.rpm
    Preparing...      ######################################## [100%]
       1:hoge         ######################################## [100%]

  5. インストールのテストを行なう。
  6. # rpm -i --test hoge-1.1.1-1.i386.rpm

■依存関係

RPM パッケージをインストールしようとした時に、そのパッケージと依存関係にあるパッケージがインストールされていない場合には、エラーとなってインストールすることができません。そこで、依存関係にあるパッケージだけをインストールしようとすると、今度は、最初にインストールしようとしたパッケージがインストールされていないためインストールすることができないという場合があります。

例えば、

aaa-1.1.1-1.i386.rpm
zzz-2.2.2-2.i386.rpm


が依存関係にある場合、片方のパッケージだけをインストールしようとすると、以下のようにエラーとなります。
# rpm -ivh aaa-1.1.1-1.i386.rpm
エラー:依存性の欠如
    zzz >= 2.2.2 は aaa-1.1.1-1 に必要とされています
# rpm -ivh zzz-2.2.2-2.i386.rpm
エラー:依存性の欠如
    aaa >= 1.1.1 は zzz-2.2.2-2 に必要とされています
このような状態になった場合には、依存関係にあるパッケージを同時にインストールすると、RPM が依存関係を判断してインストールを行なうことができます。
# rpm -ivh aaa-1.1.1-1.i386.rpm zzz-2.2.2-2.i386.rpm
なお、依存関係を無視してインストールする場合には、[--force]や[--nodeps]を利用して
# rpm -ivh --nodeps aaa-1.1.1-1.i386.rpm
または、
# rpm -ivh --nodeps --force aaa-1.1.1-1.i386.rpm
とすることもできますが、まともに動作しない場合がほとんどなので、この方法はおすすめできません。ただし、パッケージによっては、あえてこのオプションを使用したほうがよいものもあるようなので、参考程度に紹介します。



4.uninstallモード

■uninstallモード

uninstallモードは、[-e]または、[--uninstall]オプションを使用してインストール済みのパッケージをシステムから削除するときに使用します。デフォルトでは、指定されたパッケージに関して依存するパッケージがない場合だけ削除することができます。
なお、uninstallモードでのフォーマットは、以下の通りになります。

#rpm -e [options] package [...]

■オプション

uninstallモードでは、install/upgradeモードと同じオプションを使用することができるので、install/upgradeモードの 「■オプション」 を参照して下さい。


■使用例

  1. パッケージのアンインストールを行なう。
  2.  # rpm -e hoge


5.queryモード

■queryモード

queryモードは、[-q]または、[--query]オプションを使用してインストール済みのパッケージ、または、パッケージファイルそのものに対して問合せを行ないます。
なお、queryモードでのフォーマットは、以下の通りになります。

# rpm -q [options] [package_file] [...]

■オプション

オプション機能
-a (--all)インストールされている全てのパッケージを一覧で表示する。
-f filename
(--file)
指定したファイルが含まれているパッケージを表示する。
-p package_file未インストールのパッケージファイルに対して問合せを行なう。
-c package
(--configfiles)
構成ファイルだけを表示する。
-d package
(--docfiles)
関連文書だけを表示する。
-i packageインストール済みのパッケージに関する情報を表示する。
[-p]オプションと併用した場合には、パッケージファイルに関する情報を表示する。
installモードの[-i]オプションとの混同に注意が必要。
-l package
(--list)
packageに含まれるファイルを全て表示する。
-R package
(--requires)
指定されたパッケージが依存しているパッケージを表示する。
-s package_fileインストール済みのパッケージに含まれているファイルが正常であるかを確認する。
なお、package_file名には、パッケージ名のアーキテクチャ以降を省略したものを指定します。(Ex. apache-1.3.22-2)
--whatrequires packagepackage がインストールされていないとインストールできない package の情報を得る。
--scripts package_filepackage_fileをインストールする時に実行されるスクリプトが存在する場合に、スクリプトを出力する。
なお、package_file名には、パッケージ名のアーキテクチャ以降を省略したものを指定します。(Ex. apache-1.3.22-2)


■使用例

  1. インストール前のRPMパッケージに含まれるソフトウェアのバージョンを調べる。
  2. # rpm -qpi apache-1.3.22-2.i386.rpm
    Name: apache                  Relocations: (not relocateable)
    Version: 1.3.22               Vendor: Red Hat, Inc.
    Release: 2                    Build Date: 2001年11月02日 05時51分54秒
    Install date: (not installed) Build Host: stripples.devel.redhat.com
    Group: System Environment/Daemons Source RPM: apache-1.3.22-2.src.rpm
    Size: 1202220                 License: Apache Software License
    Packager: Red Hat, Inc. 
    Summary: The most widely used Web server on the Internet.
    Description:
    Apache is a powerful, full-featured, efficient, and freely-available
    Web server. Apache is also the most popular Web server on the
    Internet.
    

  3. インストール済みのパッケージの場合は、[-p]オプションをとり、パッケージファイル名に変わって、パッケージ名を指定する。
  4. # rpm -qi apache
    Name: apache                  Relocations: (not relocateable)
    Version: 1.3.22               Vendor: Red Hat, Inc.
    Release: 2                    Build Date: 2001年11月02日 05時51分54秒
    Install date: (not installed) Build Host: stripples.devel.redhat.com
    Group: System Environment/Daemons Source RPM: apache-1.3.22-2.src.rpm
    Size: 1202220                 License: Apache Software License
    Packager: Red Hat, Inc. 
    Summary: The most widely used Web server on the Internet.
    Description:
    Apache is a powerful, full-featured, efficient, and freely-available
    Web server. Apache is also the most popular Web server on the
    Internet.
    

  5. 特定のファイルをインストールしたパッケージを調べる。
  6. # rpm -qf /etc/httpd/conf/httpd.conf
    apache-1.3.22-2

  7. システムにインストールされているパッケージを検索する。
  8. # rpm -qa | grep apache
    apache-1.3.22-2
    apache-devel-1.3.22-2


6.verifyモード

■verifyモード

verifyモードは、[-V]オプションを使用してインストール済みのパッケージファイルと、RPMデータベースにある情報とを比較し、ファイルの変更状態などを知ることができます。
なお、verifyモードでのフォーマットは、以下の通りになります。

# rpm -V [options] package [...]

verifyモードで出力する結果は、8桁の文字列、オプションの[c](そのファイルが構成ファイルであることを表す)、ファイル名から構成されます。検証の結果を表す文字列には、該当する属性が変更されていなければドット(.)を表示し、変更されている場合には、下記に示す「■RPM検証コード」をドットに変更して表示します。


■オプション

オプション機能
--nofiles見つからなかったファイルを無視する。
--nomd5MD5チェックサムエラーを無視する。
--nopgpPGP検査エラーを無視する。
-a全てのファイルを対象にする。


■使用例

  1. インストールされたパッケージを検証する。
  2. # rpm -V apache
    S.5....T c /etc/httpd/conf/httpd.conf
    
    この場合、「/etc/httpd/conf/httpd.conf」というファイルがインストールされた状態と異なることを示している。このファイルは実行形式のファイルではないため、ファイルサイズが変更された理由について容易に説明を行なうことができるが、実行形式のファイルの場合には、外部からの不正な侵入など、ファイルが変更された理由を調査する必要がある。


■RPM検証コード

コード説明
5MD5チェックサムが異なる。
Sファイルの大きさが異なる。
Lシンボリックリンク属性が異なる。
Tファイルの修正時刻(mtime)が異なる。
Dデバイスファイルが変更されている。
Uファイルの所有者が変更されている。
Gファイルのグループが変更されている。
Mファイルのモードが変更されている。
?未知または理由不明。




7.改版履歴

■改版履歴

2002/06/12 初版作成



BACKUP