dnf – Red Hat系Linuxでパッケージを検索・更新・インストールする

コマンドリファレンス

dnf は Fedora / RHEL 8 以降 / CentOS Stream / Rocky Linux / AlmaLinux など Red Hat 系ディストリビューションの標準パッケージ管理コマンドです。「Dandified YUM」の略で、yum の後継として依存関係の自動解決・リポジトリ管理・取引履歴の巻き戻しまでを一貫して行えます。(man7.org, docs.fedoraproject.org)
Fedora 41 以降は内部実装が新しい DNF5 に置き換わっていますが、install / search / remove など主要なサブコマンドの使い方は旧来の dnf(dnf4)と共通です。(dnf5.readthedocs.io)

構文(Syntax)

dnf [GLOBAL_OPTIONS] COMMAND [ARGS]

# 代表的なコマンド
dnf search KEYWORD                  # パッケージ検索
dnf info PKG                        # パッケージ情報
dnf list [installed|available]      # 一覧
dnf provides PATH|GLOB              # どのパッケージがファイルを提供するか
dnf install PKG...                  # インストール(ローカルの .rpm パス指定も可)
dnf upgrade [PKG...]                 # 更新
dnf remove PKG...                   # 削除
dnf autoremove                      # 不要になった依存パッケージを削除
dnf check-update                    # 更新の有無だけを確認
dnf history [list|info|undo N]      # 取引履歴と巻き戻し
dnf module list|enable MODULE[:STREAM]  # モジュールストリーム管理
dnf clean all|metadata|packages     # キャッシュ削除
dnf makecache                       # メタデータを先読み
dnf repolist [all|enabled]          # リポジトリ一覧

dnf historydnf modulednf clean などの主要サブコマンドは man ページと DNF5 ドキュメントにまとまっています。)(man7.org, dnf5.readthedocs.io)

主なオプション一覧

オプション説明使用例
-y, --assumeyesすべての質問に自動で Yessudo dnf -y install htop
-q, --quiet出力を減らすdnf -q repolist
-v, --verbose冗長出力dnf -v info htop
--enablerepo=REPO一時的にリポジトリを有効化sudo dnf --enablerepo=epel install htop
--disablerepo=REPO一時的に無効化sudo dnf --disablerepo=extras upgrade
-x, --exclude=PATTERN対象から除外sudo dnf --exclude=kernel* upgrade
--setopt=KEY=VAL設定を一時上書きsudo dnf --setopt=timeout=30 upgrade
--showduplicates候補の重複(複数バージョン)も表示dnf --showduplicates list htop
--downloadonly --downloaddir=DIRインストールせずダウンロードのみ行うdnf install --downloadonly --downloaddir=. htop
--allowerasing依存解決のため既存パッケージの削除を許可sudo dnf --allowerasing install PKG
--nogpgcheckGPG 検証を無効化(推奨されない)sudo dnf --nogpgcheck install pkg.rpm

設定ファイルは /etc/dnf/dnf.conf、リポジトリ定義は /etc/yum.repos.d/*.repo で管理します(yum 時代のディレクトリ名をそのまま引き継いでいます)。(man7.org)

実行例

パッケージを検索してからインストール

説明: htop を検索し、情報を確認してから導入します。
コマンド:

dnf search htop
dnf info htop
sudo dnf install -y htop

提供元を調べる(ファイル → パッケージ逆引き)

説明: あるファイルを提供するパッケージを調べます。
コマンド:

dnf provides "*/bin/ls"

出力例(一部抜粋):

coreutils-8.32-41.el9.x86_64 : A set of basic GNU tools commonly used in shell scripts
Repo        : baseos
Matched from:
Filename    : /usr/bin/ls

一時的に EPEL を有効にして入れる

説明: 標準リポジトリに無いパッケージは EPEL(Extra Packages for Enterprise Linux)を事前登録してから、必要なコマンドの間だけ有効化します。
コマンド:

