【第3回】DNFとパッケージ管理の深淵:DNF 5の威力と最新リポジトリ運用の最適解

こんにちは、リナックス先生です。第2回ではSSHの公開鍵認証を設定し、サーバーを安全に公開する準備が整いました。しかし、サーバーは動かすだけでは意味がありません。必要なソフトウェアを適切に導入し、常に最新の状態に保つ「パッケージ管理」こそが、インフラ運用の日常業務の大部分を占めます。

第3回のテーマは、AlmaLinux 10における最大の変化の一つである「DNF 5」です。これまでのDNF(DNF 4)から何が変わったのか、そして現場のエンジニアがどのようにパッケージを管理すべきか、その「深淵」を覗いてみましょう。

コウ君

先生!パッケージ管理って dnf install を打つだけじゃないんですか?AlmaLinux 10になってコマンドの使い方が変わっちゃうのか不安です……。

リナックス先生

コウ君、安心して。基本的なコマンド体系は維持されているわ。でも、裏側の仕組みは別物。DNF 5はC++で再構築されたことで、速度も効率も劇的に向上しているの。プロを目指すなら「ただインストールできる」だけでなく、リポジトリの優先順位やバージョンの切り替え(AppStream)までマスターしてほしいわね!

【全8回】AlmaLinux 10 徹底攻略:次世代サーバー構築・運用講座

  • 第1回:AlmaLinux 10 爆速構築編
  • 第2回:初期設定と次世代セキュリティ編
  • ▶ 第3回:DNFとパッケージ管理の深淵編(今ここ!)
  • 第4回:systemdと現代的なサービス管理編
  • 第5回:network制御とnftables編
  • 第6回:Web・DBサーバー構築(LEMPスタック)編
  • 第7回:パフォーマンス分析とリソース監視編
  • 第8回:自動化とバックアップの極意編

1. DNF 5とは何か?新世代パッケージ管理の衝撃

これまでAlmaLinux 8や9で使われていたDNF(DNF 4)は、実は多くの部分がPythonで記述されていました。しかし、OSの起動や数千個のパッケージ管理において、Pythonの実行オーバーヘッドは無視できないものになっていました。

DNF 5は、コアとなるロジックをすべてC++で再開発。これにより以下の劇的な進化を遂げています。

  • 圧倒的な高速化: メタデータの読み込みや依存関係の計算が数倍〜十数倍高速化されました。
  • メモリ消費の削減: Pythonランタイムが不要なため、省メモリな軽量環境(コンテナ等)でも軽快に動作します。
  • 依存ライブラリの統一: 以前はDNFとMicroDNFで分かれていたライブラリが統合され、一貫性のある動作が保証されています。

💡 プロのノウハウ:なぜ「速度」が重要なのか
サーバー1台なら数秒の差かもしれません。しかし、実務では「100台のサーバーに一斉にセキュリティパッチを当てる」といったシーンがあります。DNF 5の高速化は、メンテナンス時間の短縮(ダウンタイムの削減)に直結する、非常に実利的な進化なのです。


2. 実務で必須のDNF 5基本コマンド完全網羅

AlmaLinux 10でも、私たちが使い慣れたコマンドはそのまま使えます。しかし、オプションの挙動がより洗練されています。ここでは現場で毎日使うセットを確認しましょう。

2-1. 検索と情報確認

# パッケージを検索(説明文も含めて検索される)
dnf search nginx

# 詳細情報を表示(バージョン、ライセンス、サイズを確認)
dnf info nginx

# 特定のファイルがどのパッケージに含まれているか探す
dnf provides /usr/sbin/nginx

2-2. インストールとアップデート

# インストール(-y で確認をスキップ)
sudo dnf install -y vim

# システム全体のパッケージを最新に更新
sudo dnf upgrade -y

# 特定のパッケージだけを更新
sudo dnf upgrade nginx

2-3. 不要なパッケージの掃除

