DNF5 Azure Linux パッケージを管理する

この記事では、Azure Linux での一般的なパッケージ管理タスクについて説明します。

  • リポジトリ構成が存在する場所。
  • 従来のパッケージ マネージャー コマンドを DNF5 にマップする方法。
  • DNF がメタデータをキャッシュし、パッケージを解決する方法。
  • カーネルとその他のインストール専用パッケージの処理方法。
  • 無人更新を有効にする方法。
  • 最も一般的に使用される DNF コマンド。

Note

Azure Linux 4.0 は現在、preview であり、評価とテストの目的に厳密に限定されています。 運用環境での使用には適していません。

リポジトリの構成

DNF5 は、 /etc/yum.repos.d/からリポジトリ定義を読み取ります。 互換性のために、ディレクトリ名は YUM から保持されます。DNF5 は、このディレクトリから読み取ります。

そのディレクトリ内の各 .repo ファイルは、パッケージを検索する場所、GPG でパッケージを確認するかどうか、およびリポジトリが既定で有効になっているかどうかを DNF に指示するプレーンテキスト構成ファイルです。 メインの DNF 構成ファイルは /etc/dnf/dnf.confであり、キャッシュ設定、インストールのみの制限、プロキシ構成などのグローバル動作を制御します。

Azure Linux には互換性シンボリック リンクが付属しているため、レガシ コマンド (yumdnf (DNF4)、microdnftdnf) がすべて DNF5 にディスパッチされます。

lrwxrwxrwx.  1 root root       4  yum -> dnf5
lrwxrwxrwx.  1 root root       4  microdnf -> dnf5
-rwxr-xr-x.  1 root root 1614408  dnf5
lrwxrwxrwx.  1 root root       4  dnf -> dnf5
lrwxrwxrwx.  1 root root       4  tdnf -> dnf5

共通サブコマンドはすべてシンボリックリンクを介して動作します。 DNF4 内部または microdnf固有の動作に依存するエッジ ケースは、そうでない可能性があります。 変更点の詳細については、次のリソースを参照してください。

DNF5 がパッケージを解決する方法

DNF コマンドを実行すると、DNF5 は次の手順を実行して、インストール、アップグレード、または削除するパッケージを決定します。

  1. .repo内のすべての/etc/yum.repos.d/ ファイルを読み込み、有効としてマークされたリポジトリを選択します。
  2. リポジトリメタデータを更新し、 /var/cache/libdnf5の下でローカルにキャッシュします。 キャッシュされたメタデータには、パッケージの一覧、バージョンと依存関係の情報、チェックサム、署名が含まれます。
  3. トランザクションを適用する前に、有効なリポジトリに対して要求されたインストール、削除、またはアップグレードを解決し、パッケージのバージョンを選択し、整合性と署名を検証します。

無効になっているリポジトリは、1 つのコマンドに対して --enablerepo=<repo-id> で明示的に有効にしない限り無視されます。

/var/cache/libdnf5 キャッシュが存在するため、DNF は呼び出しごとにメタデータを再ダウンロードする必要はありません。 dnf clean allを実行して空にします (頻繁に使用される DNF コマンドを参照)。

インストールのみのパッケージと複数のインストール済みバージョン

一部のパッケージ (特にカーネル) は、適切にアップグレードされるのではなく、サイド バイ サイドでインストールされます。 DNF5 は、 /etc/dnf/dnf.confの 2 つの設定を使用してこれを制御します。

  • installonlypkgs: アップグレードされないパッケージ名の一覧。 カーネル パッケージは正規エントリです。
  • installonly_limit: システム上に共存する可能性があるインストール専用パッケージのバージョンの最大数。 既定値は 3 です。

新しいバージョンがインストールされ、制限を超えると、DNF は最も古いバージョンを自動的に削除します。

カーネルの場合は、次の情報が提供されます。

  • フォールバック: 新しいカーネルの起動に失敗した場合でも、GRUB は以前の既知のカーネルを起動できます。
  • 検証: 実行中のカーネルを削除せずに、新しいカーネルをインストールしてテストできます。
  • バリアント共存: 異なるカーネル ビルド (異なる機能セットなど) を同時にインストールできます。

各カーネル バージョンは個別の RPM であるため、DNF は他のパッケージと同様に追跡して削除します。

dnf-automatic を使用した無人更新プログラム

dnf-automatic は、パッケージの更新プログラムを定期的にチェックし、ダウンロードし、必要に応じて適用するサービスです。 これは、有効期間の長いデーモンとして実行されるのではなく、systemd タイマーによって駆動されます。

dnf-automatic のインストール

次のコマンドを使用して dnf-automatic をインストールします。

sudo dnf install -y dnf-automatic

dnf-automatic タイマーを有効にする

次のコマンドを使用して、再起動後すぐに dnf-automatic タイマーを有効にします。

sudo systemctl enable --now dnf-automatic.timer
  • enable は、起動時に開始するようにタイマーを構成します。
  • --now は、現在のセッションでタイマーを開始します。

dnf-automatic タイマーの状態を確認する

タイマーがアクティブであることを確認し、次のコマンドを使用して最後に実行した日時を確認します。

systemctl status dnf-automatic.timer

一般的な出力は次の例のようになります。

● dnf5-automatic.timer - dnf-automatic timer
     Loaded: loaded (/usr/lib/systemd/system/dnf5-automatic.timer; enabled; preset: disabled)
     Active: active (waiting) since Thu 2026-03-26 14:36:54 UTC; 13min ago
 Invocation: f6984eeceb7c40df99bca243f3da728c
    Trigger: Fri 2026-03-27 06:34:18 UTC; 15h left
   Triggers: ● dnf5-automatic.service

