Linux / コマンド / dnf - RPM 系列でのパッケージ・リポジトリ管理

dnfは、Fedora・RHEL系およびRocky Linux・AlmaLinuxでリポジトリパッケージを検索・インストール・削除・アップグレードするコマンドです。ディストリビューションやバージョンによってDNFの実装やサポートオプションが異なる場合があります。

DNFは配布元のリポジトリ情報を使って、パッケージ候補と依存関係を計算します。RPM(RPM Package Manager)形式のパッケージを扱い、RHELはRed Hat Enterprise Linuxの略です。installは必要な依存パッケージも処理します。ローカルファイルやデータベースを直接扱うrpmコマンドとは役割が異なります。

基本的な文法

dnf [オプション] コマンド [パッケージ ...]

インストールされている実装とオプションは、配布版によって異なる場合があります。man dnfで現在のシステムの説明を確認してください。

使用例

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

パッケージ名・説明とリポジトリ候補を確認します。

dnf search nginx
dnf info nginx

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

使用するリポジトリと依存関係の変更一覧を確認して承認します。変更前の計画だけ確認するにはsudo dnf --assumeno install nginxも使えますが、情報取得のため通信やキャッシュ更新は起こり得ます。

sudo dnf install nginx

アップデートの確認

次はDNF4の更新候補確認です。インストールは行いません。DNF5ではcheck-upgradeとして説明されており、手元のdnf --versionとヘルプで実装に合うコマンドを確認します。

dnf check-update

パッケージの出所とバージョンを確認する

dnf infoはパッケージのバージョン、アーキテクチャ、リポジトリと説明を表示します。インストール前の候補とインストール済みバージョンを区別して読む必要があります。

dnf info bash

出力で確認する項目の例:

Name         : bash
Version      : ...
Architecture : x86_64
Repository   : ...

実際の値はディストリビューションやリポジトリによって異なります。DNF4のdnf check-updateは、更新候補があれば終了コード100、なければ0、エラーなら1です。候補が出ても依存関係などの制約でupgradeが適用できるとは限りません。自動化では100を一般的な処理失敗と混同しないようにします。

主なオプションと形式

オプション・形式 説明
search / info パッケージを探すか詳細情報を表示します。
install / remove パッケージをインストールまたは削除します。
check-update / upgrade アップデート可能かどうかを確認するか、適用します。
repolist 有効になっているリポジトリを確認します。
history 以前のパッケージトランザクションを確認します。

使用する際の注意点

dnf upgradeは実行中のサービスやカーネルなどを変更する可能性があるため、変更リストと再起動の必要性を確認してください。--allowerasingは競合解決のため既存のパッケージを削除することがあります。リポジトリを任意に追加したり検証をオフにせず、インストール済みバージョンのdnf helpでオプションの違いを確認してください。

よくある質問

dnfとrpmのどちらのコマンドでインストールしますか?

リポジトリの依存関係まで管理する一般的なインストール・アップデートにはdnfが適しています。rpmはローカルパッケージファイルやインストールデータベースを直接扱う場合に使用します。

公式ドキュメント

オプションの正確な動作や実装ごとの差異はdnf関連の公式ドキュメントで確認できます。