yum/dnf(ヤム/ディーエヌエフ)
英語表記: yum/dnf
概要
yum(Yellowdog Updater, Modified)およびdnf(Dandified YUM)は、Red Hat Enterprise Linux(RHEL)やCentOS、FedoraといったRed Hat系のLinuxディストリビューションにおいて、標準的に利用されるパッケージ管理システムです。これらは、サーバーOSの基盤を構成する上で、必要なソフトウェア(パッケージ)のインストール、更新、そして削除を一元管理するための非常に重要なツールです。特に、ソフトウェアが動作するために必要な他のソフトウェア(依存関係)を自動的に検出し、適切に解決できる点が最大の特長です。
詳細解説
このyum/dnfという仕組みは、「サーバOS(Linux Server)の基盤」を支える「パッケージ管理」という文脈において、欠かせない役割を果たしています。Linuxサーバーを安定して運用するためには、数多くのソフトウェアを導入し、常に最新の状態に保つ必要がありますが、これを手動で行うのは非常に困難です。
パッケージ管理とRPMの関係
yum/dnfを理解するには、まずRPM(Red Hat Package Manager)という基盤となる技術を知る必要があります。RPMは、ソフトウェア本体や設定ファイルなどを一つのファイルにまとめた「パッケージ形式」そのものです。例えるなら、RPMは個々の商品が入った「箱」にあたります。
一方、yum/dnfは、このRPMという「箱」を効率的に管理するための「フロントエンド」ツールです。サーバー管理者が「このソフトウェアをインストールしたい」と命令すると、yum/dnfは以下の手順で処理を実行します。
- リポジトリの参照: インターネット上やローカルネットワークに存在する「リポジトリ」(公式なソフトウェアの倉庫)にアクセスし、目的のパッケージの最新情報や依存関係の情報を取得します。
- 依存関係の解決: 目的のパッケージが動作するために、他にどのパッケージが必要か(ライブラリ、ツールなど)を自動で計算します。
- ダウンロードとインストール: 必要な全てのパッケージをリポジトリからダウンロードし、適切な順番でサーバーにインストールします。
この「依存関係の自動解決」こそが、yum/dnfがLinuxサーバー基盤において重宝される最大の理由です。管理者が煩雑なライブラリ管理に頭を悩ませる必要がなくなります。
yumからdnfへの進化
長年、Red Hat系の標準パッケージマネージャとして利用されてきたのはyumでしたが、大規模なシステムにおける依存関係の計算速度や、基盤となるプログラミング言語(Python 2)のサポート終了といった課題がありました。
そこで登場したのが、後継ツールであるdnf(Dandified YUM)です。dnfは、より高速で効率的な依存関係解決アルゴリズムを採用し、Python 3ベースで動作します。基本的なコマンドの使い方はyumとほぼ同じですが、処理速度や安定性が大幅に向上しており、現在では多くのモダンなRed Hat系ディストリビューションでdnfが標準として採用されています。サーバーOSの文脈では、新しい環境を構築する際はdnfを利用することが一般的になっています。
具体例・活用シーン
yum/dnfの存在は、サーバー管理者の作業を劇的に効率化します。
サーバー管理者のための「コンシェルジュ」
yum/dnfの役割を初心者の方にもわかりやすく説明するために、これを「サーバー専用の優秀なコンシェルジュ」として考えてみましょう。
あなたはサーバー管理者として、新しいWebサーバーソフトウェア(例: Apacheのhttpdパッケージ)を導入したいとします。
- 命令: あなたはコンシェルジュ(dnf)に「httpdをインストールしてほしい」と依頼します。(
sudo dnf install httpd) - 計画立案: コンシェルジュは、httpdというアプリケーションが動作するために必要な部品(例:特定の暗号化ライブラリ、ログ管理ツールなど)がサーバーに揃っているかを瞬時にチェックします。
- 調達と設置: もし部品が足りなければ、コンシェルジュは自動的に「リポジトリ」という名の巨大な倉庫から必要な部品を見つけ出し、適切な順番で運び込み、Webサーバー本体と一緒に完璧な形で設置してくれます。
もしyum/dnfがなければ、管理者は「httpdをインストールする前に、まずライブラリAのバージョン2.5と、ツールBのバージョン1.1をインストールし、設定ファイルCを編集しなければならない」といった複雑な手順をすべて手動で実行する必要があり、非常に非効率的でミスも発生しやすくなります。パッケージ管理システムは、この複雑な依存関係のジグソーパズルを、一瞬で解決してくれるのです。
実用的なコマンド例(dnfの場合)
| コマンド | 目的 | 活用シーン(パッケージ管理) |
| :— | :— | :— |
| sudo dnf install [パッケージ名] | 新しいソフトウェアをインストールします。 | 新規にデータベースサーバーやWebサーバーを構築する際に使用します。 |
| sudo dnf update | システム全体のパッケージを最新バージョンに更新します。 | セキュリティ上の脆弱性に対応するため、定期的なサーバーメンテナンスで最も重要となる操作です。 |
| dnf search [キーワード] | リポジトリ内でパッケージを検索します。 | 必要なツールがどのパッケージ名で提供されているかを探す際に役立ちます。 |
| sudo dnf remove [パッケージ名] | ソフトウェアを削除します。 | 不要になったサービスをサーバーから完全に撤去し、リソースを解放します。 |
これらのコマンドは、Linuxサーバー基盤の運用において日常的に利用され、サーバーの健全性を保つ上で不可欠な操作となります。
資格試験向けチェックポイント
yum/dnfは、特にLinuxサーバーの運用管理スキルが問われる基本情報技術者試験や応用情報技術者試験で、その概念や役割が問われることがあります。ITパスポートでは具体的なコマンドは出ませんが、パッケージ管理の概念は重要です。
- パッケージ管理システムの役割(概念理解):
- ソフトウェアのインストールや更新作業を効率化し、サーバー管理者の負担を軽減する仕組みであることを理解しておきましょう。
- 特に「依存関係の自動解決」という機能がパッケージ管理システムの核心であることを明確に覚えておいてください。
- RPMとyum/dnfの関係性:
- RPMがパッケージの「形式」であり、yum/dnfがそれを扱う「ツール(フロントエンド)」である、という役割分担を理解することが重要です。
- サーバーセキュリティとの関連:
dnf updateコマンドは、セキュリティパッチの適用やバグ修正のために利用される最も重要な操作の一つです。サーバーOSのセキュリティ維持のためには、パッケージ管理システムを用いた定期的な更新が不可欠である、という文脈で出題されることがあります。
- 主要コマンドの役割:
install(インストール)、update(更新)、remove(削除)といった基本的なコマンドが、それぞれどのような操作を行うのかを把握しておくと応用情報技術者試験対策になります。
関連用語
- 情報不足
(注記:関連用語として、RPM、リポジトリ、apt/apt-get(Debian/Ubuntu系のパッケージ管理システム)などが挙げられますが、本項目では指定に基づき「情報不足」といたします。)
