Rocky Linux / インストールされているパッケージを確認する方法
Rocky Linuxでインストールされたパッケージはdnfとrpmで確認できます。普段はリポジトリ情報と依存関係を一緒に表示するdnfを使用し、正確なRPMデータベースの照会やファイル所有パッケージの確認にはrpmを使用すると便利です。
インストール済みパッケージ全体の確認
DNF(Dandified YUM)はRocky Linuxのパッケージマネージャーです。次のコマンドはインストール済みパッケージの名前、バージョンとリポジトリ情報を表形式で表示します。保存された情報が不足したり@Systemと表示されたりする場合もあり、表示だけで正確な取得経路を証明できるとは限りません。
dnf list --installed
RPMデータベースに登録されたパッケージを、名前・バージョン・リリースなどを含む形式で列挙します。パッケージ名だけが必要なら、後述のクエリフォーマットで%{NAME}だけを指定します。
rpm -qa | sort
結果が長い場合はlessでページ分けしたり、grepで必要な名前だけを探せます。
rpm -qa | sort | less
rpm -qa | grep -i postgresql
特定パッケージのインストール状況と情報の確認
名前が分かっている場合
rpm -qはパッケージがインストールされていると正確な名前とバージョンを出力し、インストールされていない場合はエラーメッセージと0以外の終了ステータスを返します。
rpm -q curl
dnf info --installed curl
コマンドやファイルのパッケージを探すとき
存在するファイルの所有パッケージはrpm -qfで確認します。シンボリックリンクのファイルと実体は別のパッケージに属する場合があるので、両方を区別します。次のpython3の例は、command -v python3がインストール済みの外部実行ファイルを返す場合に使います。見つからない場合や関数・エイリアスの場合はそのまま実行せず、実際のファイルパスを確認してください。詳しくはrpmの照会方法も参照できます。
rpm -qf /usr/bin/curl
rpm -qf "$(readlink -f "$(command -v python3)")"
まだインストールされていないコマンドやファイルを提供するリポジトリパッケージはdnf providesで探します。
dnf provides '*/semanage'
バージョン、インストール時刻と出所を詳しく見る
RPMのクエリフォーマットを利用すると、必要な項目だけを希望の順序で出力できます。下記の例はパッケージ名、エポック・バージョン・リリース、アーキテクチャをタブで区切ります。
rpm -qa --qf '%{NAME}\t%{EPOCHNUM}:%{VERSION}-%{RELEASE}\t%{ARCH}\n' | sort
最近インストールされたパッケージの順序は次のように確認します。
rpm -qa --last | head -n 30
| 確認目的 | 推奨コマンド |
|---|---|
| 全体インストールリスト | dnf list --installed または rpm -qa |
| 特定パッケージの確認 | rpm -q パッケージ名 |
| パッケージ詳細情報 | dnf info --installed パッケージ名 |
| ファイル所有パッケージ | rpm -qf ファイルパス |
| ファイル提供パッケージ検索 | dnf provides '*/ファイル名' |
| 最近のインストール順 | rpm -qa --last |
直接インストールしたパッケージと変更履歴の確認
ユーザーがインストールした項目
DNFがユーザー要求によるインストールと記録したパッケージは、次のDNF4のコマンドで確認できます。dnf --versionとdnf history --helpで実装と対応構文を確認してください。依存関係で自動的にインストールされた項目を除外して、サーバーの用途を把握したり、整理対象を検討する際に便利です。
dnf history userinstalled
ただし、過去にRPMファイルを直接インストールしたり、システムをマイグレーションした場合には記録が完全でないことがあります。この結果だけでパッケージを自動削除せず、サービスや依存関係も合わせて確認してください。
DNFトランザクション履歴
インストール・アップデート・削除作業の履歴および特定のトランザクションの詳細は、次のように確認します。トランザクション_IDは一覧に表示された実際の数値IDへ置き換えます。
dnf history
dnf history info トランザクション_ID
インストールファイルと設定変更の確認
rpm -Vは、インストール時の記録と現在のファイルのサイズ、チェックサム、権限、所有者などを比較します。エラーなく終了し、終了状態が0で差異も出力されなければ、検査対象に差異が見つからなかったという意味です。これは全ファイルの安全性やRPMデータベース自体の信頼性まで保証するものではありません。
sudo rpm -V openssh-server
/etc以下の設定ファイルは、管理者が意図的に変更した場合でも差異として表示されます。結果が出たからといってすぐに復元せず、変更管理記録やバックアップと照合してください。
サーバーパッケージ一覧をファイルに保存する
障害対応や移行のため、名前・バージョン・アーキテクチャを保存すると、2つの時点や2つのサーバーを比較できます。以下の出力先は既存ファイルを上書きするため、新しい名前を選びます。シェルスクリプトで使う場合はBashのset -o pipefailなどでパイプ途中の失敗も検出し、標準エラーと保存内容を確認してください。
rpm -qa --qf '%{NAME}\t%{EPOCHNUM}:%{VERSION}-%{RELEASE}\t%{ARCH}\n' | sort > installed-packages.tsv
この一覧は当時の状態の記録であり、他のサーバーでそのまま実行するインストールスクリプトではありません。Rocky Linuxのメジャーバージョン、アクティブなリポジトリとモジュールストリームが異なれば、同じバージョンを入手できるとは限らないため、復旧手順は別途試す必要があります。
よくある問題
- コマンドがないと表示される場合:最小インストールでは、一部のDNFプラグインが欠落することがあります。まずコマンドを提供するパッケージを確認してください。
- 名前が予想と異なる場合:実行ファイル名とパッケージ名は同じでないことがあるため、
rpm -qfまたはdnf providesを使用します。 - 一覧が互いに異なって見える場合:
dnfはリポジトリメタデータを組み合わせて表示し、rpmはローカルRPMデータベースを直接照会します。比較目的に合ったツールを選択してください。 - データベースエラーが発生する場合:他のパッケージ作業が進行中かをまず確認し、ロックファイルやデータベースを勝手に削除しないでください。




