このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。

Linux基礎:パッケージの管理(DNF)

パッケージの管理(DNF)

 Linux の世界では、ソフトウェアの導入や管理を効率的に行うために パッケージ管理システム が使われます。Rocky Linux をはじめとする Red Hat 系ディストリビューションでは、基本的に RPM 形式のパッケージが利用されますが、その依存関係を自動的に解決し、オンラインリポジトリからダウンロード・更新できる仕組みとして DNF(Dandified YUM) が導入されています。

 RPM コマンドでは依存関係を手動で解決する必要がありましたが、DNF は必要なパッケージを自動的に取得し、まとめて処理してくれるため、管理者にとって非常に便利です。ここでは、Rocky Linux 上で DNF を使ったパッケージ管理の基本を解説します。

1.DNFとは

1.1. DNFの役割

 DNF は RPM パッケージを管理するためのフロントエンドであり、以下のような特徴を持ちます。

特徴説明
依存関係の自動解決必要なパッケージを自動的に検索・インストール
オンラインリポジトリ対応インターネット上のサーバからパッケージを取得
更新機能システム全体や個別パッケージを簡単にアップデート
YUM互換以前の YUM コマンドとも互換性があり、yum と入力しても利用可能

 RPM コマンドと異なり、パッケージファイルを事前にダウンロードする必要がないのが大きな利点です。

1.2. DNFコマンドの基本書式

dnf サブコマンド [オプション] [パッケージ名]

サブコマンドによって、インストール・削除・更新・検索などの動作を指定します。

2.DNFコマンドの基本操作

2.1. 主なサブコマンド

サブコマンド説明
install パッケージ名パッケージをインストールする。
remove パッケージ名パッケージをアンインストールする。
update パッケージ名パッケージをアップデートする。
updateシステム全体をアップデートする。
listパッケージの一覧を表示する。
info パッケージ名パッケージの詳細情報を表示する。
search キーワードキーワードを含むパッケージを検索する。

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

例として、nginx をインストールする場合の手順です。

インストールするには、rootユーザーで行う必要があります。

[user@rocky9 ~]$ dnf install nginx
エラー: このコマンドはスーパーユーザー特権(大概のシステムではrootユーザー)で実行しなければいけません。
[user@rocky9 ~]$ su -
パスワード:
[root@rocky9 ~]# dnf install nginx
Rocky Linux 9 - BaseOS                          4.9 kB/s | 4.1 kB     00:00    
Rocky Linux 9 - AppStream                       5.3 kB/s | 4.5 kB     00:00    
Rocky Linux 9 - Extras                          3.4 kB/s | 2.9 kB     00:00    
依存関係が解決しました。
================================================================================
 パッケージ            Arch       バージョン                リポジトリー  サイズ
================================================================================
インストール:
 nginx                 x86_64     2:1.20.1-22.el9_6.3       appstream      36 k
依存関係のインストール:
 nginx-core            x86_64     2:1.20.1-22.el9_6.3       appstream     566 k
 nginx-filesystem      noarch     2:1.20.1-22.el9_6.3       appstream     9.6 k
 rocky-logos-httpd     noarch     90.16-1.el9               appstream      24 k

トランザクションの概要
================================================================================
インストール  4 パッケージ

