Verwalten von Azure Linux-Paketen mit DNF5

In diesem Artikel werden allgemeine Paketverwaltungsaufgaben unter Azure Linux behandelt, darunter:

  • Wo die Repository-Konfiguration gespeichert ist.
  • Wie veraltete Paketmanager-Befehle DNF5 zugeordnet werden.
  • Wie DNF Metadaten zwischenspeichert und Pakete auflöst.
  • Wie Kernel und andere Pakete, die nur installiert werden, behandelt werden.
  • So aktivieren Sie unbeaufsichtigte Updates.
  • Die am häufigsten verwendeten DNF-Befehle.

Note

Azure Linux 4.0 befindet sich jetzt in preview und ist streng auf Auswertungs- und Testzwecke beschränkt. Es ist nicht für den Produktionseinsatz geeignet.

Repository-Konfiguration

DNF5 liest Repositorydefinitionen aus /etc/yum.repos.d/. Der Verzeichnisname wird aus Kompatibilitätsgründen von YUM beibehalten; DNF5 liest aus diesem Verzeichnis.

Jede .repo Datei in diesem Verzeichnis ist eine Nur-Text-Konfigurationsdatei, die DNF angibt, wo Pakete gefunden werden sollen, ob sie mit GPG überprüft werden sollen und ob das Repository standardmäßig aktiviert ist. Die DNF-Hauptkonfigurationsdatei ist /etc/dnf/dnf.conf, die das globale Verhalten wie Cacheeinstellungen, den Reininstallationsgrenzwert und die Proxykonfiguration steuert.

Azure Linux stellt Kompatibilitäts-Symlinks bereit, sodass Legacy-Befehle (yum, dnf (DNF4), microdnf, tdnf) alle an DNF5 weitergeleitet werden:

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

Die allgemeinen Unterbefehle funktionieren alle durch die Symlinks. Randfälle, die von den Interna von DNF4 oder von microdnf-spezifischem Verhalten abhängen, funktionieren möglicherweise nicht. Ausführliche Informationen dazu, was sich geändert hat, finden Sie in den folgenden Ressourcen:

So löst DNF5 Pakete auf

Wenn Sie einen DNF-Befehl ausführen, führt DNF5 die folgenden Schritte aus, um zu bestimmen, welche Pakete installiert, aktualisiert oder entfernt werden sollen:

  1. Lädt jede .repo Datei in /etc/yum.repos.d/ und wählt die als aktiviert markierten Repositorys aus.
  2. Aktualisiert Repositorymetadaten, zwischenspeichert sie lokal unter /var/cache/libdnf5. Zwischengespeicherte Metadaten umfassen die Paketliste, Versions- und Abhängigkeitsinformationen, Prüfsummen und Signaturen.
  3. Löst die angeforderte Installation, Entfernung oder Aktualisierung für die aktivierten Repositorys auf, wählt Paketversionen aus und überprüft Integrität und Signaturen, bevor die Transaktion angewendet wird.

Deaktivierte Repositorys werden ignoriert, es sei denn, Sie aktivieren sie für einen einzelnen Befehl explizit mit --enablerepo=<repo-id>.

Der /var/cache/libdnf5 Cache ist vorhanden, sodass DNF keine Metadaten für jeden Aufruf erneut herunterladen muss. Führen Sie dnf clean all den Befehl aus, um ihn zu leeren (siehe Häufig verwendete DNF-Befehle).

Nur zur Installation vorgesehene Pakete und mehrere installierte Versionen

Einige Pakete, insbesondere der Kernel, werden nebeneinander installiert, anstatt an Ort und Stelle aktualisiert zu werden. DNF5 steuert dies über zwei Einstellungen in /etc/dnf/dnf.conf:

  • installonlypkgs: Liste der Paketnamen, die nie aktualisiert werden. Kernel-Pakete sind der maßgebliche Einstiegspunkt.
  • installonly_limit: Maximale Anzahl von Versionen eines ausschließlich installierten Pakets, die gleichzeitig auf dem System vorhanden sein können. Der Standardwert lautet 3.

Wenn eine neue Version installiert und der Grenzwert überschritten wird, entfernt DNF automatisch die älteste Version.

Für den Kernel ergibt sich Folgendes:

  • Fallback: Wenn ein neuer Kernel nicht gestartet werden kann, kann GRUB weiterhin einen vorherigen, bekannten Kernel starten.
  • Validierung: Sie können einen neuen Kernel installieren und testen, ohne das ausgeführte Kernel zu entfernen.
  • Variant-Koexistenz: Sie können verschiedene Kernelbuilds (z. B. mit unterschiedlichen Featuresätzen) gleichzeitig installieren.

