yum・dnfコマンドでパッケージを管理する方法|インストールからリポジトリ設定まで

宮崎智広 この記事の監修:宮崎智広(Linux実務・教育歴20年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)【Linux入門】初心者のための基礎知識・講座 > yum・dnfコマンドでパッケージを管理する方法|インストールからリポジトリ設定まで
「Linuxにパッケージをインストールしたいけど、yumとdnfのどちらを使えばいいのかわからない」
「リポジトリのエラーが出て、パッケージのインストールが進まない」

Red Hat系Linux(RHEL、CentOS、AlmaLinux、Rocky Linux等)では、パッケージ管理にyumまたはdnfコマンドを使います。RHEL8以降ではdnfが標準ですが、yumコマンドもそのまま使えます。
この記事では、yum/dnfの基本操作からリポジトリ管理、GPGキー検証、トラブル対処まで、現場で必要な知識をまとめて解説します。
【この記事のポイント】
・RHEL8以降はdnfが標準。yumコマンドもそのまま使えるので移行コストは低い
・パッケージのインストール・削除・更新・検索、履歴管理、トランザクションの取り消しまで解説
・EPELなどリポジトリ追加、GPGキー検証、「Nothing to do」などよくあるエラーへの対処も網羅

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

yumとdnfの違い(どちらを使えばいいのか)

dnfはyumの後継として開発されたパッケージマネージャです。依存関係の解決が高速化され、メモリ使用量も改善されています。

まず、現在使っているOSのバージョンを確認しましょう。

# 現在のOSバージョンを確認する cat /etc/os-release

AlmaLinux 9 や Rocky Linux 9 の場合は「ID_LIKE="rhel centos fedora"」のように表示されます。この表示が出たら、dnfを使います。

バージョン別の使い分けは以下の通りです。

RHEL7/CentOS7以前:yumを使う(dnfは標準では入っていない)
RHEL8/CentOS8以降:dnfが標準。yumはdnfへのシンボリックリンクになっている
RHEL9/AlmaLinux9/Rocky Linux9:dnfが標準。yumコマンドも引き続き使える

つまり、RHEL8以降では「yum install httpd」と打っても「dnf install httpd」と打っても、実行されるのは同じdnfです。

# RHEL8以降でyumの実体を確認 ls -l /usr/bin/yum # 出力例: /usr/bin/yum -> dnf-3

本記事ではdnfを基本の表記としつつ、yumでも同じコマンドが使えることを併記します。RHEL7環境の方は「dnf」を「yum」に読み替えてください。

※rpmコマンドとの違い:rpmは個別の.rpmファイルを直接操作するコマンドです。依存関係の自動解決はできません。dnf/yumはリポジトリ(パッケージの配布元サーバー)から依存パッケージも含めて自動でダウンロード・インストールしてくれます。

基本的な使い方(インストール・削除・更新)

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

# httpdをインストール sudo dnf install httpd # 確認プロンプトを省略して自動でyesを返す(-y) sudo dnf install -y httpd # 複数パッケージを同時にインストール sudo dnf install -y httpd php php-mysqlnd

-y オプションを付けると確認なしでインストールが進みます。スクリプトで自動化する場合に使いますが、手動作業では確認メッセージを読む習慣をつけてください。依存関係で想定外のパッケージが入ることがあります。

実際のインストール時の出力例(treeコマンドをインストールした場合):

[user@sv-web01 ~]$ sudo dnf install -y tree Last metadata expiration check: 0:02:15 ago on Sun 13 Jul 2026 08:30:00 JST. Dependencies resolved. ==================================================== Package Arch Version Repository Size ==================================================== Installing: tree x86_64 2.1.1-1.el9 appstream 59 k Transaction Summary ==================================================== Install 1 Package Total download size: 59 k Installed size: 109 k Downloading Packages: tree-2.1.1-1.el9.x86_64.rpm | 59 kB 00:01 Running transaction check Running transaction test Transaction test succeeded. Running transaction Installing : tree-2.1.1-1.el9.x86_64 1/1 Verifying : tree-2.1.1-1.el9.x86_64 1/1 Installed: tree.x86_64 2.1.1-1.el9 Complete!

