dnf/yumコマンドの使い方|パッケージのインストール・更新・削除とリポジトリ管理


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
「yumとdnfって何が違うの?」「RHEL8以降はdnfがメインって聞いたけど、yumコマンドはもう使えないの?」

こういった疑問を持つ方は多いです。CentOS7までyumを使っていた方が、Rocky Linux9やRHEL9に移行した際によく混乱するポイントです。

この記事では、dnf/yumコマンドの対応関係と実践的な使い方を解説します。パッケージのインストール・更新・削除・検索、リポジトリ管理、dnf historyまで体系的にカバーします。

【この記事でわかること】
・RHEL8以降はdnfがメイン。yumコマンドはdnfへのシンボリックリンクで互換動作する
・dnf install / dnf update / dnf remove の3コマンドが基本操作
・dnf history で過去の操作を確認し、dnf history undo で元に戻せる
・リポジトリ追加は dnf config-manager --add-repo で行う(RHEL9/Rocky9対応)

「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

yumからdnfへ:何が変わったのか

yum(Yellow dog Updater Modified)はCentOS5~7時代に使われていたパッケージ管理コマンドです。RHEL8からはdnf(Dandified YUM)に置き換わりました。

Rocky Linux9/RHEL9でyumコマンドを実行しても動作するのは、yumがdnfへのシンボリックリンクになっているためです。

# Rocky Linux9でyumの実体を確認 [root@server ~]# ls -la /usr/bin/yum lrwxrwxrwx. 1 root root 5 1月 1 00:00 2024 /usr/bin/yum -> dnf-3 # どちらを実行しても同じ結果 [root@server ~]# dnf --version 4.14.0 Installed: dnf-0:4.14.0-9.el9.noarch at 2023-11-14 00:00 Built : Rocky Enterprise Software Foundation at 2023-11-09 16:26

1. yumとdnfの主な違い

項目 yum(CentOS7以前) dnf(RHEL8/Rocky9以降)
依存解決 SAT Solverで依存関係解決(時に不安定) libsolvを使用。より正確で高速
設定ファイル /etc/yum.conf / /etc/yum.repos.d/ /etc/dnf/dnf.conf / /etc/yum.repos.d/(互換)
履歴管理 yum history(限定的) dnf history(より詳細でundo可能)
プラグイン yum-utilsが別パッケージ dnf-plugins-coreが標準搭載
モジュール管理 未対応 dnf module で複数バージョン切り替え可能

dnf/yumの設定ファイル

1. /etc/dnf/dnf.conf(メイン設定)

[root@server ~]# cat /etc/dnf/dnf.conf [main] gpgcheck=1 installonly_limit=3 clean_requirements_on_remove=True best=True skip_if_unavailable=False

主要な設定項目の意味は以下の通りです。

設定項目 意味
gpgcheck=1 パッケージのGPG署名を検証する(セキュリティ上必須)
installonly_limit=3 kernelなど同時にインストールできるバージョン数の上限
clean_requirements_on_remove=True パッケージ削除時に不要な依存パッケージも削除する
best=True 利用可能な最新バージョンをインストールする

2. /etc/yum.repos.d/(リポジトリ設定)

リポジトリの設定ファイルはdnfでも引き続き/etc/yum.repos.d/に保存されます。

[root@server ~]# ls /etc/yum.repos.d/ rocky-addons.repo rocky-devel.repo rocky-extras.repo rocky.repo # リポジトリ設定ファイルの内容確認 [root@server ~]# cat /etc/yum.repos.d/rocky.repo [baseos] name=Rocky Linux $releasever - BaseOS mirrorlist=https://mirrors.rockylinux.org/mirrorlist?arch=$basearch&repo=BaseOS-$releasever #baseurl=http://dl.rockylinux.org/$contentdir/$releasever/BaseOS/$basearch/os/ gpgcheck=1 enabled=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-Rocky-9

基本コマンド:インストール・更新・削除

1. パッケージをインストールする(dnf install)

# 書式 dnf install パッケージ名 # Apacheをインストール [root@server ~]# dnf install httpd メタデータの期限切れの確認は、0:05:12 時間前の 2026年04月07日 09時00分00秒 に実施しました。 依存関係が解決しました。 ==================================================================================================== パッケージ アーキテクチャー バージョン リポジトリ サイズ ==================================================================================================== インストール中: httpd x86_64 2.4.57-11.el9 appstream 48 k 依存関係のインストール中: apr x86_64 1.7.0-12.el9 appstream 124 k apr-util x86_64 1.6.1-23.el9 appstream 95 k ... インストール済み: httpd-2.4.57-11.el9.x86_64 完了しました! # -yオプションで確認プロンプトをスキップ [root@server ~]# dnf install -y wget

2. アップデートが必要なパッケージを確認する(dnf check-update)

