dnfパッケージ管理 - Fedora/RHEL系の最新ツール
この記事で解決できること
- Fedora/RHEL 系で
dnfを使ったパッケージ管理の基本操作が身につく yumとの違いとdnfに移行すべき理由が分かる- モジュールストリームなど dnf 固有の機能が活用できる
結論(実務の型)
- インストール:
sudo dnf install [パッケージ名] - 更新:
sudo dnf update(全体)/sudo dnf update [パッケージ名](個別) - 削除:
sudo dnf remove [パッケージ名] - トラブル時:
dnf history undo [id]でロールバック可能
dnf とは何か?
dnf(Dandified YUM)は yum の後継パッケージマネージャーで、Fedora 22 以降と RHEL 8 / CentOS 8 以降で標準採用されている。依存解決が高速で、メモリ効率も yum より優れる。
対応ディストリビューション: Fedora / RHEL 8+ / CentOS 8+ / AlmaLinux / Rocky Linux / Oracle Linux
Ubuntu/Debian 系は対象外
Ubuntu/Debian 系は apt を使う。dnf は RPM ベースのディストリビューション専用。
apt/yum の基本はこちら
パッケージのインストール・削除
インストールと削除は dnf の最も基本的な操作。
インストールする
sudo dnf install vim
複数パッケージを一度にインストール:
sudo dnf install vim git curl
ローカルの RPM ファイルからインストール:
sudo dnf install ./package.rpm
削除する
sudo dnf remove vim
remove は対象パッケージに依存する他のパッケージも削除する。単体削除のみ行いたい場合は --no-autoremove を付ける。
依存関係として残った不要パッケージを掃除:
sudo dnf autoremove
パッケージの更新
定期的な更新はセキュリティの基本。
全パッケージを更新する
sudo dnf update
dnf upgrade は dnf update の別名で動作は同じ。
特定パッケージだけ更新する
sudo dnf update vim
セキュリティアップデートのみ適用する
sudo dnf update --security
更新可能なパッケージを確認する(実行しない)
dnf check-update
パッケージの検索と情報確認
インストール前にパッケージを調べる方法。
キーワードで検索する
dnf search nginx
パッケージ名と概要の両方をキーワード検索:
dnf search all nginx
パッケージの詳細情報を確認する
dnf info nginx
バージョン・アーキテクチャ・サイズ・リポジトリ・説明などを表示する。
インストール済みパッケージを一覧表示する
dnf list installed
利用可能な(未インストール含む)パッケージ一覧:
dnf list available
特定パッケージの状態確認:
dnf list vim
コマンドがどのパッケージから提供されるか調べる
dnf provides /usr/bin/vim
パッケージグループの管理
関連パッケージをまとめてインストールできる。
利用可能なグループを表示する
dnf group list
グループをインストールする
sudo dnf group install "Development Tools"
グループの内容を確認する
dnf group info "Development Tools"
リポジトリの管理
パッケージの提供元(リポジトリ)を管理する方法。
有効なリポジトリを一覧表示する
dnf repolist
無効なものも含めて表示:
dnf repolist --all
EPEL リポジトリを追加する(RHEL/CentOS 系)
sudo dnf install epel-release
リポジトリを一時的に無効にしてインストールする
sudo dnf install [package] --disablerepo=epel
キャッシュの管理
ダウンロードキャッシュを管理してディスクを節約する。
sudo dnf clean all
パッケージリストのみ更新(キャッシュは保持):
sudo dnf makecache
履歴と更新のロールバック
dnf の強力な機能の一つが操作履歴とロールバック。
操作履歴を確認する
dnf history
特定の操作の詳細を確認する
dnf history info 5
操作をロールバック(取り消す)
sudo dnf history undo 5
アップデート後に問題が発生した場合、dnf history undo で元の状態に戻せる。本番環境での作業で特に有用。
モジュールストリーム
モジュールストリームは dnf 固有の機能で、同一パッケージの複数バージョンを切り替えて使える仕組み。
利用可能なモジュールを一覧表示する
dnf module list
モジュールの詳細を確認する
dnf module info nodejs
特定バージョンのモジュールを有効化してインストールする
sudo dnf module enable nodejs:18 sudo dnf install nodejs
モジュールストリームを切り替える
sudo dnf module reset nodejs sudo dnf module enable nodejs:20 sudo dnf distro-sync
モジュールストリームを切り替える際は dnf distro-sync を実行して依存関係を整合させること。
yum との主な違い
| 操作 | yum | dnf |
|---|---|---|
| インストール | yum install |
dnf install |
| 削除 | yum remove |
dnf remove |
| 更新 | yum update |
dnf update |
| 検索 | yum search |
dnf search |
| 不要パッケージ削除 | yum autoremove |
dnf autoremove |
| モジュール管理 | 非対応 | dnf module |
| ロールバック | 限定的 | dnf history undo |
RHEL 7 以前の yum コマンドは、RHEL 8 以降では互換シムとして動作するが、実体は dnf を呼び出している。