ダウンロードサイズの合計: 636 k
インストール後のサイズ: 1.8 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/4): rocky-logos-httpd-90.16-1.el9.noarch.rpm 293 kB/s |  24 kB     00:00    
(2/4): nginx-filesystem-1.20.1-22.el9_6.3.noarc 109 kB/s | 9.6 kB     00:00    
(3/4): nginx-1.20.1-22.el9_6.3.x86_64.rpm       397 kB/s |  36 kB     00:00    
(4/4): nginx-core-1.20.1-22.el9_6.3.x86_64.rpm  5.6 MB/s | 566 kB     00:00    
--------------------------------------------------------------------------------
合計                                            674 kB/s | 636 kB     00:00     
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                        1/1 
  scriptletの実行中: nginx-filesystem-2:1.20.1-22.el9_6.3.noarch            1/4 
  インストール中   : nginx-filesystem-2:1.20.1-22.el9_6.3.noarch            1/4 
  インストール中   : nginx-core-2:1.20.1-22.el9_6.3.x86_64                  2/4 
  インストール中   : rocky-logos-httpd-90.16-1.el9.noarch                   3/4 
  インストール中   : nginx-2:1.20.1-22.el9_6.3.x86_64                       4/4 
  scriptletの実行中: nginx-2:1.20.1-22.el9_6.3.x86_64                       4/4 
  検証中           : nginx-filesystem-2:1.20.1-22.el9_6.3.noarch            1/4 
  検証中           : rocky-logos-httpd-90.16-1.el9.noarch                   2/4 
  検証中           : nginx-2:1.20.1-22.el9_6.3.x86_64                       3/4 
  検証中           : nginx-core-2:1.20.1-22.el9_6.3.x86_64                  4/4 

インストール済み:
  nginx-2:1.20.1-22.el9_6.3.x86_64                                              
  nginx-core-2:1.20.1-22.el9_6.3.x86_64                                         
  nginx-filesystem-2:1.20.1-22.el9_6.3.noarch                                   
  rocky-logos-httpd-90.16-1.el9.noarch                                          

完了しました!

依存関係を含む必要なパッケージが自動的に選択され、まとめてインストールされます。

2.3. パッケージ情報の確認

[root@rocky9 ~]# dnf info nginx
メタデータの期限切れの最終確認: 0:01:31 前の 2025年09月08日 22時14分42秒 に実施しました。
インストール済みパッケージ
名前         : nginx
エポック     : 2
バージョン   : 1.20.1
リリース     : 22.el9_6.3
Arch         : x86_64
サイズ       : 147 k
ソース       : nginx-1.20.1-22.el9_6.3.src.rpm
リポジトリー : @System
repo から    : appstream
概要         : A high performance web server and reverse proxy server
URL          : https://nginx.org
ライセンス   : BSD
説明         : Nginx is a web server and a reverse proxy server for HTTP, SMTP, POP3
             : and IMAP protocols, with a strong focus on high concurrency,
             : performance and low memory usage.

インストール前に詳細情報を確認できるため、安全性やバージョンをチェックできます。

2.4. パッケージの検索

パッケージ名が不明な場合、search サブコマンドで探します。

[root@rocky9 ~]# dnf search dnf
メタデータの期限切れの最終確認: 0:02:07 前の 2025年09月08日 22時14分42秒 に実施しました。
================================= 名前 完全一致: dnf =================================
dnf.noarch : Package manager
=============================== 名前 & 概要 一致: dnf ================================
dnf-data.noarch : Common data and configuration files for DNF
dnf-plugins-core.noarch : Core Plugins for DNF
kpatch-dnf.noarch : kpatch-patch manager plugin for DNF
libdnf-plugin-subscription-manager.x86_64 : Subscription Manager plugin for libdnf
microdnf.x86_64 : Lightweight implementation of DNF in C
osbuild-depsolve-dnf.noarch : Dependency solving support for DNF
(省略)

3.システム管理におけるDNFの利用

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

[root@rocky9 ~]# dnf update
メタデータの期限切れの最終確認: 2:57:08 前の 2025年09月07日 22時36分29秒 に実施しました。
依存関係が解決しました。
================================================================================
 パッケージ             Arch      バージョン                 リポジトリー サイズ
================================================================================
インストール:
 kernel                 x86_64    5.14.0-570.37.1.el9_6      baseos       1.8 M
 kernel-devel           x86_64    5.14.0-570.37.1.el9_6      appstream     18 M
アップグレード:
 kernel-headers         x86_64    5.14.0-570.37.1.el9_6      appstream    3.3 M
 kernel-tools           x86_64    5.14.0-570.37.1.el9_6      baseos       2.1 M
 kernel-tools-libs      x86_64    5.14.0-570.37.1.el9_6      baseos       1.8 M
 python3-perf           x86_64    5.14.0-570.37.1.el9_6      appstream    3.2 M