[root@server ~]# dnf check-update メタデータの期限切れの確認は、0:05:12 時間前の 2026年04月07日 09時00分00秒 に実施しました。 ImageMagick.x86_64 6.9.13-6.el9 appstream NetworkManager.x86_64 1:1.44.0-6.el9 baseos openssl.x86_64 1:3.0.7-27.el9 baseos openssl-libs.x86_64 1:3.0.7-27.el9 baseos

3. 特定のパッケージをアップデートする(dnf update)

# 特定パッケージをアップデート [root@server ~]# dnf update openssl メタデータの期限切れの確認は、0:05:12 時間前に実施しました。 依存関係が解決しました。 ==================================================================================================== パッケージ アーキテクチャー バージョン リポジトリ サイズ ==================================================================================================== アップグレード中: openssl x86_64 1:3.0.7-27.el9 baseos 1.2 M openssl-libs x86_64 1:3.0.7-27.el9 baseos 2.1 M ... # システム全体をアップデート [root@server ~]# dnf update # または [root@server ~]# dnf upgrade

4. パッケージを削除する(dnf remove)

# パッケージを削除 [root@server ~]# dnf remove httpd 依存関係が解決しました。 ==================================================================================================== パッケージ アーキテクチャー バージョン リポジトリ サイズ ==================================================================================================== 削除中: httpd x86_64 2.4.57-11.el9 @appstream 4.9 M ...

注意:yumと異なり、dnfはclean_requirements_on_remove=Trueがデフォルトのため、削除したパッケージが必要としていた依存パッケージも自動的に削除されます。意図せず重要なパッケージが削除されないよう、実行前に削除対象を確認してください。

パッケージの検索・情報確認

1. パッケージを検索する(dnf search)

# キーワードでパッケージを検索 [root@server ~]# dnf search expect ====================================== N/S マッチ: expect ====================================== expect.x86_64 : A program-script interaction and testing utility expect-devel.x86_64 : A program-script interaction and testing utility pexpect.noarch : Pure Python Expect-like module # すべてのフィールドで検索する(より広い範囲) [root@server ~]# dnf search all expect

2. パッケージ情報を確認する(dnf info)

# インストール済みパッケージの情報確認 [root@server ~]# dnf info httpd メタデータの期限切れの確認は、0:05:12 時間前に実施しました。 インストール済みパッケージ 名前 : httpd バージョン : 2.4.57 リリース : 11.el9 アーキテクチャー: x86_64 サイズ : 4.9 M ソース : httpd-2.4.57-11.el9.src.rpm リポジトリ : @System より : appstream 概要 : Apache HTTP Server URL : https://httpd.apache.org/ ライセンス : ASL 2.0 説明 : Apache HTTPサーバーは、強力、効率的、そして拡張可能な : ウェブサーバーです。

3. インストール済みを確認する(dnf list installed)

# 特定パッケージがインストール済みか確認 [root@server ~]# dnf list installed httpd インストール済みパッケージ httpd.x86_64 2.4.57-11.el9 @appstream # インストール済みの全パッケージを一覧表示 [root@server ~]# dnf list installed # 利用可能な全パッケージ(インストール済み+未インストール)を表示 [root@server ~]# dnf list all

リポジトリの管理

1. 現在有効なリポジトリを確認する(dnf repolist)

[root@server ~]# dnf repolist リポジトリー id リポジトリー名 appstream Rocky Linux 9 - AppStream baseos Rocky Linux 9 - BaseOS extras Rocky Linux 9 - Extras # 無効なリポジトリも含めて表示 [root@server ~]# dnf repolist all

2. EPELリポジトリを追加する

RHEL/Rocky LinuxのデフォルトリポジトリにないパッケージはEPEL(Extra Packages for Enterprise Linux)で提供されていることがあります。

# RHEL9/Rocky9でEPELを有効にする [root@server ~]# dnf install epel-release # または [root@server ~]# dnf install https://dl.fedoraproject.org/pub/epel/epel-release-latest-9.noarch.rpm # 追加後に確認 [root@server ~]# dnf repolist | grep epel epel Extra Packages for Enterprise Linux 9 - x86_64

3. dnf config-managerでリポジトリを管理する

# リポジトリを追加(.repoファイルを自動作成) [root@server ~]# dnf config-manager --add-repo https://example.com/myrepo.repo # リポジトリを一時的に有効化(installと組み合わせる) [root@server ~]# dnf install --enablerepo=epel パッケージ名 # リポジトリを永続的に無効化 [root@server ~]# dnf config-manager --set-disabled epel # リポジトリを永続的に有効化 [root@server ~]# dnf config-manager --set-enabled epel

グループインストール

RPMパッケージはいくつかのグループにまとめられています。dnfではグループ単位でインストールができます。

