DNF Package Manager: Modern RPM Management (Artikel 065)
Beherrschung des DNF-Paketmanagers unter RHEL und Rocky Linux. Erfahren Sie alles über Modul-Streams, Transaktions-Historie und die effiziente Verwaltung von RPM-Paketen.
# DNF Deep Dive: Paketmanagement der nächsten Generation
TL;DR / Management Summary DNF (Dandified YUM) ist der Nachfolger von YUM und der Standard-Paketmanager für RHEL 8/9, Rocky Linux und Fedora. Er ist schneller, braucht weniger RAM und hat ein deutlich besseres Dependency-Handling. Wichtigster Enterprise-Unterschied zu APT (Debian): Das Konzept der Application Streams (Modules), mit dem verschiedene Versionen der gleichen Software (z.B. PHP 7.4 vs. 8.1) sauber getrennt verwaltet werden können.
# 1. Einführung & Architektur
Vom alten YUM zum modernen DNF.
DNF nutzt die libsolv Library für die Auflösung von Abhängigkeiten (wie auch openSUSE).
# Der RPM-Stack (Mermaid)
graph TD
A[Admin / CLI: dnf] --> B[DNF Logic / Dependency Solver]
B --> C[RPM Database /var/lib/rpm]
B --> D[Cache /var/cache/dnf]
B --> E[Repositories BaseOS, AppStream, EPEL]
C --> F[Installed Files /bin, /etc, /lib]
# 2. Grundlegende Befehle
Das tägliche Handwerkszeug.
| Aufgabe | Befehl |
|---|---|
| Paket suchen | dnf search <name> |
| Paket installieren | dnf install <name> |
| System-Update | dnf upgrade |
| Paket entfernen | dnf remove <name> |
| Info zum Paket | dnf info <name> |
# Die Transaktions-Historie
Eines der mächtigsten Features von DNF:
# Zeige alle vergangenen Aktionen
dnf history
# Mache die letzte Aktion rückgängig (Rollback)
sudo dnf history undo last
# 3. Application Streams (Modules)
Mehrere Versionen, ein Repo.
RHEL/Rocky trennt das OS (BaseOS) von den Applikationen (AppStream). In AppStream können Sie via Module entscheiden, welche Version Sie wollen.
# Zeige verfügbare Module (z.B. für NodeJS)
dnf module list nodejs
# Aktiviere einen bestimmten Stream
sudo dnf module enable nodejs:18
# Installiere das Standard-Profil des Streams
sudo dnf install @nodejs
# 4. Day-2 Operations: Cache & Repositories
Effizienz steigern.
# Repository-Management
# Zeige alle aktiven Quellen
dnf repolist
# Deaktiviere ein Repo temporär
dnf upgrade --disablerepo=epel
# Aufräumen
# Löscht alle gecachten Pakete und Metadaten
sudo dnf clean all
# 5. Troubleshooting & “War Stories”
Wenn die Abhängigkeiten streiken.
# Story 1: “Der korrupte RPM-Datenbank”
Symptom: dnf bricht mit Fehlermeldungen über Datenbank-Locks oder ungültige Header ab.
Ursache: Ein harter Abbruch während einer Installation oder Disk-Fehler.
Lösung: Reparieren Sie die RPM-Datenbank:
sudo rm -f /var/lib/rpm/__db*
sudo rpm --rebuilddb
sudo dnf clean all
# Story 2: “Das hängende Paket-Update (GPG)”
Symptom: dnf upgrade schlägt fehl, weil der GPG-Key eines Drittanbieters nicht verifiziert werden kann.
Ursache: Der Key wurde auf dem Server aktualisiert, aber DNF nutzt noch den alten.
Lösung: Importieren Sie den Key manuell neu oder nutzen Sie dnf upgrade --nogpgcheck (nur als absolut letzter Ausweg in sicheren Netzen!).
# 6. Fazit & Empfehlung
- Automation: DNF ist ideal für Skripte. Nutzen Sie das
-yFlag für non-interactive runs. - Modules: Prüfen Sie vor der Installation von PHP/Python/Database immer
dnf module list, um die für Sie passende Version zu wählen. - EPEL: Installieren Sie fast immer das EPEL-Repo (
dnf install epel-release), da es viele nützliche Admin-Tools (htop, atop, etc.) enthält, die nicht in RHEL/Rocky enthalten sind.
# Anhang: Cheatsheet
| Befehl | Wirkung |
|---|---|
dnf provides /usr/bin/python3 |
Findet das Paket, das eine bestimmte Datei enthält. |
dnf group list |
Zeigt Paket-Gruppen (z.B. ‘Development Tools’). |
dnf autoremove |
Entfernt unnötige Abhängigkeiten. |
dnf check-update |
Zeigt verfügbare Updates ohne sie zu installieren. |
dnf download --source <name> |
Lädt den Quellcode eines Pakets. |