
僕はLinux パッケージ管理のRPM・YUM・DNFの違いが分からず混乱しました。
本記事では、RPM・YUM・DNF(rpm・yum・dnf)の違いについて実行ログでわかりやすく解説します。
結論:RPM・YUM・DNFの違い
RPMは欲しいパッケージだけをインストールする低レベルのパッケージ管理ツール、YUM・DNFは欲しいパッケージと依存関係のパッケージまでインストールする高レベルのパッケージ管理ツールになります。
| rpm | yum | dnf | |
|---|---|---|---|
| 依存関係の解決 | 手動 | 自動 | 自動 |
| パッケージの取得元 | ローカル | ローカル・リポジトリ | ローカル・リポジトリ |
| メモリ使用率 | 低い | 高い | 低い |
| プログラミング言語 | C言語 | Python言語 | C++言語 |
RPMは低レベルのパッケージ管理
RPM(Red Hat Package Manager)は、.rpmパッケージをローカルファイルからインストール・アップデートする「低レベルのパッケージ管理」です。
ただし、.rpmパッケージ単体をインストール・アップデートする際に、依存関係のパッケージを自動解決しません。
そのため、パッケージ単体をインストール・アップデートする際は、必要な依存関係のパッケージが不足すると、「依存性の欠如」でインストールが停止します。
[root@learnbytebybyte media]# rpm -ivh emacs-29.1-10.el9_4.x86_64.rpm
エラー: 依存性の欠如:
dejavu-sans-mono-fonts は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
desktop-file-utils は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
emacs-common = 1:29.1-10.el9_4 は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libICE.so.6()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libSM.so.6()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libX11-xcb.so.1()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libX11.so.6()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libXext.so.6()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libXfixes.so.3()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libXrender.so.1()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libasound.so.2()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libasound.so.2(ALSA_0.9)(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libasound.so.2(ALSA_0.9.0rc4)(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libcairo.so.2()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libfontconfig.so.1()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libfreetype.so.6()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libgdk-3.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libgif.so.7()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libgtk-3.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libharfbuzz.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libm17n-core.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libm17n-flt.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libotf.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libpango-1.0.so.0()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
librsvg-2.so.2()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libtiff.so.5()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libtiff.so.5(LIBTIFF_4.0)(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされています
libxcb.so.1()(64bit) は emacs-1:29.1-10.el9_4.x86_64 に必要とされていますDNF・YUMは高レベルのパッケージ管理
DNF(Dandified Yum)・YUM(Yellowdog Updater Modified)は、.rpmパッケージをリポジトリ(インターネット)から依存関係も含めてまとめてパッケージをインストール・アップデートする「高レベルのパッケージ管理」です。
実際、emacsのインストール時に依存関係のパッケージもインストールされています。
[root@learnbytebybyte media]# dnf install emacs
メタデータの期限切れの最終確認: 0:48:21 前の 2025年11月25日 15時24分54秒 に実施しました。
依存関係が解決しました。
===============================================================================================================================================================================================================
パッケージ アーキテクチャー バージョン リポジトリー サイズ
===============================================================================================================================================================================================================
インストール:
emacs x86_64 1:27.2-18.el9 appstream 3.3 M
依存関係のインストール:
ModemManager-glib x86_64 1.20.2-1.el9 baseos 337 k
adwaita-cursor-theme noarch 40.1.1-3.el9 appstream 625 k
adwaita-icon-theme noarch 40.1.1-3.el9
<省略>
spirv-tools-libs-2025.2-1.el9.x86_64 totem-pl-parser-3.26.6-2.el9.x86_64
tracker-3.1.2-3.el9_1.x86_64 tracker-miners-3.1.2-4.el9_3.x86_64 upower-0.99.13-2.el9.x86_64 webrtc-audio-processing-0.3.1-8.el9.x86_64
wireplumber-0.4.14-1.el9.x86_64 wireplumber-libs-0.4.14-1.el9.x86_64 xdg-desktop-portal-1.12.6-1.el9.x86_64 xdg-desktop-portal-gtk-1.12.0-3.el9.x86_64
xkeyboard-config-2.33-2.el9.noarch xml-common-0.6.3-58.el9.noarch
完了しました!DNFはYUMの後継として導入され、より高速で、よりメモリ消費の少ない動作を目指した設計になっています。
[root@learnbytebybyte media]# which yum
/usr/bin/yum
[root@learnbytebybyte media]# ls -la /usr/bin/yum
lrwxrwxrwx. 1 root root 5 6月 5 2025 /usr/bin/yum -> dnf-3
[root@learnbytebybyte media]# which dnf
/usr/bin/dnf
[root@learnbytebybyte media]# ls -la /usr/bin/dnf
lrwxrwxrwx. 1 root root 5 6月 5 2025 /usr/bin/dnf -> dnf-3まとめ
RPM(Red Hat Package Manager)は、.rpmパッケージをローカルファイルからインストール・アップデートする「低レベルのパッケージ管理」です。
ただし、.rpmパッケージ単体をインストール・アップデートする際に、依存関係のパッケージを自動解決しません。
DNF(Dandified Yum)・YUM(Yellowdog Updater Modified)は、.rpmパッケージをリポジトリ(インターネット)から依存関係も含めてまとめてパッケージをインストール・アップデートする「高レベルのパッケージ管理」です。
最後までご愛読ありがとうございました。
