Linux-Paketverwaltung verstehen: APT vs. YUM vs. DNF

Ein praktischer Vergleich von APT, YUM und DNF zum Installieren, Aktualisieren, Entfernen und Beheben von Problemen mit Linux-Paketen.

Linux-Paketverwaltung verstehen: APT vs. YUM vs. DNF

Wenn Sie zwischen Ubuntu, Debian, Fedora, Rocky Linux, AlmaLinux oder RHEL wechseln, ist die Paketverwaltung einer der ersten Bereiche, in dem das Muskelgedächtnis versagt. Die Aufgabe ist überall gleich: Software installieren, Sicherheitsupdates einspielen, nicht mehr benötigte Software entfernen und Abhängigkeiten konsistent halten. Die Befehle und Dateipfade unterscheiden sich jedoch so stark, dass das Kopieren des falschen Runbooks Zeit verschwenden oder einen Host beschädigen kann.

APT, YUM und DNF sind keine konkurrierenden Werkzeuge, zwischen denen Sie normalerweise auf einem Rechner wählen. Sie gehören zu verschiedenen Distributionsfamilien. APT ist das übliche High-Level-Tool auf Debian-basierten Systemen. YUM war lange Zeit das High-Level-Tool auf älteren Red Hat-basierten Systemen. DNF ist der moderne Ersatz auf aktuellen Fedora-, RHEL 8 und neuer, CentOS Stream-, Rocky Linux- und AlmaLinux-Systemen.

Was ist ein Paketmanager?

Im Kern ist ein Paketmanager eine Sammlung von Softwaretools, die den Prozess der Installation, Aktualisierung, Konfiguration und Entfernung von Softwarepaketen aus einem Betriebssystem automatisieren. Anstatt Software aus dem Quellcode zu kompilieren oder Abhängigkeiten manuell zu verwalten, interagiert ein Paketmanager mit Software-Repositories, um vorkompilierte Binärdateien abzurufen und alle erforderlichen Voraussetzungen automatisch zu erledigen.

Zu den wichtigsten Funktionen eines Paketmanagers gehören:

  • Abhängigkeitsauflösung: Identifiziert und installiert automatisch alle erforderlichen Bibliotheken und anderen Softwarepakete, die eine bestimmte Anwendung benötigt.
  • Software-Repositories: Verwaltet Verbindungen zu entfernten Servern (Repositories), auf denen Pakete gespeichert sind, und gewährleistet den Zugriff auf eine breite Palette von Software.
  • System-Upgrades: Ermöglicht die Aktualisierung einzelner Pakete oder des gesamten Betriebssystems, um Sicherheitspatches und neue Funktionen anzuwenden.
  • Paketintegrität: Überprüft die Authentizität und Integrität von Paketen mithilfe digitaler Signaturen, um Manipulationen zu verhindern.
  • Saubere Entfernung: Stellt sicher, dass beim Deinstallieren von Software alle zugehörigen Dateien und Abhängigkeiten sauber entfernt werden, um Systemmüll zu vermeiden.

Linux-Distributionen verwenden in der Regel eines von zwei Hauptpaketformaten: .deb für Debian-basierte Systeme und .rpm für Red Hat-basierte Systeme. APT verwaltet .deb-Pakete, während YUM und DNF .rpm-Pakete verwalten.

APT (Advanced Package Tool)

APT ist das Befehlszeilentool zur Verwaltung von .deb-Paketen, die hauptsächlich auf Debian und seinen Derivaten wie Ubuntu, Linux Mint, Pop!_OS und vielen anderen zu finden sind. Es ist bekannt für seine robuste Abhängigkeitsauflösung und ein riesiges Software-Ökosystem.

Kernkonzepte

  • dpkg: Während apt das High-Level-Tool ist, ist dpkg das zugrunde liegende Low-Level-Tool, das tatsächlich einzelne .deb-Pakete installiert, entfernt und verwaltet. APT fungiert als Frontend für dpkg und kümmert sich um Repositories und Abhängigkeiten.
  • sources.list: Die Datei /etc/apt/sources.list (und Dateien in /etc/apt/sources.list.d/) definiert die Speicherorte der Software-Repositories, die APT zum Auffinden von Paketen verwendet. Dies können offizielle Repositories, PPAs (Personal Package Archives) von Drittanbietern oder lokale Quellen sein.
  • Paketstruktur: Pakete werden als .deb-Dateien verteilt, bei denen es sich im Wesentlichen um Archive handelt, die die kompilierte Software, Konfigurationsdateien und Metadaten enthalten.

