RPM系パッケージ管理の全体像
Red Hat Enterprise Linux、Fedora、SUSEなど、RPM系のディストリビューションでは、ソフトウェアは.rpm形式のパッケージとして配布・管理されます。Debian系と同様に、パッケージ管理は低レベルと高レベルの2階層に分かれています。
| 階層 | 役割 | 代表コマンド |
|---|---|---|
| 低レベル(パッケージファイル自体の操作) | 個々の.rpmファイルのインストール・削除・情報照会を行う | rpm |
| 高レベル(リポジトリと依存関係の管理) | リポジトリから、依存関係を自動的に解決しながらパッケージを取得・管理する | yum(および後継のdnf)、SUSE系ではzypper |
rpm:パッケージファイルを直接操作する
rpmは、ダウンロード済みの.rpmファイルを直接インストール・削除したり、パッケージの情報を照会したりするための低レベルなコマンドです。dpkgと同様、依存関係の自動解決は行いません。
| 主なオプション | 効果 |
|---|---|
-i | 新規にパッケージをインストールする(同一版が既にインストール済みの場合は通常失敗する) |
-U | パッケージをインストール、または既にあれば新しいバージョンにアップグレードする(通常はこちらが推奨される) |
-e | パッケージを削除する |
-h(--hash) | インストールやアップグレードの進行状況を#記号で表示する。通常は詳細情報を表示する-vと組み合わせて使用する |
複数バージョンの共存が許可されているパッケージでは、異なるバージョンを-iでインストールできる場合があります。
rpm -i package.rpm # 新規インストール(同一版が既にあると通常は失敗する)
rpm -U package.rpm # インストールまたはアップグレード(通常はこちらを使う)
rpm -e package_name # 削除する
rpm -ivh package.rpm # 詳細情報と進行状況を表示して新規インストール
rpm -Uvh package.rpm # 詳細情報と進行状況を表示してインストールまたはアップグレード-ivhや-Uvhのように、複数の短いオプションはまとめて指定できます。-hを指定すると、処理の進行に合わせて次のように#記号が表示されます。
Updating / installing...
package-name-1.0-1 ########################################クエリモード:rpm -q
-q(クエリ)モードでは、パッケージの情報照会ができます。
| オプション | 効果 |
|---|---|
-qa | インストール済みの全パッケージを一覧表示する |
-qi パッケージ名 | パッケージの詳細情報(バージョン、説明等)を表示する |
-qf ファイルパス | 指定したファイルがどのパッケージによってインストールされたかを調べる |
-ql パッケージ名 | パッケージが配置したファイルの一覧を表示する |
-V パッケージ名は、インストール済みのファイルがパッケージ本来の状態(サイズ・パーミッション・所有者等)から変更されていないかを検証します。
rpm -qa | grep httpd # インストール済みパッケージからhttpdを含むものを探す
rpm -qi httpd # httpdパッケージの詳細情報を表示する
rpm -qf /etc/httpd/conf/httpd.conf # このファイルがどのパッケージのものかを調べる
rpm -ql httpd # httpdパッケージが配置したファイルの一覧を表示する
rpm -V httpd # httpdパッケージのファイルが改変されていないか検証する-qf(ファイルからパッケージを逆引き)と-ql(パッケージからファイル一覧を取得)が逆方向の検索である点は、Debian系のdpkg -S・dpkg -Lと同じ関係です。
rpm2cpio:インストールせずに中身を取り出す
rpm2cpioは、.rpmパッケージファイルをcpio形式のアーカイブに変換するコマンドです。パッケージを実際にインストールすることなく、中身のファイルだけを取り出したい場合に、cpioと組み合わせて使います。
rpm2cpio package.rpm | cpio -idmv # インストールせずに中身を展開するyum:リポジトリからのインストールと依存関係の解決
yum(Yellowdog Updater, Modified)は、/etc/yum.repos.d/以下に登録されたリポジトリから、依存関係を自動的に解決しながらパッケージを取得・インストールする高レベルなコマンドです。
| コマンド | 効果 |
|---|---|
yum install パッケージ名 | パッケージを依存関係も含めてインストールする |
yum remove パッケージ名 | パッケージを削除する(そのパッケージに依存する他のパッケージも合わせて削除される) |
yum update | 引数を指定しない場合、インストール済みの全パッケージを更新する。パッケージ名を指定すると、そのパッケージを更新対象とし、必要に応じて依存関係も解決する |
yum list | 利用可能・インストール済みのパッケージの一覧を表示する |
yum search キーワード | パッケージ名・概要からキーワードで検索する |
yum info パッケージ名 | パッケージの説明・概要情報を表示する |
yum provides ファイルパス(whatprovides) | 指定した機能・ファイルを提供するパッケージを検索する |
yum repolist | 有効になっているリポジトリの一覧を表示する |
yum repolist all | 有効・無効を含む、登録済みのすべてのリポジトリを表示する |
yum install nginx # nginxとその依存パッケージをインストールする
yum update # インストール済みの全パッケージを更新する
yum provides "*/httpd.conf" # httpd.confを提供するパッケージを検索する設定ファイル:/etc/yum.conf、/etc/yum.repos.d/
/etc/yum.conf:yum全体の動作設定(キャッシュの保持、既定の動作等)を記述するファイルです。/etc/yum.repos.d/:リポジトリごとの設定ファイル(.repo)を格納するディレクトリです。1つのリポジトリにつき1ファイルという構成が一般的です。
dnf:yumの後継
dnf(Dandified YUM)は、より新しいFedora・RHELで採用されている、yumの後継となるパッケージマネージャーです。yum install・yum updateなどのコマンドは、dnf install・dnf updateのようにほぼそのまま置き換えて使えるよう設計されています(多くの環境でyumコマンド自体がdnfへのエイリアス・ラッパーとして提供されています)。
zypper:SUSE系のパッケージ管理
zypperは、openSUSE・SUSE Linux Enterprise系のディストリビューションで使われる、yumやdnfに相当する高レベルなパッケージ管理コマンドです。
zypper install パッケージ名 # パッケージをインストールする
zypper remove パッケージ名 # パッケージを削除する
zypper search キーワード # パッケージを検索するコマンド体系はyum・dnfと似ていますが、ディストリビューション(SUSE系)が異なる点に注意してください。