Fedora: Der umfassende Leitfaden vom Paketmanager DNF für Anfänger

DNF (Dandified Yum) ist der Standard-Paketmanager in Fedora seit Version 22. Er ist der Nachfolger von YUM und wurde entwickelt, um eine schnellere und zuverlässigere Paketverwaltung zu ermöglichen.

Grundlegende Konzepte

DNF verwaltet Softwarepakete im RPM-Format und organisiert sie in Repositories. Die wichtigsten sind:

  • fedora: Hauptrepository für freie Software
  • updates: Sicherheitsupdates und Bugfixes
  • rpmfusion: Zusätzliche Software (muss separat aktiviert werden)

Die Konfigurationsdatei

Die Hauptkonfigurationsdatei liegt unter /etc/dnf/dnf.conf.

Hier ein Beispiel mit wichtigen Einstellungen:

Bash
[main]
gpgcheck=1
installonly_limit=3
clean_requirements_on_remove=True
best=True
skip_if_unavailable=True

System aktualisieren

⚠️ WICHTIG VOR DEM UPDATE:

  1. Lies die Fedora News auf der offiziellen Website
  2. Erstelle ein Backup wichtiger Daten
  3. Stelle eine stabile Internetverbindung sicher
Bash
sudo dnf upgrade

Beispielausgabe:

Bash
Last metadata expiration check: 0:02:38 ago
Dependencies resolved.
================================================================================
Package             Arch        Version           Repository           Size
================================================================================
Upgrading:
kernel             x86_64      6.5.6-200.fc38    updates             32 M
firefox            x86_64      119.0-1.fc38      updates            270 M
[...]

Was passiert hier?

  • DNF prüft die Paketdatenbank
  • Zeigt verfügbare Updates
  • Listet Abhängigkeiten
  • Wartet auf Bestätigung

Installation und Verwaltung

Einzelne Pakete installieren
Bash
sudo dnf install firefox

Beispielausgabe:

Bash
Last metadata expiration check: 1:15:29 ago
Dependencies resolved.
================================================================================
 Package            Architecture    Version            Repository          Size
================================================================================
Installing:
 firefox            x86_64         119.0-1.fc38       updates            270 M
Installing dependencies:
 firefox-libs       x86_64         119.0-1.fc38       updates            175 M
 gtk3              x86_64         3.24.38-1.fc38     fedora              12 M

Transaction Summary
================================================================================
Install  3 Packages

Total download size: 457 M
Installed size: 892 M
Is this ok [y/N]:

Was passiert hier?

  • DNF prüft die Abhängigkeiten
  • Zeigt alle zu installierenden Pakete
  • Gibt Download- und Installationsgröße an
  • Wartet auf Bestätigung

⚠️ WICHTIGE HINWEISE:

  • Lies immer die Zusammenfassung
  • Prüfe den benötigten Speicherplatz
  • Achte auf zusätzliche Abhängigkeiten
Erweiterte Installationsoptionen

Installation ohne Bestätigung

Bash
sudo dnf install -y firefox
⚠️ WARNUNG: Nutze -y nur, wenn du dir sicher bist!

Installation einer bestimmten Version

Bash
sudo dnf install firefox-118.0-1.fc38

Installation aus einer bestimmten Quelle

Bash
sudo dnf --enablerepo=rpmfusion-nonfree install vlc
Gruppen installieren

DNF unterstützt Paketgruppen für zusammengehörige Software:

Bash
# Verfügbare Gruppen anzeigen
dnf group list

# Details einer Gruppe anzeigen
dnf group info "Development Tools"

# Gruppe installieren
sudo dnf group install "Development Tools"

Pakete entfernen

Einfache Paketentfernung

Bash
sudo dnf remove firefox

Beispielausgabe

Bash
Dependencies resolved.
================================================================================
 Package         Architecture     Version              Repository          Size
================================================================================
Removing:
 firefox         x86_64          119.0-1.fc38         @updates          892 M
Removing unused dependencies:
 firefox-libs    x86_64          119.0-1.fc38         @updates          175 M

