dnf (Dandified YUM) ist der Default-Paketmanager der Fedora- und RHEL-Familie. Er löst Abhängigkeiten auf, installiert und entfernt RPM-Pakete, verwaltet Repositories und kann — anders als apt — komplette Transaktionen rückgängig machen. Seit Fedora 22 (2015) hat dnf den älteren yum vollständig abgelöst; ab Fedora 41 wechselt das Ökosystem auf dnf5 mit leicht angepasster Syntax.
Was dnf macht
dnf ist die zentrale Schnittstelle, über die Software auf Fedora, RHEL und ihren Derivaten installiert, aktualisiert und entfernt wird. Es löst Paketabhängigkeiten auf, lädt RPM-Dateien aus den konfigurierten Repositories und überprüft GPG-Signaturen, bevor Pakete auf das System gelangen. Im Hintergrund arbeitet dnf mit der Bibliothek libdnf (in C geschrieben) und nutzt rpm als Low-Level-Werkzeug für die eigentliche Paketinstallation.
dnf ist der Nachfolger von yum (Yellowdog Updater, Modified). yum war jahrelang der Standard-Paketmanager der RHEL-Familie, hatte aber Schwächen bei der Performance und beim Abhängigkeits-Solver. Mit Fedora 22 (2015) wurde dnf zum Default; in RHEL 7 und älter ist yum noch der Standard, ab RHEL 8 ist dnf gesetzt — der Befehl yum existiert dort nur noch als Alias auf dnf.
Distros, die dnf nutzen
Die RHEL-Familie und ihre Community-Derivate teilen sich dnf als gemeinsamen Paketmanager. Damit ist dnf neben apt der zweite große Player im Linux-Ökosystem.
| Distribution | Erste Version mit dnf | Anmerkung |
|---|---|---|
| Fedora Workstation/Server | 22 (2015) | Treibt die dnf-Entwicklung voran |
| RHEL | 8 (2019) | Vorher yum, in RHEL 7 noch Standard |
| CentOS Stream | 8 (2019) | Upstream für RHEL |
| Rocky Linux | 8 (2021) | Binärkompatibles RHEL-Derivat |
| AlmaLinux | 8 (2021) | Binärkompatibles RHEL-Derivat |
| Oracle Linux | 8 (2019) | Mit eigenen Erweiterungen |
| Amazon Linux | 2023 | Vorher yum (Amazon Linux 2) |
Alle diese Distributionen nutzen das RPM-Paketformat (.rpm-Dateien) und das gemeinsame Repository-Format. Pakete sind zwischen ihnen oft, aber nicht immer kompatibel — Versionen von Bibliotheken und Build-Optionen können sich unterscheiden.
Wichtige Befehle
dnf folgt dem Schema dnf VERB [OPTIONEN] [PAKET]. Schreibende Befehle benötigen sudo, lesende meist nicht.
| Befehl | Wirkung |
|---|---|
dnf install PAKET | Installiert ein oder mehrere Pakete inklusive Abhängigkeiten |
dnf remove PAKET | Entfernt ein Paket; nicht mehr benötigte Abhängigkeiten werden mit entfernt |
dnf update / dnf upgrade | Aktualisiert alle installierten Pakete (beide Befehle sind identisch) |
dnf upgrade --refresh | Erzwingt vorher ein Repo-Refresh, ignoriert den Cache |
dnf search BEGRIFF | Sucht in Paketnamen und -beschreibungen |
dnf info PAKET | Zeigt Detailinformationen zu einem Paket |
dnf list installed | Listet alle installierten Pakete |
dnf list available | Listet alle in den Repos verfügbaren Pakete |
dnf list upgrades | Listet anstehende Updates |
dnf repolist | Zeigt aktive Repositories |
dnf history | Zeigt vergangene Transaktionen |
dnf history rollback ID | Macht eine Transaktion rückgängig |
dnf autoremove | Entfernt verwaiste Abhängigkeiten |
dnf downgrade PAKET | Setzt ein Paket auf eine ältere Version zurück |
dnf mark install PAKET | Markiert ein Paket als manuell installiert (schützt vor autoremove) |
dnf group install GRUPPE | Installiert eine vordefinierte Paketgruppe |
dnf clean all | Leert den Paket- und Metadaten-Cache |
Repository-Verwaltung
Repositories sind in Dateien unter /etc/yum.repos.d/ definiert — der Pfad heißt aus historischen Gründen weiterhin yum.repos.d, obwohl dnf darauf zugreift. Jede .repo-Datei beschreibt ein oder mehrere Repos mit Name, URL, GPG-Schlüssel und Aktivierungsstatus.
[fedora]
name=Fedora $releasever - $basearch
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-$releasever-$basearchStatt diese Dateien manuell zu editieren, nutzt man dnf config-manager aus dem Paket dnf-plugins-core.
sudo dnf install dnf-plugins-core
sudo dnf config-manager --add-repo https://example.com/repo/example.reposudo dnf config-manager --enable REPO-ID
sudo dnf config-manager --disable REPO-IDDas wichtigste Drittanbieter-Repository für die RHEL-Familie ist EPEL (Extra Packages for Enterprise Linux), gepflegt vom Fedora-Projekt. EPEL liefert tausende Pakete, die in den offiziellen RHEL-Repos fehlen — von htop bis zu kompletten Sprach-Stacks.
dnf history
Das Killer-Feature von dnf gegenüber apt: jede Transaktion wird in einer SQLite-Datenbank protokolliert und kann komplett rückgängig gemacht werden. Wer ein Update fährt, das das System bricht, kann mit einem einzigen Befehl in den vorherigen Zustand zurück.
dnf history listDie Ausgabe zeigt eine ID, das Datum, die Aktion (Install, Update, Remove) und die Anzahl betroffener Pakete. Mit der ID lässt sich jede Transaktion im Detail einsehen.
dnf history info 42Und der wichtigste Befehl: das vollständige Zurückrollen einer Transaktion.
sudo dnf history rollback 42Damit werden alle Paketversionen wieder auf den Stand vor Transaktion 42 gesetzt — vorausgesetzt, die alten RPM-Versionen sind in den Repositories noch verfügbar. Ein vergleichbares Feature gibt es bei apt schlicht nicht.
Module und Streams
Mit RHEL 8 wurde das Konzept der Module eingeführt (Fedora-Modularity). Ein Modul ist eine Sammlung von Paketen, die in mehreren parallelen Streams verfügbar sein können — typischerweise unterschiedliche Major-Versionen einer Software.
dnf module list
dnf module list phpSo kann man zum Beispiel zwischen PHP 7.4 und PHP 8.0 wählen, ohne die Pakete extern zu beziehen.
sudo dnf module install php:8.0In Fedora Workstation spielen Module heute kaum noch eine Rolle — Fedora bewegt sich davon weg. In RHEL 8/9 und ihren Klonen sind sie aber zentral, gerade auf Servern. Wer ein Paket im Repo nicht findet, sollte prüfen, ob es in einem deaktivierten Modul-Stream steckt.
dnf vs. yum
dnf wurde als yum-Ersatz mit klaren Verbesserungen entwickelt. Die Befehlssyntax ist bewusst kompatibel — yum install … funktioniert auf modernen Systemen weiterhin, ist aber nur ein Alias.
| Aspekt | yum | dnf |
|---|---|---|
| Implementierung | Python 2, eigener Solver | Python 3 mit libdnf (C), libsolv-Solver |
| Performance | Langsam bei großen Repos | Deutlich schneller |
| Abhängigkeitsauflösung | Eigener, oft fehleranfälliger Algorithmus | libsolv (von SUSE), präzise und schnell |
| Plugin-System | yum-plugins | dnf-plugins-core, neu strukturiert |
| Konfiguration | /etc/yum.conf | /etc/dnf/dnf.conf (Repos weiterhin in /etc/yum.repos.d/) |
| Module/Streams | Nicht unterstützt | Voll unterstützt |
| API-Stabilität | Wechselhaft | Stabile Python-API |
Praxis-Patterns
System komplett aktualisieren
sudo dnf upgrade --refresh--refresh erzwingt ein Repo-Update, bevor die Pakete aktualisiert werden. Ohne das Flag arbeitet dnf mit dem zwischengespeicherten Metadaten-Stand — der oft wenige Minuten alt sein kann, bei langen Cache-Lifetimes aber auch Stunden. Auf Servern, die regelmäßig auf den neuesten Stand gebracht werden, ist --refresh der sichere Default.
Paket suchen
dnf search htopDurchsucht Paketnamen und Kurzbeschreibungen. Für eine Suche nur in Paketnamen verwendet man dnf search --names. Volltextsuche in den Beschreibungen liefert dnf search all BEGRIFF.
Paket installieren
sudo dnf install htopdnf zeigt vor der Installation eine Liste aller Pakete, die mitkommen — Abhängigkeiten und schwache Abhängigkeiten (Recommends). Mit -y lässt sich die Bestätigungsabfrage überspringen, was in Skripten gewünscht, am Terminal aber riskant ist.
Update rückgängig machen
dnf history list
sudo dnf history rollback 42Erst die Transaktions-ID des problematischen Updates ermitteln, dann mit rollback zurück. Voraussetzung: Die alten Paketversionen müssen noch in einem aktiven Repository verfügbar sein. Bei Fedora-Updates innerhalb derselben Release-Version klappt das in den meisten Fällen.
EPEL aktivieren
sudo dnf install epel-release
sudo dnf upgradeepel-release ist ein Meta-Paket, das die EPEL-Repository-Konfiguration und den GPG-Schlüssel hinzufügt. Nach der Installation stehen tausende zusätzliche Pakete zur Verfügung. Für Fedora ist EPEL nicht relevant — dort sind die meisten EPEL-Pakete bereits in den Hauptrepos enthalten.
Cleanup
sudo dnf autoremove
sudo dnf clean allautoremove entfernt Pakete, die nur als Abhängigkeit installiert wurden und jetzt nicht mehr benötigt werden. clean all leert den heruntergeladenen Paket-Cache (typischerweise unter /var/cache/dnf/) und gibt mehrere hundert Megabyte frei. Praktisch nach größeren Updates oder wenn der Plattenplatz knapp wird.
Häufige Stolperfallen
yum-Befehle funktionieren noch — sind aber deprecated.
Auf modernen Fedora- und RHEL-Systemen ist yum nur noch ein Symlink oder Wrapper auf dnf. Das ist praktisch beim Umstieg, führt aber zu schlechten Angewohnheiten: Tutorials und Skripte aus der RHEL-7-Ära verwenden weiterhin yum, obwohl die Befehle teilweise nicht 1:1 äquivalent sind. Insbesondere yum-config-manager heißt heute dnf config-manager, und einige Plugins existieren nur noch unter dnf-Namen. Bei neuen Skripten konsequent dnf verwenden — und bei alten Skripten prüfen, ob die Aliasse wirklich identisches Verhalten zeigen.
dnf-3 vs. dnf-5 — Fedora 41+ wechselt die Engine.
Mit Fedora 41 wird dnf5 zum Default. Die Neuimplementierung ist deutlich schneller und vollständig in C++ geschrieben, hat aber an einigen Stellen leicht andere Syntax und ein anderes Output-Format. Skripte, die auf dnf-Output mit grep oder awk parsen, brechen unter Umständen. Auch einige Subkommandos und Flags wurden umbenannt oder sind verschwunden. Wer Skripte für gemischte Umgebungen schreibt, sollte sich entweder auf das gemeinsame Subset beschränken oder die dnf-Version per dnf —version abfragen.
Ohne --refresh arbeitet dnf mit gecachten Metadaten.
dnf cached die Repository-Metadaten standardmäßig für mehrere Stunden. Ein dnf upgrade ohne —refresh kann dadurch Pakete auslassen, die erst kürzlich in die Repos gelangt sind. Das ist normalerweise unkritisch, aber bei dringenden Sicherheitsupdates problematisch. Mit dnf upgrade —refresh oder dnf clean expire-cache lässt sich das erzwingen. Auf Servern, die unattended laufen sollen, übernimmt dnf-automatic diese Aufgabe automatisiert.
dnf upgrade und dnf update sind dasselbe — nicht wie bei apt.
Bei apt sind update (Repo-Listen aktualisieren) und upgrade (Pakete aktualisieren) zwei völlig unterschiedliche Befehle. Bei dnf sind update und upgrade hingegen exakte Synonyme — beide aktualisieren installierte Pakete. Das Repo-Refresh passiert bei dnf entweder automatisch (wenn der Cache abgelaufen ist) oder explizit über —refresh. Wer von Debian/Ubuntu kommt, läuft hier regelmäßig in Verwirrung, weil dnf update nicht das tut, was apt update tut.
Modul-Streams können Pakete unsichtbar machen.
Wenn auf RHEL 8/9 ein Paket in dnf search nicht auftaucht, obwohl es offensichtlich existieren müsste, liegt es oft an einem deaktivierten oder nicht eingeschalteten Modul-Stream. dnf module list zeigt alle Module mit ihrem Status. Erst wenn ein Stream aktiviert ist (dnf module enable NAME:STREAM), werden seine Pakete für dnf install sichtbar. Diese zusätzliche Indirektionsebene ist eine der häufigsten Quellen für „dnf sagt, das Paket gibt es nicht” auf Enterprise-Distributionen.
GPG-Key-Probleme bei neuen Repos — und warum --nogpgcheck gefährlich ist.
Beim Hinzufügen eines neuen Repositories prüft dnf die Signatur der Pakete gegen den GPG-Schlüssel des Repos. Schlägt das fehl, bricht die Installation ab. Es ist verlockend, dann einfach —nogpgcheck zu setzen — aber damit verliert man die Garantie, dass die Pakete authentisch und unverändert sind. Der richtige Weg: den GPG-Schlüssel manuell mit rpm —import oder über die gpgkey-Direktive der .repo-Datei vertrauenswürdig importieren. Nur in absoluten Ausnahmefällen (lokales Test-Repo) ist —nogpgcheck akzeptabel.
Group Install nutzt das @-Präfix.
Paketgruppen werden mit dem @-Präfix referenziert: sudo dnf install @virtualization installiert die komplette Virtualisierungs-Gruppe (libvirt, virt-manager, qemu-kvm und Abhängigkeiten). Ohne das @ würde dnf nach einem Paket namens „virtualization” suchen und scheitern. Alternativ funktioniert dnf group install virtualization als Lang-Form. Welche Gruppen verfügbar sind, zeigt dnf group list — auf Servern liefert das einen schnellen Weg, ganze Funktionsbündel mit einem Befehl einzurichten.
Weiterführende Ressourcen
Externe Quellen
- dnf(8) – Manpage — Offizielle Manpage mit allen Subkommandos und Optionen
- Fedora Docs: DNF — Fedora-eigene Einführung und Referenz
- Fedora Wiki: DNF — Hintergrund, Architektur und Plugin-Übersicht
- Red Hat Customer Portal: Managing software with DNF — Offizielle RHEL-Dokumentation
- EPEL Wiki — Extra Packages for Enterprise Linux, das wichtigste Drittanbieter-Repo
- DNF5 Migration Guide — Übersicht der Änderungen beim Wechsel auf dnf5
Verwandte Artikel
- rpm – Pakete auf RPM-Ebene verwalten — Das Basiswerkzeug hinter dnf
- pacman – Paketmanager für Arch Linux — Vergleich zu einem Rolling-Release-Paketmanager
- apt – Paketmanager für Debian und Ubuntu — Das Pendant in der Debian-Welt
- Paketquellen verstehen — Wie Repositories und GPG-Signaturen funktionieren
- snap – Universal-Pakete — Distroübergreifendes Paketformat als Alternative