Jede Kernelversion ist eine separate RPM, dNF verfolgt und entfernt sie wie jedes andere Paket.

Unbeaufsichtigte Aktualisierungen mit dnf-automatic

dnf-automatic ist ein Dienst, der regelmäßig nach Paketaktualisierungen sucht, diese herunterlädt und optional anwendet. Sie wird durch einen systemd-Timer gesteuert, anstatt als dauerhaft laufender Daemon ausgeführt zu werden.

Installation von dnf-automatic

Installieren Sie dnf-automatic mit dem folgenden Befehl:

sudo dnf install -y dnf-automatic

Aktivieren des dnf-automatic Timers

Aktivieren Sie den dnf-automatic Timer sofort und über Neustarts, indem Sie den folgenden Befehl verwenden:

sudo systemctl enable --now dnf-automatic.timer
  • enable konfiguriert den Timer, der beim Start gestartet werden soll.
  • --now startet den Timer in der aktuellen Sitzung.

Überprüfen des Status des dnf-automatic Timers

Überprüfen Sie, ob der Timer aktiv ist, und sehen Sie, wann er zuletzt mit dem folgenden Befehl ausgeführt wurde:

systemctl status dnf-automatic.timer

Typische Ausgabe sieht wie im folgenden Beispiel aus:

● 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) ist zu erwarten: Der zugrunde liegende Dienst ist ein One-Shot-Dienst, der nur ausgeführt wird, wenn der Timer ausgelöst wird, und sich anschließend beendet. Die Trigger: Zeile zeigt die nächste geplante Ausführung an.

Listen Sie die nächste geplante Ausführung des dnf-automatic Timers auf

Listen Sie die nächste Ausführung zusammen mit anderen Timern mit dem folgenden Befehl auf:

systemctl list-timers dnf-automatic.timer

Beispielausgabe:

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.

Optionale Konfiguration von dnf-automatic

Sie können das Verhalten der automatischen Aktualisierung konfigurieren, indem Sie die /etc/dnf/automatic.conf Datei hinzufügen. Diese Datei steuert, ob Updates nur heruntergeladen, automatisch angewendet oder auf Sicherheitsupdates beschränkt sind. Vollständige Konfigurationsdetails finden Sie in der dnf5-automatischen Dokumentation

Note

Automatische Updates werden über dnf-automatic installiert, das System wird jedoch nicht automatisch neu gestartet. Wenn ein Kernel (oder ein anderes neu erforderliches Paket) aktualisiert wird, wird die neue Version erst nach dem nächsten Neustart wirksam. Überprüfen Sie nach Updates, ob ein Neustart erforderlich ist, und planen Sie einen nach Bedarf.

Häufig verwendete DNF-Befehle

Die folgenden Befehle decken den Großteil der täglichen Paketverwaltung auf Azure Linux ab.

dnf clean all

dnf clean all entfernt alles, was DNF unter /var/cache/libdnf5 im Cache gespeichert hat. Verwenden Sie es zu folgenden Zwecken:

  • Wiederherstellen von beschädigten oder veralteten Metadaten, die Transaktionsfehler verursachen.
  • Verkleinern Sie Container-Images, indem Sie den Paket-Cache nach der Paketinstallation im selben RUN-Layer entfernen.
  • Geben Sie Speicherplatz frei.

Containerbeispiel:

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

dnf search vergleicht Schlüsselwörter mit Paketnamen und Zusammenfassungen. Beispiel:

dnf search lsof

Beispielausgabe:

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 findet das Paket, das eine bestimmte Datei, einen bestimmten Befehl oder eine bestimmte Funktion besitzt. Beispiel:

dnf provides lsof

Beispielausgabe:

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 installiert ein oder mehrere Pakete zusammen mit ihren Laufzeitabhängigkeiten:

sudo dnf install lsof

Beispielausgabe:

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 deinstalliert ein Paket zusammen mit allen Abhängigkeiten, die ausschließlich dafür abgerufen wurden:

sudo dnf remove -y lsof

Beispielausgabe:

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 aktualisiert installierte Pakete auf ihre neuesten verfügbaren Versionen.

sudo dnf upgrade

Wenn alles aktuell ist, ist die Ausgabe kurz. Beispiel:

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

Tip

Übergeben Sie -y an install, remove oder upgrade in nicht interaktiven Kontexten wie Skripten, CI-Pipelines und Container-Builds. Jeder DNF-Vorgang, der Änderungen am System vornimmt, erfordert Root-Rechte. Führen Sie ihn daher mit sudo oder als root aus.