# 利用可能なグループを表示 [root@server ~]# dnf grouplist メタデータの期限切れの確認は、0:05:12 時間前に実施しました。 利用可能な環境グループ: サーバー 最小限のインストール ワークステーション ... 利用可能なグループ: 開発ツール セキュリティツール ... # 「開発ツール」グループをインストール [root@server ~]# dnf groupinstall "開発ツール" # グループの含まれるパッケージを確認 [root@server ~]# dnf groupinfo "開発ツール" グループ: 開発ツール 説明: A basic development environment. 必須パッケージ: binutils gcc gcc-c++ glibc-devel ... 任意パッケージ: cmake ctags ...

dnf history:操作履歴と取り消し

dnfの強力な機能の一つがhistoryコマンドです。過去の操作履歴を確認し、必要に応じて取り消すことができます。

1. 操作履歴を確認する

[root@server ~]# dnf history ID | コマンドライン | 日付と時間 | 操作 | 変更数 ------------------------------------------------------------------------------------- 5 | install httpd | 2026-04-07 09:00 | インストール | 8 4 | update openssl | 2026-04-06 15:30 | アップグレード | 2 3 | install epel-release | 2026-04-06 14:00 | インストール | 1 2 | install wget | 2026-04-06 10:00 | インストール | 1 1 | update | 2026-04-06 09:00 | アップグレード | 156 # 特定IDの詳細を確認 [root@server ~]# dnf history info 5 トランザクション ID : 5 開始時刻 : 2026-04-07 09:00:00 終了時刻 : 2026-04-07 09:00:45 インストール済み : httpd-2.4.57-11.el9.x86_64

2. 操作を取り消す(dnf history undo)

# ID=5のインストール操作を取り消す(httpdを削除) [root@server ~]# dnf history undo 5 依存関係が解決しました。 ... 削除中: httpd-2.4.57-11.el9.x86_64 完了しました! # 最後の操作を取り消す場合 [root@server ~]# dnf history undo last

キャッシュ管理とその他の便利なコマンド

# キャッシュをクリアする(リポジトリメタデータの更新トラブル時に有効) [root@server ~]# dnf clean all 12 ファイルを削除しました。 # メタデータキャッシュを更新する [root@server ~]# dnf makecache # パッケージが提供するファイルを検索する [root@server ~]# dnf provides /usr/bin/python3 python3-3.9.18-3.el9.x86_64 : Interpreter of the Python programming language # 特定のパッケージが提供するファイル一覧を表示する [root@server ~]# dnf repoquery -l httpd | head -10 /etc/httpd /etc/httpd/conf /etc/httpd/conf.d /etc/httpd/conf.modules.d /usr/lib/systemd/system/httpd.service

トラブルシュート:よくあるエラーと対処法

1. 「Error: Failed to download metadata for repo」

[root@server ~]# dnf update エラー: リポジトリー 'extras' のメタデータのダウンロードに失敗しました

ネットワーク接続の問題かリポジトリサーバーの障害が考えられます。まずキャッシュをクリアしてリトライしてください。

[root@server ~]# dnf clean all && dnf update

2. 「GPG key retrieval failed」

[root@server ~]# dnf install パッケージ名 ... GPGキーの取得に失敗しました: https://...

追加したリポジトリのGPGキーが正しく設定されていない状態です。リポジトリの公式ドキュメントに従ってGPGキーをインポートしてください。

# GPGキーをインポート [root@server ~]# rpm --import https://example.com/RPM-GPG-KEY-example

3. 「Nothing to do」でインストールできない

[root@server ~]# dnf install パッケージ名 Nothing to do.

既にインストール済みか、パッケージ名が間違っているケースがほとんどです。dnf searchで正しいパッケージ名を確認してください。

本記事のまとめ

やりたいこと コマンド
パッケージをインストールする dnf install パッケージ名
確認プロンプトなしでインストール dnf install -y パッケージ名
パッケージをアップデートする dnf update パッケージ名
システム全体をアップデートする dnf update
パッケージを削除する dnf remove パッケージ名
パッケージを検索する dnf search キーワード
パッケージ情報を確認する dnf info パッケージ名
インストール済みか確認する dnf list installed パッケージ名
有効なリポジトリを確認する dnf repolist
グループをインストールする dnf groupinstall "グループ名"
操作履歴を確認する dnf history
操作を取り消す dnf history undo ID
キャッシュをクリアする dnf clean all
ファイルを提供するパッケージを調べる dnf provides /usr/bin/コマンド名
RHEL9/Rocky Linux9への移行後も、コマンド名がyumのままでも動作しますが、新機能(historyのundo、モジュール管理等)を活用するためにdnfコマンドを積極的に使いましょう。

dnf/yumを含むLinuxサーバー管理を体系的に学びませんか?

パッケージ管理はサーバー構築・運用の基本中の基本です。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


無料メルマガで学習を続ける

Linuxの実践スキルをメールで毎週お届け。
登録は1分、解除もいつでも可。

登録無料・いつでも解除できます

暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。