Häufige APT-Befehle

Historisch gesehen war apt-get der primäre Befehl, aber der Befehl apt (eingeführt um Debian 8 / Ubuntu 16.04) bietet eine benutzerfreundlichere Oberfläche, indem er die gebräuchlichsten Funktionen von apt-get und apt-cache kombiniert.

Aufgabe apt-Befehl Beschreibung
Paketlisten aktualisieren sudo apt update Aktualisiert die Liste der verfügbaren Pakete und ihrer Versionen aus den Repositories.
Installierte Pakete aktualisieren sudo apt upgrade Aktualisiert alle installierten Pakete auf die neuesten Versionen. Entfernt keine Pakete.
Vollständiges System-Upgrade sudo apt full-upgrade Aktualisiert alle installierten Pakete und entfernt bei Bedarf alte Pakete, um Abhängigkeiten aufzulösen.
Ein Paket installieren sudo apt install <paketname> Installiert ein bestimmtes Paket und seine Abhängigkeiten.
Ein Paket entfernen sudo apt remove <paketname> Entfernt ein Paket, behält aber seine Konfigurationsdateien.
Ein Paket vollständig entfernen sudo apt purge <paketname> Entfernt ein Paket und seine Konfigurationsdateien.
Nach einem Paket suchen apt search <suchbegriff> Sucht nach Paketen, die auf einen Suchbegriff passen.
Paketdetails anzeigen apt show <paketname> Zeigt detaillierte Informationen zu einem Paket an.
Alte Pakete aufräumen sudo apt autoremove Entfernt automatisch installierte Abhängigkeitspakete, die nicht mehr benötigt werden.

Beispiele

# Paketlisten aktualisieren
sudo apt update

# Den 'nginx'-Webserver installieren
sudo apt install nginx

# Alle installierten Pakete aktualisieren
sudo apt upgrade

# 'nginx' und seine Konfigurationsdateien entfernen
sudo apt purge nginx

Vorteile von APT

  • Zuverlässige Abhängigkeitsverwaltung: APT erklärt gut, was es installieren, aktualisieren, zurückhalten oder entfernen möchte, bevor es das System ändert.
  • Großes Repository-Ökosystem: Die Debian- und Ubuntu-Repositories decken eine breite Palette von Server- und Desktop-Software ab.
  • Vorhersagbares Serververhalten: Stabile Debian- und Ubuntu-LTS-Versionen priorisieren in der Regel getestete Paketversionen gegenüber den neuesten Upstream-Versionen.

Nachteile von APT

  • Neuere Softwareversionen: Manchmal sind Pakete in offiziellen Repositories aufgrund des Fokus auf Stabilität und gründliches Testen nicht die absolut neuesten Versionen.

YUM (Yellowdog Updater, Modified)

YUM war der primäre Paketmanager für Red Hat Enterprise Linux (RHEL) und seine Derivate wie CentOS, Fedora (bis vor kurzem) und Scientific Linux. Es arbeitet mit .rpm-Paketen (Red Hat Package Manager).

Kernkonzepte

  • rpm: Ähnlich wie dpkg ist rpm das Low-Level-Paketverwaltungstool für .rpm-Dateien. YUM fungiert als Frontend auf höherer Ebene.
  • .repo-Dateien: Repository-Konfigurationen werden normalerweise in .repo-Dateien im Verzeichnis /etc/yum.repos.d/ definiert. Diese Dateien geben die Basis-URL, GPG-Schlüssel und andere Metadaten für jedes Repository an.
  • Paketstruktur: Software wird als .rpm-Dateien verteilt, die Binärdateien, Bibliotheken und Metadaten enthalten.

Häufige YUM-Befehle

Aufgabe yum-Befehl Beschreibung
Nach Updates suchen sudo yum check-update Sucht nach verfügbaren Updates, ohne sie zu installieren.
Alle Pakete aktualisieren sudo yum update Aktualisiert alle installierten Pakete.
Ein Paket installieren sudo yum install <paketname> Installiert ein bestimmtes Paket und seine Abhängigkeiten.
Ein Paket entfernen sudo yum remove <paketname> Entfernt ein Paket.
Nach einem Paket suchen yum search <suchbegriff> Sucht nach Paketen, die auf einen Suchbegriff passen.
Paketdetails anzeigen yum info <paketname> Zeigt detaillierte Informationen zu einem Paket an.
Zwischengespeicherte Dateien bereinigen sudo yum clean all Bereinigt zwischengespeicherte Repository-Metadaten und Pakete.