「Complete!」と表示されれば成功です。「Transaction test succeeded.」のあと実際にインストールが実行されます。

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

# httpdを削除 sudo dnf remove httpd # 確認なしで削除 sudo dnf remove -y httpd

removeは、指定したパッケージと「そのパッケージに依存している他のパッケージ」も一緒に削除します。実行前に表示される削除対象リストを必ず確認してください。

3. パッケージを更新する(dnf update)

# 特定のパッケージを更新 sudo dnf update httpd # インストール済みの全パッケージを更新 sudo dnf update # セキュリティ関連のアップデートだけ適用 sudo dnf update --security

パッケージ名を省略すると全パッケージが更新対象になります。本番サーバーでは影響範囲を限定するために、パッケージ名を指定して個別に更新するのが安全です。

更新可能なパッケージを事前に確認するには、以下を使います。

# 更新可能なパッケージの一覧を表示 dnf check-update # 実行例(Rocky Linux 9.4 / 検証環境) [user@sv-web01 ~]$ dnf check-update Last metadata expiration check: 0:00:02 ago on Sun 13 Jul 2026 08:30:00 JST. bash.x86_64 5.1.8-9.el9_4 baseos openssl.x86_64 3.0.7-28.el9_4 baseos vim-enhanced.x86_64 8.2.2637-20.el9 appstream

セキュリティパッチの有無まで確認したい場合は `dnf updateinfo list security` も合わせて活用してください。

4. インストール済みパッケージを一覧表示する

# インストール済みパッケージの一覧 dnf list installed # キーワードで絞り込む dnf list installed | grep php # 利用可能な全パッケージ(インストール済み+未インストール) dnf list available

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

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

パッケージ名や説明文からキーワード検索できます。

# パッケージを検索 dnf search httpd # 名前だけでなく説明文も含めて検索 dnf search all "web server"

パッケージの詳細情報を確認する(dnf info)

バージョン、リリース、アーキテクチャ、リポジトリなどを確認できます。

# パッケージの詳細情報を表示 dnf info httpd # 出力例 Name : httpd Version : 2.4.57 Release : 11.el9_4.1 Architecture : x86_64 Size : 59 k Source : httpd-2.4.57-11.el9_4.1.src.rpm Repository : appstream Summary : Apache HTTP Server

あるファイルがどのパッケージに含まれるか調べる(dnf provides)

「このコマンドが使えない。どのパッケージをインストールすればいいのか」という場面で役立ちます。

# /usr/sbin/httpdがどのパッケージに含まれるか調べる dnf provides /usr/sbin/httpd # コマンド名でも検索可能 dnf provides dig # ワイルドカードも使える dnf provides "*/nslookup"

リポジトリの管理

リポジトリとは、パッケージの配布元サーバーのことです。dnf/yumはリポジトリからパッケージをダウンロードしてインストールします。

有効なリポジトリを一覧表示する

# 有効なリポジトリの一覧 dnf repolist # 無効なリポジトリも含めて全て表示 dnf repolist all

EPELリポジトリを追加する

EPEL(Extra Packages for Enterprise Linux)は、Red Hat系OSで使える追加パッケージのリポジトリです。標準リポジトリにないツール(htop、jq等)をインストールする際に必要です。

# RHEL9/AlmaLinux9/Rocky Linux9の場合 sudo dnf install -y epel-release # RHEL8/CentOS8の場合 sudo dnf install -y epel-release # CentOS7の場合 sudo yum install -y epel-release # EPELが追加されたことを確認 dnf repolist | grep epel

※RHEL公式サブスクリプション環境では、事前にCodeReadyリポジトリ(RHEL8)またはCRBリポジトリ(RHEL9)を有効にする必要があります。

