【決定版】dnfコマンド完全マニュアル|基本から応用・トラブル対策まで網羅!

Linux

CentOS 8、Fedora、RHEL 8以降を使っている方にとって、「dnf」コマンドはパッケージ管理の中心的存在です。

「パッケージをインストールしたい」
「依存関係を解決したい」
「古いバージョンを削除したい」
「システムをアップデートしたい」
など、あらゆる管理操作がdnfで完結します。

この記事では、初心者にもやさしく、実務で使えるdnfコマンドの完全ガイドをお届けします。

基本的な使い方から、応用テクニック、トラブルシューティングまで網羅しています。

スポンサーリンク
  1. dnfとは?yumとの違いを理解しよう
    1. dnfとは
    2. yumとdnfの違い
    3. dnfを使用しているディストリビューション
    4. コマンド互換性
  2. dnfの基本コマンド一覧
    1. パッケージのインストール
    2. パッケージの削除
    3. システム全体のアップデート
    4. パッケージの検索
    5. パッケージの詳細情報確認
    6. キャッシュ管理
  3. dnfコマンドの実践テクニックと便利機能
    1. 特定パッケージのみアップグレード
    2. 古い未使用パッケージの削除
    3. パッケージグループの操作
    4. バージョン管理とダウングレード
    5. リポジトリ管理
    6. 履歴管理
    7. パッケージファイルからのインストール
  4. dnfでよくあるトラブルとその対策
    1. ① パッケージが見つからない
    2. ② 依存関係のエラー
    3. ③ キャッシュ破損によるエラー
    4. ④ ネットワーク接続エラー
    5. ⑤ ディスク容量不足
    6. ⑥ ロックファイルの問題
  5. dnfの便利な設定とカスタマイズ
    1. 設定ファイルの場所と編集
    2. ログの確認と分析
    3. 自動アップデート(dnf-automatic)
    4. エイリアスとショートカット
    5. プラグインの活用
  6. 高度なdnf活用テクニック
    1. カスタムリポジトリの作成
    2. モジュール管理(Fedora/RHEL 8以降)
    3. 高度な検索とフィルタリング
    4. セキュリティ管理
  7. パフォーマンス最適化
    1. ネットワーク最適化
    2. キャッシュ最適化
  8. よくある質問と回答
    1. Q: yumコマンドはまだ使える?
    2. Q: dnfとapt(Ubuntu)の違いは?
    3. Q: dnfが遅い場合の対処法は?
    4. Q: パッケージの署名検証はどうすれば?
  9. まとめ:dnfコマンドをマスターすれば、Red Hat系Linuxがもっと快適に!

dnfとは?yumとの違いを理解しよう

dnfとは

dnf(Dandified YUM)は、Fedoraプロジェクトが開発した次世代のパッケージマネージャーです。

従来のyumコマンドの後継として設計され、高速・効率的・堅牢な依存関係解決が特徴です。

yumとdnfの違い

比較項目yumdnf
パフォーマンス遅め高速(約2-3倍)
依存関係処理時々失敗する安定・正確
メモリ使用量多め効率的
プラグイン対応限定的拡張性が高い
開発状況メンテナンスモード継続開発中
エラーメッセージ分かりにくいより詳細で分かりやすい

dnfを使用しているディストリビューション

ディストリビューションデフォルトパッケージマネージャー
Fedora 22以降dnf
CentOS 8以降dnf
RHEL 8以降dnf
Rocky Linuxdnf
AlmaLinuxdnf
CentOS 7以前yum(dnfも利用可能)

コマンド互換性

重要: 基本的なコマンドはyumとほぼ同じです。

# yumからdnfへの移行は簡単
yum install package → dnf install package
yum remove package  → dnf remove package
yum update         → dnf upgrade

ポイント: dnfはyumの上位互換であり、今後のRed Hat系ディストリビューションでの標準ツールです。

dnfの基本コマンド一覧

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

基本的なインストール:

sudo dnf install パッケージ名

具体例:

# Webサーバーのインストール
sudo dnf install httpd

# 開発ツールのインストール
sudo dnf install git vim gcc

# 複数パッケージの同時インストール
sudo dnf install httpd mariadb-server php

確認プロンプトをスキップ:

sudo dnf install -y パッケージ名

パッケージの削除

基本的な削除:

sudo dnf remove パッケージ名

具体例:

