RPM・YUM・DNFの違い|Linuxパッケージ管理入門

  • URLをコピーしました!
Difference between rpm yum dnf

僕はLinux パッケージ管理のRPM・YUM・DNFの違いが分からず混乱しました。

RPMは欲しいパッケージだけをインストールする低レベルのパッケージ管理ツール、YUM・DNFは欲しいパッケージと依存関係のパッケージまでインストールする高レベルのパッケージ管理ツールになります。

本記事では、RPM・YUM・DNF(rpm・yum・dnf)の違いについて実行ログでわかりやすく解説します。

目次

結論:RPM・YUM・DNFの違い

RPMは欲しいパッケージだけをインストールする低レベルのパッケージ管理ツール、YUM・DNFは欲しいパッケージと依存関係のパッケージまでインストールする高レベルのパッケージ管理ツールになります。

RHEL8以降はYUMがDNFのエイリアス(別名)として提供され、YUMはDNFとして動作します。

rpmyumdnf
依存関係の解決手動自動自動
パッケージの取得元ローカルローカル・リポジトリローカル・リポジトリ
メモリ使用率低い高い低い
プログラミング言語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の後継として導入され、より高速で、よりメモリ消費の少ない動作を目指した設計になっています。

RHEL8以降はYUMがDNFのエイリアスとして提供され、YUMはDNFとして動作します。

[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パッケージをリポジトリ(インターネット)から依存関係も含めてまとめてパッケージをインストール・アップデートする「高レベルのパッケージ管理」です。

RHEL8以降はYUMがDNFのエイリアスとして提供され、YUMはDNFとして動作します。

最後までご愛読ありがとうございました。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

情報系Fラン大学出身・新卒未経験からデータベースエンジニアに転身。
使用技術:Oracle|TypeScript
資格取得:情報処理安全確保支援士試験|応用情報技術者試験|OracleMaster Gold DBA|OCI Architect Associate

目次