# RHEL9の場合:CRBリポジトリを有効化してからEPELを追加 sudo dnf config-manager --set-enabled crb sudo dnf install -y epel-release

GPGキー検証(リポジトリの信頼性確認)

リポジトリを追加するとき、パッケージの正当性はGPGキー(電子署名)によって保証されます。dnfはデフォルトでGPGキーを検証しますが、手動で確認・インポートが必要な場面もあります。

# インポート済みのGPGキーを一覧表示 rpm -q gpg-pubkey --qf '%{NAME}-%{VERSION}-%{RELEASE} %{SUMMARY} ' # リポジトリのGPGキーURLを確認(.repoファイルのgpgkey行) grep gpgkey /etc/yum.repos.d/epel.repo # GPGキーを手動でインポートする sudo rpm --import https://dl.fedoraproject.org/pub/epel/RPM-GPG-KEY-EPEL-9

GPGキーの検証をスキップ(--nogpgcheck)することは、セキュリティ上の観点から本番環境では鉄則として避けてください。キーが自動インポートされない場合は、公式サイトから正しいGPGキーURLを取得してインポートしてください。

特定のリポジトリを一時的に有効・無効にする

普段は無効にしているリポジトリから、一時的にパッケージをインストールしたい場面で使います。

# 特定のリポジトリを一時的に有効にしてインストール sudo dnf install --enablerepo=epel-testing パッケージ名 # 特定のリポジトリを一時的に無効にしてインストール sudo dnf install --disablerepo=epel パッケージ名 # リポジトリを恒久的に有効化・無効化 sudo dnf config-manager --set-enabled リポジトリ名 sudo dnf config-manager --set-disabled リポジトリ名

応用・実務Tips

dnf historyでインストール履歴を確認・取り消す

「いつ、何をインストールしたか」を確認できます。誤ってインストールしたパッケージを元に戻す(undo)機能もあります。

# インストール・削除・更新の履歴を表示 dnf history # 特定のトランザクションの詳細を確認 dnf history info 15 # 特定のトランザクションを取り消す(元に戻す) sudo dnf history undo 15

undoは指定したトランザクションの操作を逆転させます。installをundoすればremoveされ、removeをundoすれば再インストールされます。

dnf groupinstallでパッケージグループをまとめて導入する

開発ツール一式など、関連するパッケージをグループとしてまとめてインストールできます。

# 利用可能なグループの一覧を表示 dnf group list # 開発ツール一式をインストール sudo dnf groupinstall "Development Tools" # グループに含まれるパッケージを確認 dnf group info "Development Tools"

キャッシュの管理(dnf clean)

dnfはダウンロードしたパッケージやメタデータをキャッシュとして保存します。ディスク容量が逼迫した場合や、リポジトリ情報を最新に更新したい場合にキャッシュを削除します。

# 全てのキャッシュを削除 sudo dnf clean all # メタデータのキャッシュだけ削除 sudo dnf clean metadata # キャッシュを再構築 sudo dnf makecache

リポジトリの設定を変更した後は「dnf clean all」→「dnf makecache」の順で実行するのが定番です。

トラブルシュート・エラー対処

「Cannot find a valid baseurl for repo」が出た時の対処法

このエラーは、リポジトリのURLに接続できない場合に発生します。

主な原因と対処方法は以下の通りです。

ネットワーク未接続:pingでインターネット接続を確認する
DNSが未設定:/etc/resolv.confにネームサーバーが設定されているか確認する
リポジトリURLが古い:CentOS 8はEOL(サポート終了)のため、mirrorlistが無効になっている

# ネットワーク接続を確認 ping -c 3 8.8.8.8 # DNS解決を確認 ping -c 3 google.com # リポジトリ設定ファイルを確認 cat /etc/yum.repos.d/CentOS-Base.repo