# 不要なパッケージを削除
sudo dnf remove firefox

# 設定ファイルも含めて完全削除
sudo dnf remove --purge パッケージ名

システム全体のアップデート

全パッケージの更新:

sudo dnf upgrade

セキュリティアップデートのみ:

sudo dnf upgrade --security

アップデート可能パッケージの確認:

dnf check-update

パッケージの検索

キーワード検索:

dnf search キーワード

具体例:

# Webサーバー関連パッケージを検索
dnf search web server

# テキストエディター関連を検索
dnf search editor

# データベース関連を検索
dnf search database

パッケージ名での部分一致検索:

dnf list "*keyword*"

パッケージの詳細情報確認

パッケージの詳細情報:

dnf info パッケージ名

インストール済みパッケージの確認:

dnf list installed

特定パッケージがインストール済みか確認:

dnf list installed | grep パッケージ名

キャッシュ管理

全キャッシュのクリア:

sudo dnf clean all

メタデータのみクリア:

sudo dnf clean metadata

キャッシュの再構築:

sudo dnf makecache

ポイント: 日常的なインストールや削除、アップデート操作はdnfで完結します。

dnfコマンドの実践テクニックと便利機能

特定パッケージのみアップグレード

# 特定パッケージのみ更新
sudo dnf upgrade パッケージ名

# 例:Apacheのみアップデート
sudo dnf upgrade httpd

古い未使用パッケージの削除

# 依存関係がなくなったパッケージを自動削除
sudo dnf autoremove

# インストール時に同時に入った不要パッケージも削除
sudo dnf autoremove --orphans

パッケージグループの操作

グループの一覧表示:

dnf group list

グループのインストール:

# デスクトップ環境のインストール
sudo dnf groupinstall "Server with GUI"

# 開発ツール群のインストール
sudo dnf groupinstall "Development Tools"

# Webサーバー環境のインストール
sudo dnf groupinstall "Web Server"

グループの削除:

sudo dnf groupremove "グループ名"

バージョン管理とダウングレード

利用可能なバージョンの確認:

dnf list --showduplicates パッケージ名

特定バージョンのインストール:

sudo dnf install パッケージ名-バージョン番号

ダウングレード:

sudo dnf downgrade パッケージ名

リポジトリ管理

リポジトリの一覧表示:

dnf repolist

すべてのリポジトリ(無効も含む):

dnf repolist --all

特定リポジトリからのインストール:

sudo dnf install --enablerepo=リポジトリ名 パッケージ名

リポジトリの有効化・無効化:

# 有効化
sudo dnf config-manager --set-enabled リポジトリ名

# 無効化
sudo dnf config-manager --set-disabled リポジトリ名

履歴管理

操作履歴の確認:

dnf history

特定の操作を元に戻す:

sudo dnf history undo ID番号

特定の操作をやり直す:

sudo dnf history redo ID番号

パッケージファイルからのインストール

ローカルRPMファイルのインストール:

sudo dnf localinstall /path/to/package.rpm

URLからの直接インストール:

sudo dnf install https://example.com/package.rpm

ポイント: dnfにはyumでは難しかった高度な操作や自動化機能が標準で備わっています。

dnfでよくあるトラブルとその対策

① パッケージが見つからない

症状:

No match for argument: パッケージ名

対策1:リポジトリの更新

sudo dnf makecache

対策2:EPELリポジトリの追加(RHEL/CentOS系)

# EPEL(Extra Packages for Enterprise Linux)を追加
sudo dnf install epel-release

# 確認
dnf repolist | grep epel

対策3:RPM Fusionリポジトリの追加(Fedora)

sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm

対策4:パッケージ名の確認

# 部分一致で検索
dnf search パッケージ名の一部

② 依存関係のエラー

症状:

Error: Problem: conflicting requests
  - nothing provides dependency needed by package

対策1:依存関係の確認

sudo dnf check

対策2:破損した依存関係の修復

sudo dnf distro-sync

対策3:強制的な依存関係解決

sudo dnf install --best --allowerasing パッケージ名

③ キャッシュ破損によるエラー

症状:

Metadata file does not match checksum

対策:

# キャッシュを完全にクリア
sudo dnf clean all

# メタデータを再取得
sudo dnf makecache

④ ネットワーク接続エラー

症状:

Cannot retrieve metalink for repository

対策1:DNS設定の確認

