新Linux入門|RPMとDNFの違いを理解しよう!パッケージ管理の仕組み

 今回は、AlmaLinux 9.6を使ううえで欠かせない「パッケージ管理ツール」について、少し掘り下げてみましょう😊
 Linuxでは、ソフトウェアを効率的にインストール・更新・削除するために「RPM」や「DNF」といった仕組みが使われています。
でも、「どちらも同じようなものじゃないの?」と思ったこと、ありませんか?🤔

実はこの2つ、役割が違うんです!
RPMは“低レベルなパッケージ管理ツール”、DNFは“高レベルな統合管理ツール”として機能します。

📦 RPMとDNFの概要

まずは2つの違いをざっくり比べてみましょう👇

項目RPM (Red Hat Package Manager)DNF (Dandified YUM)
目的パッケージの直接管理リポジトリを利用した自動管理
依存関係の解決手動で行う必要あり自動で解決してくれる
インターフェースコマンドラインのみCLIベース、より分かりやすい操作体系
ソースローカルの.rpmファイルオンラインリポジトリ
管理範囲単体パッケージの操作システム全体の統合管理

 RPMが“基礎ツール”で、DNFが“パッケージ管理の自動アシスタント”と考えるとわかりやすいですね😄

⚙️ RPM:パッケージを直接扱うツール

RPM(Red Hat Package Manager)は、.rpmファイルを直接操作するためのツールです。
シンプルで強力ですが、依存関係を自分で解決する必要があります。

コマンド書式

[root@AlmaLinux ~]# rpm [オプション] パッケージ名.rpm

主なオプション

オプション説明
-iパッケージを新規インストール
-U既存パッケージをアップグレード
-eパッケージをアンインストール
-qインストール済みパッケージを照会
-qa全インストール済みパッケージを表示
-qiパッケージの詳細情報を表示

使用例

[root@AlmaLinux ~]# rpm -ivh hwloc-libs-2.4.1-5.el9.x86_64.rpm
警告: hwloc-libs-2.4.1-5.el9.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 350d275d: NOKEY
Verifying...                                                            (################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:hwloc-libs-2.4.1-5.el9                                             (################################# [100%]
[root@AlmaLinux ~]# rpm -ivh htop-3.3.0-1.el9.x86_64.rpm
警告: htop-3.3.0-1.el9.x86_64.rpm: ヘッダー V4 RSA/SHA256 Signature、鍵 ID 3228467c: NOKEY
Verifying...                                                            (################################# [100%]
準備しています...              ################################# [100%]
更新中 / インストール中...
   1:htop-3.3.0-1.el9                                                   (###########################

これでローカルファイルから直接インストール完了!

ただし、依存ライブラリが足りないとエラーになることがあります💦
そのため、手動管理ではちょっと大変な場合もあるんです。

🚀 DNF:RPMをベースにした高機能マネージャ

 DNF(Dandified YUM)は、RPMを内部で使いながら、依存関係の自動解決・リポジトリ管理などを行ってくれる便利ツールです✨
つまり、RPMの“手間を減らした進化版”とも言えます。

コマンド書式

[root@AlmaLinux ~]# dnf [サブコマンド] [オプション] パッケージ名

主なサブコマンド

サブコマンド説明
install新しいパッケージをインストール
updateパッケージをアップデート
removeパッケージを削除
searchリポジトリ内から検索
infoパッケージ情報を表示
listインストール済み・利用可能なパッケージを表示

使用例

[root@AlmaLinux ~]# dnf install httpd
メタデータの期限切れの最終確認: 1:40:21 前の 2025年11月24日 00時17分30秒 に実施しました。
依存関係が解決しました。
=========================================================================
 パッケージ               Arch      バージョン        リポジトリー サイズ
=========================================================================
インストール:
 httpd                    x86_64    2.4.62-7.el9      appstream     44 k
依存関係のインストール:
 almalinux-logos-httpd    noarch    90.6-2.el9        appstream     18 k
 apr                      x86_64    1.7.0-12.el9_3    appstream    122 k
 apr-util                 x86_64    1.6.1-23.el9      appstream     94 k
 apr-util-bdb             x86_64    1.6.1-23.el9      appstream     12 k
 httpd-core               x86_64    2.4.62-7.el9      appstream    1.4 M
 httpd-filesystem         noarch    2.4.62-7.el9      appstream     11 k
 httpd-tools              x86_64    2.4.62-7.el9      appstream     78 k
弱い依存関係のインストール:
 apr-util-openssl         x86_64    1.6.1-23.el9      appstream     14 k
 mod_http2                x86_64    2.0.26-5.el9      appstream    163 k
 mod_lua                  x86_64    2.4.62-7.el9      appstream     58 k

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

ダウンロードサイズの合計: 2.0 M
インストール後のサイズ: 6.1 M
これでよろしいですか? [y/N]: y

なんとこれだけで、依存関係も自動的に処理してくれます🎉

🧠 RPMとDNFの関係

実は、DNFは内部的にRPMを使っています。
つまり、DNF = RPM + 依存解決 + リポジトリ連携 + ユーザーフレンドリーな機能 なんです。

ツール主な役割
上位層DNF自動管理・リポジトリ連携・依存関係処理
下位層RPM実際のパッケージインストール処理

DNFはRPMを“操作する司令塔”のような存在で、RPM自体がパッケージを展開・登録しています。

📊 出力例で比較

操作RPMの例DNFの例
インストールrpm -ivh htop-3.2.2-1.el9.x86_64.rpmdnf install htop
アップグレードrpm -Uvh htop-3.2.3-1.el9.x86_64.rpmdnf update htop
削除rpm -e htopdnf remove htop
情報確認rpm -qi htopdnf info htop
検索(対応なし)dnf search htop

RPMではファイル指定が必要ですが、DNFはリポジトリ名やパッケージ名だけでOKです🙆‍♂️

🌟 まとめ

RPMとDNFは、どちらもLinuxのパッケージ管理に欠かせないツールです🐧

  • RPM:単体でパッケージを直接管理(シンプルだが手動作業が必要)
  • DNF:RPMをベースに、依存関係やリポジトリ管理を自動化

つまり、DNFはRPMの“お助け上位ツール”なんです✨
 AlmaLinux 9.6ではDNFをメインで使うのが一般的ですが、RPMの基礎を理解しておくことで、トラブルシューティングにも強くなれます💪