Transaction Summary
================================================================================
Remove  2 Packages

Is this ok [y/N]:

Automatische Bereinigung

Nicht mehr benötigte Abhängigkeiten entfernen:

Bash
sudo dnf autoremove

Beispielausgabe

Bash
Dependencies resolved.
================================================================================
 Package          Architecture      Version           Repository          Size
================================================================================
Removing:
 gtk3-devel      x86_64           3.24.38-1.fc38    @fedora            12 M
 [...weitere nicht mehr benötigte Pakete...]

Transaction Summary
================================================================================
Remove  5 Packages

Is this ok [y/N]:

Paketinformationen

Detaillierte Paketinformationen

Bash
dnf info firefox

Beispielausgabe

Bash
Last metadata expiration check: 2:12:33 ago
Available Packages
Name         : firefox
Version      : 119.0
Release      : 1.fc38
Architecture : x86_64
Size         : 270 M
Source       : firefox-119.0-1.fc38.src.rpm
Repository   : updates
Summary      : Mozilla Firefox Web browser
URL          : https://www.mozilla.org/firefox/
License      : MPLv1.1 or GPLv2+ or LGPLv2+
Description  : Mozilla Firefox is an open-source web browser...

Paketabhängigkeiten anzeigen

Bash
dnf deplist firefox

Dateien eines installierten Pakets anzeigen

Bash
dnf repoquery -l firefox

Cache-Verwaltung

Cache bereinigen

Bash
sudo dnf clean all

Was wird gereinigt?

  • Heruntergeladene RPM-Pakete
  • Header-Dateien
  • Metadaten
  • Cache-Verzeichnisse

Teilweise Cache-Bereinigung

Nur alte Pakete entfernen:

Bash
sudo dnf clean packages

Nur Metadaten bereinigen:

Bash
sudo dnf clean metadata

Systemaktualisierung

Systemaktualisierung im Detail

Vorbereitende Maßnahmen (SEHR WICHTIG!)

Fedora Release Notes prüfen unter: https://docs.fedoraproject.org/en-US/releases/

⚠️ KRITISCHE WARNUNGEN:

  • Backup wichtiger Daten erstellen
  • Stabile Stromversorgung sicherstellen
  • Genügend Speicherplatz prüfen
  • Release Notes auf kritische Updates prüfen
Update-Prozess

Metadaten aktualisieren

Bash
sudo dnf check-update

Vollständiges Systemupdate

Bash
sudo dnf upgrade

Beispielausgabe mit Erklärungen:

Bash
Last metadata expiration check: 0:15:24 ago
Dependencies resolved.
================================================================================
 Package               Arch   Version                  Repository          Size
================================================================================
Upgrading:
 kernel               x86_64 6.5.6-200.fc38          updates            32 M
 systemd              x86_64 254-1.fc38              updates            15 M
 firefox              x86_64 119.0.1-1.fc38          updates           270 M
 [...weitere Pakete...]

Transaction Summary
================================================================================
Upgrade  15 Packages

Total download size: 425 M
Is this ok [y/N]:

Was bedeuten verschiedene Update-Typen?

  • kernel: Erfordert Neustart
  • systemd: Kritische Systemkomponente
  • Sicherheitsupdates: Zeitnah installieren
  • Normale Programmupdates: Meist unkritisch
DNF-Transaktionshistorie

Historie anzeigen

Bash
dnf history

Details einer Transaktion

Bash
dnf history info 123

Transaktion rückgängig machen

Bash
sudo dnf history undo 123

Troubleshooting

Häufige Probleme und Lösungen

Beschädigte Metadaten

Bash
error: Failed to synchronize cache for repo 'fedora'
Lösung

Cache komplett leeren

Bash
sudo dnf clean all

Metadaten neu laden

Bash
sudo dnf makecache
Repository-Probleme

Repository-Status prüfen

Bash
dnf repolist all

Repository neu aktivieren

Bash
sudo dnf config-manager --set-enabled fedora
Abhängigkeitskonflikte

Konflikt analysieren

Bash
dnf repoquery --requires --resolve paketname