Beispiele

# Nach verfügbaren Updates suchen
sudo yum check-update

# Den 'httpd' (Apache) Webserver installieren
sudo yum install httpd

# Alle installierten Pakete aktualisieren
sudo yum update

# 'httpd' entfernen
sudo yum remove httpd

Vorteile von YUM

  • Ausgereiftes Enterprise-Verhalten: YUM ist auf älteren RHEL- und CentOS-Systemen noch üblich, daher werden Sie es in Legacy-Runbooks sehen.
  • Transaktionsverlauf: yum history kann frühere Installationen, Updates und Entfernungen anzeigen. In einigen Fällen können Sie eine Transaktion rückgängig machen oder zurücksetzen, aber Sie sollten dies sorgfältig testen, da Konfigurationsdateien, Dienststatus und externe Daten nicht magisch wiederhergestellt werden.

Nachteile von YUM

  • Leistung: Kann im Vergleich zu modernen Paketmanagern wie DNF manchmal langsamer sein, insbesondere bei großen Repositories oder komplexen Abhängigkeitsbäumen.
  • Wird ersetzt: In neueren RHEL-basierten Systemen (RHEL 8+) hat DNF YUM als Standard-Paketmanager ersetzt, obwohl yum oft noch als Alias für dnf funktioniert.

DNF (Dandified YUM)

DNF ist der Paketmanager der nächsten Generation für Red Hat-basierte Distributionen und der Nachfolger von YUM. Es ist der Standard auf Fedora (seit Version 18), RHEL 8+, CentOS Stream, AlmaLinux und Rocky Linux. DNF behebt viele der Schwächen von YUM und bietet eine verbesserte Leistung und Abhängigkeitsauflösung.

Kernkonzepte

  • libsolv: DNF verwendet libsolv zur Abhängigkeitsauflösung, das hochoptimiert ist und eine deutlich bessere Leistung als der ältere Solver von YUM bietet.
  • Modularität: Eine Schlüsselfunktion in RHEL 8+ und Fedora, die es ermöglicht, dass verschiedene Versionen oder Streams eines Softwarepakets (z. B. Python 3.6 vs. Python 3.8) gleichzeitig verfügbar sind, und Benutzer können auswählen, welches sie installieren möchten.
  • Kompatibilität: DNF behält eine Befehlszeilenschnittstelle bei, die weitgehend mit YUM kompatibel ist, was den Umstieg für Benutzer erleichtert.

Häufige DNF-Befehle

Viele DNF-Befehle sind identisch oder sehr ähnlich zu YUM-Befehlen.

Aufgabe dnf-Befehl Beschreibung
Nach Updates suchen sudo dnf check-update Sucht nach verfügbaren Updates, ohne sie zu installieren.
Alle Pakete aktualisieren sudo dnf update Aktualisiert alle installierten Pakete.
Ein Paket installieren sudo dnf install <paketname> Installiert ein bestimmtes Paket und seine Abhängigkeiten.
Ein Paket entfernen sudo dnf remove <paketname> Entfernt ein Paket.
Nach einem Paket suchen dnf search <suchbegriff> Sucht nach Paketen, die auf einen Suchbegriff passen.
Paketdetails anzeigen dnf info <paketname> Zeigt detaillierte Informationen zu einem Paket an.
Zwischengespeicherte Dateien bereinigen sudo dnf clean all Bereinigt zwischengespeicherte Repository-Metadaten und Pakete.
Verfügbare Module auflisten dnf module list Listet verfügbare Software-Modul-Streams auf.
Ein Modul aktivieren sudo dnf module enable <modul> Aktiviert einen bestimmten Modul-Stream.

Beispiele

# Nach verfügbaren Updates suchen
sudo dnf check-update

# Die 'mariadb-server'-Datenbank installieren
sudo dnf install mariadb-server

# Alle installierten Pakete aktualisieren
sudo dnf update

# Verfügbare Node.js-Modul-Streams auflisten
dnf module list nodejs

# Node.js 16-Modul-Stream aktivieren (falls verfügbar)
sudo dnf module enable nodejs:16

# 'mariadb-server' entfernen
sudo dnf remove mariadb-server

Vorteile von DNF

  • Verbesserte Abhängigkeitsauflösung: DNF verwendet libsolv, das komplexe Abhängigkeitsentscheidungen im Allgemeinen schneller und klarer verarbeitet als älteres YUM-Verhalten.
  • Sauberere Ausgabe und APIs: DNF ist in vielen administrativen Workflows einfacher zu skripten als älteres YUM.
  • Modularität: Bietet Flexibilität bei der Installation verschiedener Softwareversionen innerhalb desselben Systems.
  • Modernes Design: Entwickelt mit einer klaren API für Erweiterungen und saubererem Code.