sudo dnf install -y epel-release
sudo dnf --enablerepo=epel install -y htop

(EPEL の詳細は Fedora 公式ドキュメントを参照してください。)(docs.fedoraproject.org)

ローカルの rpm ファイルをインストールする

説明: ダウンロード済みの .rpm ファイルを直接指定してインストールします(旧 yum の localinstall に相当)。
コマンド:

sudo dnf install -y ./htop-3.3.0-1.el9.x86_64.rpm

(dnf4 では dnf localinstall pkg.rpm という書き方も互換のため残っていますが、Fedora 41+ の DNF5 では localinstall サブコマンドが廃止され、install にパスを渡す方法へ統一されています。)(dnf5.readthedocs.io)

履歴から直前の変更を巻き戻す

説明: 取引番号を確認し、その変更(インストールや更新)を取り消します。
コマンド:

dnf history list
sudo dnf history info 2
sudo dnf history undo 2 -y

モジュールストリームを確認・切り替える

説明: nodejs や php のように複数バージョンが提供されるパッケージ群(モジュール)は、dnf module でストリームを切り替えます。
コマンド:

dnf module list nodejs
sudo dnf module enable -y nodejs:20
sudo dnf install -y nodejs

キャッシュを掃除してメタデータを再取得

説明: リポジトリ切替後やメタデータ破損時に有用です。
コマンド:

sudo dnf clean all
sudo dnf makecache

エラー例:権限不足でインストール

説明: sudo なしでインストールすると失敗します。
コマンド:

dnf install htop

出力例(例):

Error: This command has to be run with superuser privileges (under the root user on most systems).

関連コマンド

  • yum : RHEL 7 以前の実装。RHEL 8+ では互換コマンドとして dnf を呼び出します。
  • rpm : 低レベル操作(個別 .rpm のインストール/照会/検証など)。dnf は内部で rpm を利用して依存関係を解決します。
  • dnf5 : Fedora 41+ の既定実装。CLI の使い勝手は概ね共通ですが、細部の違いは移行ガイドを参照してください。(dnf5.readthedocs.io)

備考

  • 設定ファイル: 全体設定は /etc/dnf/dnf.conf、リポジトリは /etc/yum.repos.d/*.repo に分離するのが標準です。(man7.org)
  • EPEL: 標準リポジトリに無い定番パッケージ(htop など)は、epel-release を導入して EPEL リポジトリを有効化してから探すのが基本です。(docs.fedoraproject.org)
  • dnf4 と dnf5 の違い: Fedora 41+ の既定である DNF5 では、localinstall の廃止など一部サブコマンドが整理されています。RHEL 9/CentOS Stream 9 系は今も dnf4 が標準です。(dnf5.readthedocs.io)
  • モジュールストリーム: nodejs / php / mariadb などは複数バージョンが並行提供され、dnf module で切り替えます(AppStream 採用ディストリのみ)。

参考

Bash玄

はじめまして!Bash玄です。

エンジニアとしてシステム運用に携わる中で、手作業の多さに限界を感じ、Bashスクリプトを活用して業務を効率化したのがきっかけで、この道に入りました。「手作業は負け」「スクリプトはシンプルに」をモットーに、誰でも実践できるBashスクリプトの書き方を発信しています。

このサイトでは、Bashの基礎から実践的なスクリプト作成まで、初心者でもわかりやすく解説しています。少しでも「Bashって便利だな」と思ってもらえたら嬉しいです!

# 好きなこと
- シンプルなコードを書くこと
- コマンドラインを快適にカスタマイズすること
- 自動化で時間を生み出すこと

# このサイトを読んでほしい人
- Bashに興味があるけど、何から始めればいいかわからない人
- 定型業務を自動化したい人
- 効率よくターミナルを使いこなしたい人

Bashの世界に一歩踏み出して、一緒に「Bash道」を極めていきましょう!

Bash玄をフォローする

コメント