Alternative Version installieren

Bash
sudo dnf --allowerasing install paketname
⚠️ WARNUNG: --allowerasing mit Vorsicht verwenden!

Fortgeschrittene DNF-Funktionen

DNF-Plugins installieren
Bash
sudo dnf install dnf-plugins-core
Nützliche Plugin-Befehle

System-Upgrade auf neue Fedora-Version

Bash
sudo dnf system-upgrade download --releasever=39

Automatische Updates konfigurieren

Bash
Automatische Updates konfigurieren
Repository-Management
RPM Fusion hinzufügen
Bash
sudo dnf install https://download1.rpmfusion.org/free/fedora/rpmfusion-free-release-$(rpm -E %fedora).noarch.rpm
Repository-Prioritäten setzen

In /etc/yum.repos.d/fedora.repo

TypeScript
[fedora]
priority=1

Performance-Optimierung

DNF-Konfiguration anpassen

In /etc/dnf/dnf.conf:

Bash
[main]
max_parallel_downloads=10
defaultyes=True
keepcache=True
Fastest Mirror Plugin
Plugin installieren
Bash
sudo dnf install dnf-plugins-core

In dnf.conf aktivieren

TypeScript
fastestmirror=True

Best Practices

Tägliche Wartung
Bash
# System aktualisieren
sudo dnf upgrade

# Nicht benötigte Pakete entfernen
sudo dnf autoremove

# Cache bereinigen
sudo dnf clean all
System-Checks
Bash
# RPM-Datenbank prüfen
sudo rpm --rebuilddb

# Systemjournal prüfen
journalctl -p 3 -xb

Sicherheitsmaßnahmen

Vor kritischen Updates
Bash
# System-Snapshot erstellen (wenn verfügbar)
sudo snapper create --description "Vor Update"

# Paketliste sichern
dnf repoquery --userinstalled > ~/pkglist-$(date +%Y%m%d).txt

Modulare Pakete

Was sind Module?

Module sind Sammlungen zusammengehöriger RPM-Pakete, die verschiedene Versionen der gleichen Software ermöglichen.

Module verwalten

Verfügbare Module anzeigen

Bash
dnf module list

# Beispielausgabe:
Name          Stream      Profiles                           Summary
=====================================================================================
nodejs        16 [d]      common [d], development, minimal   Javascript runtime
nodejs        18          common [d], development, minimal   Javascript runtime
postgresql    13 [d]      client, server [d]                 PostgreSQL server
postgresql    14          client, server [d]                 PostgreSQL server

Was bedeuten die Markierungen?

  • [d]: Standard-Stream/Profil
  • [e]: Aktiviert
  • [x]: Installiert
Modul aktivieren und installieren

Spezifische Version aktivieren

Bash
sudo dnf module enable postgresql:13

Mit bestimmtem Profil installieren

Bash
sudo dnf module install postgresql:13/server

⚠️ WICHTIG:

  • Module können nicht gemischt werden
  • Aktivierung ist permanent
  • Reset möglich mit dnf module reset

Erweiterte Paketoperationen

Paket-Verifizierung

Alle installierten Pakete verifizieren

Bash
sudo dnf verify

Einzelnes Paket prüfen

Bash
sudo dnf verify firefox
RPM-Signaturen prüfen

Schlüssel importieren

Bash
sudo rpm --import /etc/pki/rpm-gpg/RPM-GPG-KEY-fedora-*

Paket verifizieren

Bash
rpm -K paketname.rpm
Downgrade von Paketen

Verfügbare Versionen anzeigen

Bash
dnf list --showduplicates firefox

Auf bestimmte Version downgraden

Bash
sudo dnf downgrade firefox-118.0-1.fc38

⚠️ WARNUNG:

  • Downgrades können Abhängigkeitsprobleme verursachen
  • Nur im Notfall verwenden
  • System vorher sichern

Performance-Tuning

Parallele Downloads optimieren

In /etc/dnf/dnf.conf:

TypeScript
[main]
max_parallel_downloads=10
deltarpm=true
fastestmirror=true