# 依存関係で入ったが、今は使われていないパッケージを削除
sudo dnf autoremove

# キャッシュ(メタデータ)を削除してディスクを空ける
sudo dnf clean all

⚠️ トラブルシューティング / 注意点
dnf update というコマンドも使えますが、現在の標準的な推奨は dnf upgrade です。AlmaLinux 10では両者はほぼ同等ですが、歴史的に upgrade は「不要になった古いパッケージの削除」を安全に行うニュアンスが含まれています。現場のドキュメントでは upgrade に統一するのが一般的です。


3. AppStreamとモジュール:バージョンの壁を越える仕組み

エンタープライズLinuxには「OSの寿命が長い」というメリットがありますが、同時に「ソフトウェアのバージョンが古くなる」という弱点がありました。これを解決するのがAppStreamという概念です。

AppStreamを利用すると、同じOS上で「PHP 8.2」と「PHP 8.3」など、異なるバージョンのストリーム(選択肢)を切り替えて利用できます。

PR

モジュールの操作手順

# 利用可能なモジュールの一覧を表示
dnf module list

# 特定のソフト(例:nodejs)の全バージョンを確認
dnf module list nodejs

# 特定のバージョン(ストリーム)を有効化
sudo dnf module enable nodejs:20

# インストール
sudo dnf install nodejs

これにより、OSの安定性を保ちつつ、アプリケーションが要求する最新のランタイムを共存させることが可能になります。AlmaLinux 10ではこの柔軟性がさらに高められています。


4. 現場の流儀:リポジトリの管理とdnf historyの活用

インフラエンジニアとして、最も重宝するのが「作業の巻き戻し」機能です。

4-1. 操作履歴の管理 (dnf history)

「昨日インストールした設定がおかしくてOSの挙動が不安定になった」……そんな時、DNFは過去の操作をすべて記録しています。

# 過去の操作履歴を表示
dnf history

# 特定のIDの内容を詳しく見る
dnf history info 5

# 【神機能】特定の操作を取り消す(アンインストール+依存関係の復元)
sudo dnf history undo 5

4-2. 外部リポジトリの追加 (EPEL)

標準リポジトリにない便利なツール(htop, 7zipなど)を導入するために、EPEL (Extra Packages for Enterprise Linux) は必須です。

# EPELリポジトリのインストール
sudo dnf install epel-release

# リポジトリが有効であることを確認
dnf repolist

💡 プロのノウハウ:リポジトリの優先順位(Priority)
複数の外部リポジトリを入れると、同じ名前のパッケージが競合することがあります。実務では dnf-plugins-core を導入し、リポジトリ設定ファイル(/etc/yum.repos.d/)内で priority=10(数字が小さいほど優先)といった設定を行い、標準パッケージが勝手に上書きされないよう防護柵を張ります。


5. まとめと次回予告

第3回、お疲れ様でした!今回の学びで、あなたはAlmaLinux 10のパッケージ管理を自在に操れるようになりました。

  • DNF 5 はC++による再設計で、爆速かつ省メモリな管理を実現した。
  • AppStream により、安定したOS上で最新バージョンのソフトを選択できる。
  • dnf history undo は、トラブル時の強力な「タイムマシン」になる。
  • EPEL リポジトリを活用することで、サーバーの可能性を大きく広げられる。

ソフトウェアを正しく導入できたら、次はそれを「サービス」として適切に動かし続ける必要があります。Linuxサーバーが起動してから、ApacheやDBが立ち上がるまで、裏側で何が起きているのでしょうか?

次回の第4回は、「systemdと現代的なサービス管理編」です。OSの心臓部であるsystemdを攻略し、プロレベルのプロセス管理と自動復旧設定をマスターしましょう。お楽しみに!

▼ サーバー構築・開発を学ぶならVPSで ▼

エンジニア必須の環境
「おすすめVPS」

VPSランキングを見る

技術スキルを活かす
「ITエンジニア転職」

転職エージェントを見る

コメント