# DNS設定を確認
cat /etc/resolv.conf

# Google DNSに変更(一時的)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf

対策2:プロキシ設定

# プロキシ設定をdnf.confに追加
sudo vi /etc/dnf/dnf.conf

# 以下を追加
proxy=http://proxy.example.com:8080
proxy_username=username
proxy_password=password

対策3:ミラーサーバーの問題

# 最速ミラーの再選択
sudo dnf clean all
sudo dnf makecache --refresh

⑤ ディスク容量不足

症状:

Disk Requirements: At least XMB more space needed

対策:

# 不要パッケージの削除
sudo dnf autoremove

# キャッシュのクリア
sudo dnf clean all

# ディスク使用量の確認
df -h
du -sh /var/cache/dnf/

⑥ ロックファイルの問題

症状:

Another app is currently holding the yum lock

対策:

# プロセスの確認
ps aux | grep dnf

# 強制的にロックを解除(注意して実行)
sudo rm -f /var/run/dnf.pid

ポイント: dnfのエラーはキャッシュ・依存・リポジトリが原因であることが多く、基本的なチェックで解決できます。

dnfの便利な設定とカスタマイズ

設定ファイルの場所と編集

メイン設定ファイル:

/etc/dnf/dnf.conf

よく使う設定項目:

[main]
# GPGチェックを有効化(セキュリティ強化)
gpgcheck=1

# 最速ミラーを自動選択
fastestmirror=True

# ダウンロードキャッシュを保持
keepcache=True

# 同時ダウンロード数を増加(高速化)
max_parallel_downloads=10

# トランザクション確認をスキップ
assumeyes=False

# デルタRPMを使用(帯域節約)
deltarpm=True

# ログレベル設定
debuglevel=2

# タイムアウト設定
timeout=30

# 除外パッケージの設定
exclude=kernel*

ログの確認と分析

dnfログファイルの場所:

/var/log/dnf.log
/var/log/dnf.rpm.log
/var/log/dnf.librepo.log

ログの確認方法:

# 最新のdnf操作ログ
sudo tail -f /var/log/dnf.log

# 特定日付のログ
grep "2024-01-15" /var/log/dnf.log

# エラーログのみ抽出
grep -i error /var/log/dnf.log

自動アップデート(dnf-automatic)

dnf-automaticのインストール:

sudo dnf install dnf-automatic

設定ファイルの編集:

sudo vi /etc/dnf/automatic.conf

主要設定項目:

[commands]
# アップデートの種類(security, bugfix, enhancement, newpackage)
upgrade_type = security

# 自動適用するか(yes/no)
apply_updates = no

[emitters]

# 通知方法の設定 emit_via = email

[email]

# メール通知設定 email_from = root@localhost email_to = admin@example.com email_host = localhost

サービスの有効化:

# セキュリティアップデートのみ自動適用
sudo systemctl enable --now dnf-automatic.timer

# または、ダウンロードのみ(適用は手動)
sudo systemctl enable --now dnf-automatic-download.timer

エイリアスとショートカット

bashrcへの追加:

echo 'alias dnfu="sudo dnf upgrade"' >> ~/.bashrc
echo 'alias dnfi="sudo dnf install"' >> ~/.bashrc
echo 'alias dnfr="sudo dnf remove"' >> ~/.bashrc
echo 'alias dnfs="dnf search"' >> ~/.bashrc
echo 'alias dnfinfo="dnf info"' >> ~/.bashrc
source ~/.bashrc

プラグインの活用

便利なプラグイン:

# システム情報表示プラグイン
sudo dnf install dnf-plugins-core

# 設定管理プラグイン
sudo dnf install python3-dnf-plugin-config-manager

# ローカルプラグイン
sudo dnf install python3-dnf-plugin-local

config-managerプラグインの使用例:

# リポジトリの追加
sudo dnf config-manager --add-repo https://example.com/repo.repo

# リポジトリの有効化・無効化
sudo dnf config-manager --set-enabled reponame
sudo dnf config-manager --set-disabled reponame

高度なdnf活用テクニック

カスタムリポジトリの作成

ローカルリポジトリの作成:

# 必要ツールのインストール
sudo dnf install createrepo

# リポジトリディレクトリの作成
sudo mkdir -p /var/local/repo

# RPMファイルを配置
sudo cp *.rpm /var/local/repo/

