変更要約: 初版(主題1.04・副主題1.04.1〜1.04.4に対応)
4.4RPMパッケージ管理
リポジトリを介さない rpm パッケージの直接操作と照会を学びます。rpm によるバージョン・状態・依存関係・整合性・署名などの情報取得(-q 系)、パッケージが提供するファイル一覧(-ql)とファイルの所属パッケージ(-qf)の逆引きを押さえます。
yum の足元で実作業を担うのが rpm です(apt に対する dpkg と同じ関係)。依存解決はしない代わりに、インストール済みパッケージの照会(クエリ)機能が豊富で、監査・トラブルシュートで直接叩く場面が多いコマンドです。
4.4.1照会(-q 系)の使い分け
- 基本=
rpm -q パッケージ(バージョン確認)・rpm -qa(インストール済み全一覧。rpm -qa | grep httpdが定番)・rpm -qi(詳細情報)。 - ファイルの向き=
rpm -ql パッケージ(パッケージ→ファイル一覧)・rpm -qf /パス(ファイル→所属パッケージ)。 - 依存関係=
rpm -qR(requires)。未インストールの rpm ファイルを調べるには-pを足す(rpm -qlp package.rpm)。 - 整合性・署名=
rpm -V パッケージ(改ざん検証=サイズ/ハッシュ/権限の変化を検出)・rpm --checksig package.rpm(署名確認)。
「-qa=全一覧・-ql=パッケージ→ファイル・-qf=ファイル→パッケージ・-V=改ざん検証」 の4つが急所です。dpkg との対応(-ql ↔ dpkg -L・-qf ↔ dpkg -S)で覚えると両ディストリビューションの問題に対応できます。rpm も依存解決をしない(する側は yum)点は dpkg と同じ構図です。
セキュリティインシデントの初動を想像すると rpm の照会が生きてきます。「見慣れない実行ファイル /usr/local/bin/x を見つけた」→ rpm -qf でどのパッケージの持ち物かを確認(どのパッケージにも属さなければ手動配置=要精査)。「改ざんが疑われる」→ rpm -V coreutils でインストール時からの変化(サイズ S・ハッシュ 5・権限 M など記号で表示)を検出。「このパッケージは何を要求している?」→ rpm -qR。インストール操作(rpm -ivh・更新 -Uvh・削除 -e)もありますが、依存地獄を避けるため通常の導入は yum 経由が原則で、rpm 直接は「照会」と「単体 rpm の検証」が主戦場です。dpkg と同様、-p の有無で「インストール済み DB を見るか、rpm ファイル自体を見るか」が切り替わることも覚えておきましょう。
| 質問 | RPM系 | Debian系(対応) |
|---|---|---|
| 全パッケージ一覧 | rpm -qa | dpkg -l |
| パッケージ→ファイル | rpm -ql | dpkg -L |
| ファイル→パッケージ | rpm -qf | dpkg -S |
| 改ざん検証 | rpm -V | (dpkg --verify) |
ひっかけ: 「rpm -i はリポジトリから依存パッケージを取得して解決する」は誤りです。rpm は指定された rpm ファイルだけを扱い、依存解決は yum の仕事です。また「-qf はパッケージが持つファイルの一覧を表示する」も誤り=それは -ql で、-qf は逆向き(ファイル→パッケージ)です。
4.4.2この節のまとめ
- rpm=照会の達人・依存解決なし:-qa 全一覧・-qi 詳細・-qR 依存・-V 改ざん検証(-p で rpm ファイル対象)
- 向きで覚える:-ql=pkg→files ↔ dpkg -L/-qf=file→pkg ↔ dpkg -S
進捗の記録にはログインが必要です。
理解度チェック
(軽い確認用)Q1. サーバー上の /etc/httpd/conf/httpd.conf が「どのパッケージからインストールされたファイルか」を調べたい。適切なコマンドは?
Q2. インストール済みパッケージのファイルが、インストール時から改変されていないかを検証したい。適切なコマンドは?
Q3. システムにインストールされている全パッケージの一覧から httpd 関連を探したい。定番のコマンドは?

