linux-rhel-centos-fedora package-management dnf rpm rhel rocky-linux

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 -y Flag 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.