概要
インスタンス作成時のデフォルトAMIが2023になり、yumの後継であるdnfを使う機会も多くなりそうですね。
既に知られているdnfですが、yumばかり使っていたので勉強がてらまとめてみようかと思います。
(以下、Linux2=AL2、Linux2023=AL2023と記載します)
dnfとは
yumの後継となるパッケージ管理コマンド。
dnfとは、Fedora Linuxディストリビューションで使用されるパッケージマネージャーの一つです。
dnfは「Dandified Yum」の略であり、以前のFedoraバージョンで使用されていたYumパッケージマネージャーの改良版になります。
何故yumではいけないのか
端的にいうとyumは廃止となります。
yumはサポート終了となったpython2 系で、yum後継のdnfはpython3 系となり、今後も継続して使い続ける事は出来ないという事です。
AL2023では、yumとdnfどちらも使用する事が出来るようになっています。
dnfコマンドを実行
例として、以下のようなものがあります。
パッケージのインストール: dnf install <package_name>
パッケージのアップデート: dnf update
パッケージの削除: dnf remove <package_name>
パッケージの検索: dnf search <keyword>
上記にある通り、パッケージに関するコマンドを実行する上ではyumと変わりはないように思えました。
実行は単純で、yumをdnfに変換するのみとなります。
何故yumとdnfで差がないのか
下記に記載するサイトでも紹介されていますが、yumとdnfではシンボリックリンクが同一であるので実行される中身は同じだという事になります。
これはAL2023でも同様でした。↓
# ls -l /usr/bin/yum /usr/bin/dnf
lrwxrwxrwx. 1 root root 5 Jan 31 01:01 /usr/bin/dnf -> dnf-3
lrwxrwxrwx. 1 root root 5 Jan 31 01:01 /usr/bin/yum -> dnf-3
/etc/yum.repos.d/以下
AL2と同じくリポジトリの設定は「/etc/yum.repos.d/」に存在します。
/etc/dnfもあるんですがそっちではないんですね〜
AL2、AL2023の/etc/yum.repos.d/以下を比べてみます。
この辺りに差はありそうです。
AL2
-rw-r--r-- 1 root root 1003 Oct 26 2021 amzn2-core.repo
-rw-r--r-- 1 root root 2150 Apr 20 18:30 amzn2-extras.repo
AL2023
-rw-r--r--. 1 root root 968 Apr 11 22:27 amazonlinux.repo
-rw-r--r--. 1 root root 689 Apr 11 22:27 kernel-livepatch.repo
dnfのメリット
結局yumもdnfも同じものを実行しているなら、とりあえずは「yum」で良くない…?という感情にもなりそうです。
しかし、モジュールという概念が追加された事により、運用での実用性があがったように思われます。
「dnf module」というコマンドの実行により、特定の機能や目的に関連するパッケージのグループを定義します。
例えば、phpと指定するのみで必要なパッケージ群も同様に準備してくれるというものです。
これにはアップグレードやリムーブにも対応されており、バージョンの管理等にとても活躍してくれそうです。
AL2023のdnf module list
上記の通り、モジュールはとても便利そうなのですが、「dnf module list」どんなモジュールがあるのだろうと見てみた所以下の結果でした。
(2023/05/10現在)
# dnf module list
Last metadata expiration check: 0:18:47 ago on Wed May 10 02:39:33 2023
下記の記事に関連するようで、モジュールのリストは空になっているみたいです。
すべてをモジュール化したけど良くなかったとかで、結局はいつも通りにモジュールインストールする必要があるそうで…
AlmaLinux 9 - “dnf module list” is empty
https://almalinux.discourse.group/t/almalinux-9-dnf-module-list-is-empty/1181
最後に
いずれはyumは消えゆくコマンドとなりそうなので、早めの移行を意識したいですね
それと運用目線だとmodule機能は期待大です。