CentOS 8のEOL問題の場合は、vault.centos.orgへの切り替えが必要です。ただし、本番環境では後継OSへの移行を検討してください。

「Another app is currently holding the yum lock」の解消法

別のdnf/yumプロセスが実行中か、前回のプロセスが異常終了してロックファイルが残っている場合に発生します。

# 1. 他のdnf/yumプロセスが動いていないか確認 ps aux | grep -E "dnf|yum" | grep -v grep # 2. プロセスが見つかった場合は終了を待つ # 見つからない場合はロックファイルが残っているので削除 # RHEL7/CentOS7の場合 sudo rm -f /var/run/yum.pid # RHEL8以降の場合 sudo rm -f /var/cache/dnf/metadata_lock.pid # 3. それでも解消しない場合 sudo kill プロセスID

※自動アップデート(dnf-automatic)が裏で動いている場合もあります。cronやtimerを確認してください。

依存関係エラーが出た時の対処法

「Error: Problem: conflicting requests」や「nothing provides」と表示された場合の対処です。

# 1. キャッシュをクリアして再試行 sudo dnf clean all sudo dnf makecache sudo dnf install パッケージ名 # 2. 依存関係を無視して強制インストール(非推奨・最終手段) sudo rpm -ivh --nodeps パッケージ名.rpm # 3. 壊れた依存関係を検出 sudo dnf repoquery --unsatisfied # 4. 不要な依存パッケージを一括削除 sudo dnf autoremove

依存関係の強制無視(--nodeps)は最終手段です。根本原因はリポジトリの不整合であることが多いので、まずはdnf clean allとリポジトリ設定の確認を行ってください。

「Nothing to do」と表示されてインストールが実行されない場合

`sudo dnf install パッケージ名` を実行したのに「Nothing to do.」と表示されてインストールが行われない場合があります。エラーではなく「すでにインストール済みか、インストールの必要がない状態」を意味します。

# インストール済みかどうかを確認する rpm -q パッケージ名 # 出力例(インストール済みの場合) httpd-2.4.57-11.el9_4.1.x86_64 # 出力例(未インストールの場合) package httpd is not installed

「Nothing to do.」が出るにもかかわらず `rpm -q` でも未インストールと表示される場合は、キャッシュが古くなっているケースが多いです。`sudo dnf clean all && sudo dnf makecache` でキャッシュをリフレッシュしてから再実行してください。パッケージ名のスペルミスや、別名でインストール済みになっているケース(例:netcatがnetcat-openbsdという名前で登録されている)も確認してください。

関連記事:dnf / yum でカーネルを更新するときに、CVE対応の有無まで踏み込んで確認する手順は CVE-2026-31431「Copy Fail」とLinuxサーバー管理者が今日打つべき一手 に整理しました。changelog で CVE 番号を grep する方法を含みます。

本記事のまとめ

やりたいこと コマンド
パッケージをインストールする sudo dnf install パッケージ名
パッケージを削除する sudo dnf remove パッケージ名
パッケージを更新する sudo dnf update パッケージ名
全パッケージを更新する sudo dnf update
更新可能なパッケージを確認する dnf check-update
インストール済みパッケージを一覧表示する dnf list installed
パッケージを検索する dnf search キーワード
パッケージの詳細情報を確認する dnf info パッケージ名
ファイルからパッケージを逆引きする dnf provides ファイルパス
有効なリポジトリを一覧表示する dnf repolist
EPELリポジトリを追加する sudo dnf install -y epel-release
インストール履歴を確認する dnf history
操作を取り消す sudo dnf history undo トランザクションID
キャッシュを全て削除する sudo dnf clean all

パッケージ管理を軸に、安全なLinuxサーバー運用の基礎を身につけませんか?

yum/dnfの操作ミスは本番環境のサービス停止に直結します。だからこそ「なぜそうするのか」まで理解した運用が求められます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

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

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

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

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

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

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

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

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

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

この記事を書いた人

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

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

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