Was bewirken diese Einstellungen?

  • max_parallel_downloads: Anzahl gleichzeitiger Downloads
  • deltarpm: Nur Änderungen herunterladen
  • fastestmirror: Schnellste Server wählen
Metadata-Caching

Metadata-Cache erstellen

Bash
sudo dnf makecache

Cache-Gültigkeit einstellen

TypeScript
metadata_expire=12h

Automatisierung

DNF-Automatic einrichten
Bash
sudo dnf install dnf-automatic

Konfiguration in /etc/dnf/automatic.conf:

TypeScript
[commands]
upgrade_type = security
download_updates = yes
apply_updates = no

[emitters]
emit_via = email

[email]
email_from = root@localhost
email_to = admin@example.com
Service aktivieren
Bash
sudo systemctl enable --now dnf-automatic.timer

Batch-Operationen

Paketlisten verarbeiten

Liste installierter Pakete erstellen

Bash
dnf repoquery --userinstalled > packages.txt

Pakete aus Liste installieren

Bash
sudo dnf install $(cat packages.txt)

Experten-Tipps

priority-Plugin installieren
Bash
sudo dnf install dnf-plugins-core

Priorität in .repo-Datei setzen

TypeScript
priority=1
Debugging-Tools

DNF-Debug-Ausgabe

Bash
dnf -v install firefox
dnf --debuglevel=10 update

Transaktions-Debug

Bash
# Debug-Logs aktivieren
debuglevel=10
logdir=/var/log/dnf

Sicherheit und Backup

Mit LVM-Snapshots

Snapshot erstellen

Bash
sudo lvcreate -s -n snap01 -L 5G /dev/vg0/root

Snapshot zurückrollen

Bash
sudo lvconvert --merge /dev/vg0/snap01
Paket-Sicherung

RPM-Datenbank sichern

Bash
sudo cp -a /var/lib/rpm /backup/rpm-$(date +%Y%m%d)

Paketlisten exportieren

Bash
dnf repoquery --userinstalled > /backup/packages-$(date +%Y%m%d).txt
Abschließende Empfehlungen
  1. Dokumentation führen
    • Wichtige Änderungen protokollieren
    • Anpassungen der DNF-Konfiguration dokumentieren
    • Probleme und Lösungen aufzeichnen
  2. Regelmäßige Wartung
    • Wöchentliche Updates durchführen
    • Monatliche System-Checks
    • Vierteljährliche Cache-Bereinigung
  3. Sicherheit
    • Nur vertrauenswürdige Repositories verwenden
    • Regelmäßige Backups erstellen
    • Sicherheitsupdates zeitnah einspielen

Wichtige Ressourcen

Offizielle Dokumentation
Community-Ressourcen
Hilfreiche Tools und Dokumentationen

Fazit

DNF ist ein leistungsfähiger und moderner Paketmanager, der Fedora-Benutzern eine robuste und flexible Möglichkeit zur Systemverwaltung bietet. Mit seinen fortschrittlichen Funktionen wie modularen Paketen, automatischen Updates und umfangreichen Debugging-Möglichkeiten ist DNF bestens für sowohl Einsteiger als auch fortgeschrittene Benutzer geeignet.

⚠️ Wichtiger Hinweis:

Fedora entwickelt sich ständig weiter. Überprüfe regelmäßig die offizielle Dokumentation auf Änderungen und neue Funktionen. Die hier beschriebenen Methoden können sich mit der Zeit ändern. Mit diesem umfassenden Wissen und den zur Verfügung stehenden Ressourcen bist du gut gerüstet, um dein Fedora-System effektiv mit DNF zu verwalten.

Denk immer daran: Die Fedora-Community ist hilfsbereit und unterstützend - zögere nicht, Fragen zu stellen und dich einzubringen!

Aktualisierungen und Änderungen

Dieser Artikel wird regelmäßig aktualisiert, um neue Entwicklungen und Best Practices zu berücksichtigen. Die letzte Aktualisierung erfolgte am 20. Oktober 2024.

Kommentar verfassen