Rocky Linux / DNF の使い方

DNF(Dandified YUM)は、Rocky Linuxでパッケージを検索・インストール・アップデート・削除し、トランザクション履歴を管理する基本ツールです。コマンドを実行する前に対象パッケージと依存関係の変更リストを確認し、運用サーバーではリポジトリとアップデート範囲を明確にしてから適用することが重要です。

DNFのバージョンと基本形式

以下は主にDNF4の構文です。Rocky Linuxの版やDNF実装によって利用できるコマンドと出力が異なるため、最初に確認します。一般的なコマンド形式はdnf [オプション] コマンド [対象]です。

dnf --version
dnf --help

照会コマンドは一般ユーザーで実行できますが、システムを変更するインストール・削除・アップデートには管理者権限が必要です。

パッケージ検索と情報確認

名前と要約で検索

dnf search nginx
dnf info nginx

searchは通常、パッケージ名と要約を検索します。詳細説明やURLも含める場合はdnf search --all nginxを使いますが、複数語の一致条件も変わります。infoは版、アーキテクチャ、リポジトリと説明を確認するために使い、同名の複数候補を区別します。

ファイルやコマンドを提供するパッケージを探す

dnf provides '*/semanage'
dnf provides /usr/bin/rsync

正確なパスがわからない場合はワイルドカードを使用できます。シェルで先に展開されないように、パターンを引用符で囲むと安全です。

パッケージのインストールと再インストール

sudo dnf install nginx
sudo dnf reinstall nginx

installとreinstallは目的で使い分ける例です。前者は必要な依存関係も解決し、後者はインストール済みの同じRPMを再取得できる場合に再導入します。設定ファイルを必ず初期状態へ戻す操作ではありません。実行前後の状態はRocky Linuxのインストール済みパッケージ確認で照合できます。

ローカルRPMファイルもDNFで依存関係を解決できますが、必要なパッケージが有効なリポジトリで得られることが前提です。以下のファイルは例なので、配布元と署名を確認した実際のパスへ置き換えます。

sudo dnf install ./example-package.rpm

アップデートの確認と適用

アップデート可能な項目の確認

dnf check-update
dnf updateinfo list

DNF4のcheck-updateは更新候補があれば終了コード100、なければ0、エラーなら1を返します。100を一律に失敗扱いしないでください。ただし候補が表示されても、依存関係などの条件で実際のupgradeがその版を導入するとは限りません。

全体または特定のパッケージのアップデート

sudo dnf upgrade
sudo dnf upgrade openssl

カーネル、Cライブラリ、主要サービスのアップデートには再起動やサービスの再起動が必要な場合があります。運用環境では、変更内容、保守時間、およびロールバック方法を事前に準備してください。

パッケージの削除と不要な依存関係の整理

sudo dnf remove nginx
sudo dnf autoremove --assumeno

removeは対象に依存する別のパッケージも削除対象にできます。設定によっては不要になった依存パッケージも含むため、確認画面の全一覧を読みます。autoremove --assumenoは削除を確定せず候補を確認する例です。

インストール一覧とリポジトリ管理

パッケージ一覧の確認

dnf list --installed
dnf list --available
dnf list --upgrades

リポジトリの状態確認

dnf repolist
dnf repolist --all
dnf repository-packages appstream list --available

追加リポジトリを有効にする場合、提供主体、署名キー、サポート範囲、および基本リポジトリパッケージの置き換え可能性を確認する必要があります。問題解決のために特定のリポジトリを一度だけ除外したり有効にしたりすることができます。

sudo dnf --disablerepo='example-repo' upgrade
sudo dnf --enablerepo='example-repo' install package-name

トランザクション履歴の確認と取り消しの検討

dnf history
dnf history info トランザクション_ID
sudo dnf history undo トランザクション_ID

トランザクション_IDは一覧の実際の数値へ置き換え、詳細を先に確認します。history undoは以前のパッケージが入手できない場合や依存関係が変わった場合に失敗し得ます。データベース・設定・アプリケーションデータも丸ごと戻すバックアップではなく、OSのメジャーバージョン変更を戻す汎用手段でもありません。重要な復旧は別途検証した方法を用意してください。

キャッシュとメタデータの管理

コマンド 用途
dnf makecache アクティブなリポジトリのメタデータをあらかじめダウンロードします。
dnf clean metadata 保存されているリポジトリメタデータを削除します。
dnf clean packages キャッシュに残っているパッケージファイルを削除します。
dnf clean all メタデータとパッケージを含むDNFキャッシュを整理します。

リポジトリエラーが発生するたびにclean allを習慣的に実行する必要はありません。まずネットワーク、システム時刻、リポジトリアドレス、およびGPG署名エラーメッセージを確認することが原因の特定に役立ちます。

よく使うコマンドの要約

目的 コマンド
検索 dnf search 検索キーワード
情報確認 dnf info パッケージ名
インストール sudo dnf install パッケージ名
アップデート sudo dnf upgrade
削除 sudo dnf remove パッケージ名
ファイル提供パッケージ dnf provides '*/ファイル名'
トランザクション履歴 dnf history
リポジトリ一覧 dnf repolist --all

安全に運用する方法

  • 自動確認オプションを使用する前に、DNFが提案するインストール・削除リストを人がまず確認します。
  • 重要なサーバーは、アップデートの前にデータと設定をバックアップし、復旧手順をテストします。
  • リポジトリファイルとGPGキーの出所を確認し、不要な外部リポジトリを常時有効にしません。
  • 複数のサーバーは、同じリポジトリスナップショットや検証済みの自動化手順を使用して、バージョン差を減らします。

参考文書

詳細なオプションとコマンドごとの終了ステータスは、DNF公式コマンド参考文書で確認できます。