Active: active (waiting) が想定されます: 基盤となるサービスは、タイマーが発火したときにのみ実行され、その後終了するワンショットサービスです。 Trigger:行には、次にスケジュールされた実行が表示されます。

dnf-automatic タイマーの次のスケジュールされた実行を一覧表示する

次のコマンドを使用して、他のタイマーと共に次の実行を一覧表示します。

systemctl list-timers dnf-automatic.timer

出力例:

NEXT                        LEFT LAST PASSED UNIT                 ACTIVATES
Fri 2026-03-27 06:34:18 UTC  15h -         - dnf5-automatic.timer dnf5-automatic.service

1 timers listed.
Pass --all to see loaded but inactive timers, too.

dnf-automatic のオプション構成

/etc/dnf/automatic.conf ファイルを追加することで、自動更新の動作を構成できます。 このファイルは、更新プログラムをダウンロードするか、自動的に適用するか、セキュリティのみの更新プログラムに制限するかを制御します。 完全な構成の詳細については、dnf5 の自動ドキュメントを参照してください

Note

自動更新は dnf-automatic を使用してインストールされますが、システムは自動的に再起動されません。 カーネル (またはその他の再起動が必要なパッケージ) が更新された場合、新しいバージョンは次回の再起動まで有効になりません。 更新後、再起動が必要かどうかを確認し、必要に応じてスケジュールします。

よく使用される DNF コマンド

次のコマンドは、Azure Linux での日常的なパッケージ管理の大部分を対象とします。

dnf clean all

dnf clean all は、DNF が /var/cache/libdnf5の下にキャッシュしたすべてのものを削除します。 これは次の目的で使用されます。

  • トランザクション エラーの原因となっている破損または古いメタデータから復旧します。
  • 同じ RUN レイヤーにインストールした後にパッケージ キャッシュを削除して、コンテナー イメージを縮小します。
  • ディスク領域を回復します。

コンテナーの例:

RUN dnf install -y package1 package2 \
    && dnf clean all

dnf search は、キーワードをパッケージ名とサマリーに一致させます。 例えば次が挙げられます。

dnf search lsof

出力例:

Updating and loading repositories:
 Azure Linux 4.0 - x86_64 - Microsoft                        100% |   7.6 KiB/s |   4.8 KiB |  00m01s
Repositories loaded.
Matched fields: name (exact)
 lsof.x86_64   A utility which lists open files on a Linux/UNIX system

dnf provides

dnf provides は、特定のファイル、コマンド、または機能を所有するパッケージを検索します。 例えば次が挙げられます。

dnf provides lsof

出力例:

Updating and loading repositories:
Repositories loaded.
lsof-4.98.0-8.azl4.20260303.x86_64 : A utility which lists open files on a Linux/UNIX system
Repo         : @System
Matched From :
Provide      : lsof = 4.98.0-8.azl4.20260303

dnf install

dnf install は、ランタイムの依存関係と共に 1 つ以上のパッケージをインストールします。

sudo dnf install lsof

出力例:

Updating and loading repositories:
Repositories loaded.
Package           Arch     Version                  Repository    Size
Installing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Installing:         1 package

Total size of inbound packages is 226 KiB. Need to download 226 KiB.
After this operation, 579 KiB extra will be used (install 579 KiB, remove 0 B).
Is this ok [y/N]: y
[1/1] lsof-0:4.98.0-8.azl4.20260303.x86_64                100% | 641.9 KiB/s | 226.0 KiB |  00m00s
[1/1] Total                                               100% | 640.1 KiB/s | 226.0 KiB |  00m00s
Running transaction
[1/3] Verify package files                                100% | 500.0   B/s |   1.0   B |  00m00s
[2/3] Prepare transaction                                 100% |  23.0   B/s |   1.0   B |  00m00s
[3/3] Installing lsof-0:4.98.0-8.azl4.20260303.x86_64     100% |   3.0 MiB/s | 580.2 KiB |  00m00s
Complete!

dnf remove

dnf remove は、そのパッケージのためだけに導入された依存関係もあわせて、パッケージをアンインストールします。

sudo dnf remove -y lsof

出力例:

Package           Arch     Version                  Repository    Size
Removing:
 lsof             x86_64   4.98.0-8.azl4.20260303   azurelinux  578.5 KiB

Transaction Summary:
 Removing:           1 package

After this operation, 579 KiB will be freed (install 0 B, remove 579 KiB).
Is this ok [y/N]: y
Running transaction
[1/2] Prepare transaction                                 100% |  27.0   B/s |   1.0   B |  00m00s
[2/2] Removing lsof-0:4.98.0-8.azl4.20260303.x86_64       100% |  72.0   B/s |  11.0   B |  00m00s
Complete!

dnf upgrade

dnf upgrade インストールされているパッケージを最新の利用可能なバージョンに更新します。

sudo dnf upgrade

すべてが最新の場合、出力は短くなります。 例えば次が挙げられます。

Updating and loading repositories:
Repositories loaded.
Nothing to do.

Tip

スクリプト、CI パイプライン、コンテナー ビルドなどの非対話型コンテキストで-yinstall、またはremoveupgradeを渡します。 システムを変更する DNF 操作にはルートが必要であるため、 sudo または rootとして実行します。