# リポジトリメタデータの生成
sudo createrepo /var/local/repo/

リポジトリ設定ファイルの作成:

sudo vi /etc/yum.repos.d/local.repo
[local]
name=Local Repository
baseurl=file:///var/local/repo
enabled=1
gpgcheck=0

モジュール管理(Fedora/RHEL 8以降)

利用可能モジュールの確認:

dnf module list

特定モジュールの詳細:

dnf module info モジュール名

モジュールのインストール:

sudo dnf module install モジュール名:ストリーム

例:Node.jsの特定バージョンをインストール:

# 利用可能なNode.jsモジュールを確認
dnf module list nodejs

# Node.js 14をインストール
sudo dnf module install nodejs:14

高度な検索とフィルタリング

ファイルでパッケージを検索:

# ファイルを含むパッケージを検索
dnf provides /usr/bin/gcc

# 設定ファイルを含むパッケージを検索
dnf provides /etc/httpd/conf/httpd.conf

複雑な検索クエリ:

# 特定のグループに属するパッケージ
dnf group info "Development Tools"

# アーキテクチャ別の検索
dnf list --arch=x86_64

# 特定リポジトリのパッケージのみ
dnf list --repo=epel

セキュリティ管理

脆弱性情報の確認:

# セキュリティアップデートの確認
dnf updateinfo list security

# 特定CVEの影響確認
dnf updateinfo info CVE-2024-XXXX

セキュリティレベル別のアップデート:

# 重要度別フィルタ
sudo dnf upgrade --sec-severity=Critical
sudo dnf upgrade --sec-severity=Important

パフォーマンス最適化

ネットワーク最適化

# 並列ダウンロード数の増加
echo "max_parallel_downloads=20" | sudo tee -a /etc/dnf/dnf.conf

# 高速ミラーの使用
echo "fastestmirror=True" | sudo tee -a /etc/dnf/dnf.conf

# メタデータの有効期限設定
echo "metadata_expire=7d" | sudo tee -a /etc/dnf/dnf.conf

キャッシュ最適化

# キャッシュサイズの確認
du -sh /var/cache/dnf/

# 古いキャッシュの定期削除(cron設定)
echo "0 2 * * 0 root /usr/bin/dnf clean packages" | sudo tee -a /etc/crontab

よくある質問と回答

Q: yumコマンドはまだ使える?

A: 多くの場合、yumはdnfへのシンボリックリンクになっています

# 確認方法
ls -la /usr/bin/yum

# 多くの場合、以下のような出力
/usr/bin/yum -> dnf-3

基本的なコマンドは互換性がありますが、新機能を使うためにはdnfの使用を推奨します。

Q: dnfとapt(Ubuntu)の違いは?

A: パッケージ管理システムが異なります

項目dnf(Red Hat系)apt(Debian系)
パッケージ形式RPMDEB
設定ディレクトリ/etc/dnf//etc/apt/
キャッシュ場所/var/cache/dnf//var/cache/apt/
リポジトリ設定.repo ファイルsources.list

Q: dnfが遅い場合の対処法は?

A: 以下の最適化を試してください

  1. ミラーサーバーの最適化
  2. 並列ダウンロード数の増加
  3. キャッシュのクリア
  4. デルタRPMの無効化(場合によって)

Q: パッケージの署名検証はどうすれば?

A: GPGキーの管理で対応します

# GPGキーの一覧表示
rpm -qa gpg-pubkey*

# GPGキーのインポート
sudo rpm --import https://example.com/RPM-GPG-KEY

# 署名検証の強制
echo "gpgcheck=1" | sudo tee -a /etc/dnf/dnf.conf

まとめ:dnfコマンドをマスターすれば、Red Hat系Linuxがもっと快適に!

今回学んだポイント:

  • 基本操作:install、remove、upgrade、searchなどの日常コマンド
  • 高度な機能:グループ管理、モジュール管理、履歴管理
  • トラブル対策:よくあるエラーとその解決法
  • カスタマイズ:設定ファイルの最適化と自動化
  • セキュリティ:自動アップデートと脆弱性管理

実際に使ってみよう:

  1. 基本的なパッケージ操作を練習する
  2. システムアップデートを定期的に実行
  3. dnf-automaticで自動化を設定
  4. ログ監視でシステムの健全性をチェック

コメント

タイトルとURLをコピーしました