Nachteile von DNF

  • Neuere Technologie: Obwohl stabil, erfordern einige Funktionen, insbesondere im Zusammenhang mit Modularität, möglicherweise eine etwas steilere Lernkurve für neue Benutzer.

Hauptunterschiede und Anwendungsfälle

Der grundlegende Unterschied zwischen APT und YUM/DNF liegt in der Distributionsfamilie, die sie bedienen, und dem Paketformat, das sie verarbeiten.

Merkmal APT (Debian/Ubuntu) YUM/DNF (RHEL/Fedora)
Paketformat .deb (Debian-Paket) .rpm (Red Hat-Paket)
Zugrunde liegendes Tool dpkg rpm
Konfigurationsdateien /etc/apt/sources.list /etc/yum.repos.d/*.repo
Primäre Distributionen Debian, Ubuntu, Mint, Pop!_OS RHEL, Fedora, CentOS, AlmaLinux, Rocky Linux
Abhängigkeitslöser Intern (robust, gut getestet) YUM: Intern (langsamer); DNF: libsolv (schneller, modern)
Entwicklung apt-get -> apt yum -> dnf
Modularität Nicht direkt integriert (PPAs für Flexibilität) DNF bietet module-Streams für mehrere Versionen
  • APT ist ideal für Benutzer und Administratoren, die Wert auf absolute Stabilität, umfangreiche Community-Unterstützung und ein riesiges Software-Repository legen. Es ist die erste Wahl für Debian-basierte Systeme, die sowohl für Server als auch für Desktops beliebt sind.
  • YUM hat seinen Zweck in Unternehmensumgebungen über Jahre hinweg gut erfüllt und eine stabile und bewährte Methode zur Softwareverwaltung bereitgestellt. Obwohl es noch als Alias vorhanden ist, wird seine direkte Verwendung auslaufen.
  • DNF ist der moderne Standard für Red Hat-basierte Systeme. Es ist die Wahl für alle, die zeitgenössische RHEL-, Fedora- oder deren Derivate betreiben, und bietet Leistung, erweiterte Abhängigkeitsauflösung und Funktionen wie Modularität, was es hervorragend für Entwicklungs- und Produktionsumgebungen macht, die bestimmte Softwareversionen erfordern.

Best Practices für die Paketverwaltung

Unabhängig davon, welchen Paketmanager Sie verwenden, stellt die Einhaltung von Best Practices ein gesundes und sicheres System sicher:

  • Regelmäßige Updates: Führen Sie regelmäßig sudo apt update && sudo apt upgrade oder sudo dnf update aus, um Sicherheitspatches und Fehlerbehebungen anzuwenden.
  • Vor der Installation verstehen: Überprüfen Sie immer, was ein Paket tut und welchen Ruf es hat, bevor Sie es installieren, insbesondere aus Repositories von Drittanbietern.
  • Repository-Quellen überprüfen: Stellen Sie sicher, dass alle hinzugefügten Repositories vertrauenswürdig sind, um die Installation von schädlicher oder instabiler Software zu verhindern.
  • Aufräumen: Verwenden Sie sudo apt autoremove oder sudo dnf autoremove, um verwaiste Abhängigkeiten zu entfernen und Speicherplatz freizugeben.
  • apt show oder dnf info überprüfen: Verwenden Sie diese Befehle vor der Installation, um Details zum Paket zu erhalten, einschließlich seiner Abhängigkeiten und Größe.
  • Kritische Systeme sichern: Stellen Sie vor der Durchführung größerer Upgrades (z. B. apt full-upgrade oder Distributions-Upgrades) sicher, dass Sie ein Backup kritischer Daten und Konfigurationen haben.

Fehlerbehebung bei Problemen mit dem Paketmanager

Die meisten Fehler des Paketmanagers sind nicht mysteriös, sobald man sie in drei Kategorien einteilt: Repository-Metadaten, Abhängigkeitskonflikte und lokaler Paketdatenbankstatus.

Wenn APT meldet, dass es ein Paket nicht finden kann, beginnen Sie mit sudo apt update. APT fragt nicht bei jeder Installation alle entfernten Repositories neu ab. Es verwendet lokale Metadaten. Wenn das Paket kürzlich hinzugefügt wurde oder der Rechner seine Listen längere Zeit nicht aktualisiert hat, kann die Installation fehlschlagen, obwohl das Repository korrekt ist. Wenn apt update selbst fehlschlägt, lesen Sie die Repository-Zeile in der Fehlermeldung. Ein veraltetes PPA, ein abgelaufener Signaturschlüssel, ein defekter Mirror oder ein nicht unterstützter Distributions-Codename sind oft das eigentliche Problem.

Auf DNF- oder YUM-Systemen ist der entsprechende erste Schritt normalerweise:

sudo dnf makecache
sudo dnf repolist

Auf älteren Systemen:

sudo yum makecache
sudo yum repolist

repolist ist nützlich, da es bestätigt, ob das Repository überhaupt aktiviert ist. Ein Paket ist möglicherweise über EPEL, CodeReady Builder, PowerTools, CRB oder ein Anbieter-Repository verfügbar, nicht jedoch über die Basis-OS-Repositories. In diesem Fall besteht die Lösung nicht darin, ein zufälliges RPM aus dem Web herunterzuladen. Die sauberere Lösung besteht darin, das richtige Repository zu aktivieren und den Paketmanager die Abhängigkeiten verwalten zu lassen.

Abhängigkeitskonflikte erfordern mehr Sorgfalt. Wenn APT vorschlägt, einen großen Teil des Systems zu entfernen, halten Sie an und lesen Sie die Transaktion. Gleiches gilt für dnf remove. Das Entfernen eines Pakets kann Dienste entfernen, die davon abhängen. Auf Servern kopiere ich die vorgeschlagene Transaktion gerne in die Incident-Notizen, bevor ich sie akzeptiere. Das gibt Ihnen eine Aufzeichnung dessen, was sich geändert hat, falls danach ein Dienst ausfällt.

Verwenden Sie bei unterbrochenen Installationen den nativen Reparaturbefehl, bevor Sie eine manuelle Bereinigung versuchen:

# Debian/Ubuntu
sudo dpkg --configure -a
sudo apt -f install

# Fedora/RHEL-Familie
sudo dnf check
sudo dnf history

Manuelles Löschen unter /var/lib/dpkg, /var/lib/rpm, /var/cache/apt oder /var/cache/dnf sollte die letzte Option sein. Diese Verzeichnisse sind der Zustand des Paketmanagers, kein gewöhnliches Durcheinander.

Ein praktischer Übersetzungs-Spickzettel

Wenn Sie eine Dokumentation befolgen, die für eine andere Linux-Familie geschrieben wurde, übersetzen Sie die Absicht, nicht nur den Befehl.

Aufgabe Debian/Ubuntu Fedora/RHEL-Familie
Repository-Metadaten aktualisieren sudo apt update sudo dnf makecache
Installierte Pakete aktualisieren sudo apt upgrade sudo dnf upgrade oder sudo dnf update
Ein Paket installieren sudo apt install nginx sudo dnf install nginx
Ein Paket entfernen sudo apt remove nginx sudo dnf remove nginx
Paket und Konfiguration entfernen sudo apt purge nginx Kein genaues Äquivalent; Paketskripte können Konfiguration/Daten hinterlassen
Pakete suchen apt search nginx dnf search nginx
Paketinfo anzeigen apt show nginx dnf info nginx
Installierte Pakete auflisten apt list --installed dnf list installed
Paketdateien anzeigen dpkg -L nginx rpm -ql nginx
Besitzendes Paket für eine Datei finden dpkg -S /pfad/datei rpm -qf /pfad/datei

Das letzte Paar wird unterschätzt. Wenn Sie eine seltsame Binärdatei oder Konfigurationsdatei auf einem Host finden, sagt Ihnen dpkg -S oder rpm -qf, zu welchem Paket sie gehört. Wenn kein Paket sie besitzt, wurde die Datei möglicherweise von einer Anwendung, einem Bereitstellungsskript, einem Administrator oder einem Angreifer erstellt. Das beweist an sich nichts, gibt Ihnen aber eine bessere nächste Frage.

Der sicherste Weg, über die Paketverwaltung nachzudenken, ist einfach: Bleiben Sie in dem Tool, das Ihre Distribution erwartet, lesen Sie Transaktionen, bevor Sie sie akzeptieren, und behandeln Sie Repositories von Drittanbietern als Produktionsabhängigkeiten. Sobald Sie wissen, wo Repository-Dateien leben und wie Sie den Paketbesitz überprüfen, fühlen sich APT, YUM und DNF viel weniger wie verschiedene Welten an.