依存関係のインストール:
 kernel-core            x86_64    5.14.0-570.37.1.el9_6      baseos        18 M
 kernel-modules         x86_64    5.14.0-570.37.1.el9_6      baseos        39 M
 kernel-modules-core    x86_64    5.14.0-570.37.1.el9_6      baseos        31 M
削除中:
 kernel                 x86_64    5.14.0-570.17.1.el9_6      @anaconda      0  
 kernel-core            x86_64    5.14.0-570.17.1.el9_6      @anaconda     68 M
 kernel-modules         x86_64    5.14.0-570.17.1.el9_6      @anaconda     36 M
 kernel-modules-core    x86_64    5.14.0-570.17.1.el9_6      @anaconda     28 M

トランザクションの概要
================================================================================
インストール    5 パッケージ
アップグレード  4 パッケージ
削除            4 パッケージ

ダウンロードサイズの合計: 117 M
これでよろしいですか? [y/N]: y
パッケージのダウンロード:
(1/9): kernel-5.14.0-570.37.1.el9_6.x86_64.rpm  7.8 MB/s | 1.8 MB     00:00
(省略)

セキュリティパッチやバグ修正を適用するため、定期的に実行することが推奨されます。

3.2. パッケージの削除

[root@rocky9 ~]# dnf remove nginx
依存関係が解決しました。
================================================================================
 パッケージ            Arch       バージョン               リポジトリー   サイズ
================================================================================
削除中:
 nginx                 x86_64     2:1.20.1-22.el9_6.3      @appstream     147 k
未使用の依存関係の削除:
 nginx-core            x86_64     2:1.20.1-22.el9_6.3      @appstream     1.6 M
 nginx-filesystem      noarch     2:1.20.1-22.el9_6.3      @appstream     141  
 rocky-logos-httpd     noarch     90.16-1.el9              @appstream      24 k

トランザクションの概要
================================================================================
削除  4 パッケージ

解放された容量: 1.8 M
これでよろしいですか? [y/N]: y
トランザクションを確認しています
トランザクションの確認に成功しました。
トランザクションをテストしています
トランザクションのテストに成功しました。
トランザクションを実行しています
  準備中           :                                                        1/1 
  scriptletの実行中: nginx-2:1.20.1-22.el9_6.3.x86_64                       1/4 
  削除中           : nginx-2:1.20.1-22.el9_6.3.x86_64                       1/4 
  scriptletの実行中: nginx-2:1.20.1-22.el9_6.3.x86_64                       1/4 
  削除中           : rocky-logos-httpd-90.16-1.el9.noarch                   2/4 
  削除中           : nginx-core-2:1.20.1-22.el9_6.3.x86_64                  3/4 
  削除中           : nginx-filesystem-2:1.20.1-22.el9_6.3.noarch            4/4 
  scriptletの実行中: nginx-filesystem-2:1.20.1-22.el9_6.3.noarch            4/4 
  検証中           : nginx-2:1.20.1-22.el9_6.3.x86_64                       1/4 
  検証中           : nginx-core-2:1.20.1-22.el9_6.3.x86_64                  2/4 
  検証中           : nginx-filesystem-2:1.20.1-22.el9_6.3.noarch            3/4 
  検証中           : rocky-logos-httpd-90.16-1.el9.noarch                   4/4 

削除しました:
  nginx-2:1.20.1-22.el9_6.3.x86_64                                              
  nginx-core-2:1.20.1-22.el9_6.3.x86_64                                         
  nginx-filesystem-2:1.20.1-22.el9_6.3.noarch                                   
  rocky-logos-httpd-90.16-1.el9.noarch                                          

完了しました!

依存関係に応じて関連パッケージも削除される場合があるため注意が必要です。

まとめ

  • DNF は RPM の上位ツール であり、依存関係を自動解決してパッケージ管理を簡略化する。
  • installremoveupdateinfosearch といったサブコマンドを理解することが重要。
  • RPM コマンドと違い、事前にファイルを用意しなくてもリポジトリから自動的に取得可能。
  • システムを安定・安全に保つためには、定期的な dnf update の実行が不可欠。