15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen
09.10.2024

apt vs yum: Linux-Paketverwaltung für Systemadministratoren erklärt

Linux-Paketverwaltung ist der Mechanismus, durch den Software auf einem Linux-System installiert, aktualisiert, konfiguriert und entfernt wird. apt (Advanced Package Tool) verwaltet `.deb`-Pakete auf Debian-basierten Distributionen wie Ubuntu und Linux Mint, während yum (Yellowdog Updater Modified) `.rpm`-Pakete auf Red Hat-basierten Systemen wie CentOS und RHEL verwaltet. Beide Tools abstrahieren die Komplexität der Abhängigkeitsauflösung, der Repository-Interaktion und der Paketintegritätsprüfung – sind jedoch architektonisch unterschiedlich und nicht austauschbar.

Zu wissen, welches Tool Ihr System verwaltet, ist kein optionales Wissen. Es beeinflusst direkt, wie Sie Server bereitstellen, Deployments automatisieren, Konfigurationsmanagement-Skripte (Ansible, Chef, Puppet) schreiben und Sicherheits-Patch-Zyklen in Produktionsumgebungen pflegen.

Was ist ein Linux-Paketmanager

Ein Paketmanager ist eine Sammlung von Software-Tools, die den gesamten Lebenszyklus von Software auf einem Linux-System automatisiert: Pakete aus Remote-Repositories abrufen, kryptografische Signaturen verifizieren, Abhängigkeitsketten auflösen und installieren, Pre/Post-Install-Skripte ausführen und die Installation in einer lokalen Paketdatenbank registrieren.

Die Paketdatenbank ist entscheidend und wird oft übersehen. Auf Debian-basierten Systemen befindet sie sich unter `/var/lib/dpkg/`. Auf RPM-basierten Systemen liegt sie in `/var/lib/rpm/`. Beide Datenbanken führen die maßgebliche Aufzeichnung darüber, was installiert ist, in welcher Version und mit welcher Dateieigentümerschaft – und sind damit das Rückgrat von System-Auditing und Rollback-Operationen.

Paketmanager interagieren mit Repositories – Remote-Servern, die kuratierte Sammlungen kompilierter, signierter Pakete hosten. Die Repository-Metadaten (Paketlisten, Prüfsummen, GPG-Schlüssel) werden lokal synchronisiert, bevor eine Installation stattfindet. Deshalb muss `apt update` oder `yum check-update` in automatisierten Skripten den Installationsbefehlen vorangehen.

apt: Advanced Package Tool für Debian-basierte Systeme

apt ist die High-Level-Befehlszeilenschnittstelle für die Paketverwaltung auf Debian, Ubuntu, Linux Mint, Pop!_OS und allen Derivaten. Es arbeitet auf dem Low-Level-Tool `dpkg`, das die eigentliche `.deb`-Paketinstallation übernimmt. Betrachten Sie `dpkg` als den Motor und `apt` als den intelligenten Fahrer, der weiß, wo er Treibstoff holen und in welcher Reihenfolge er ihn verbrennen soll.

Die apt-Toolchain im Detail

Das apt-Ökosystem umfasst mehrere Binärdateien, die unterschiedlichen Zwecken dienen:

  • `apt` — die moderne, empfohlene interaktive CLI (eingeführt in Ubuntu 14.04 / Debian 8)
  • `apt-get` — das ältere, skriptfähige Backend; in Shell-Skripten bevorzugt aufgrund seines stabilen Ausgabeformats
  • `apt-cache` — fragt den lokalen Paket-Cache nach Metadaten, Beschreibungen und Abhängigkeitsgraphen ab
  • `dpkg` — der Low-Level-Paketinstaller; wird direkt verwendet, wenn eine lokale `.deb`-Datei mit `dpkg -i package.deb` installiert wird
  • `apt-mark` — markiert Pakete als gehalten, automatisch installiert oder manuell installiert

Grundlegende apt-Befehle mit technischem Kontext

Den lokalen Paketindex aktualisieren:

“`bash

sudo apt update

“`

Dies ruft aktualisierte Metadaten aus allen konfigurierten Repositories in `/etc/apt/sources.list` und `/etc/apt/sources.list.d/` ab. Es installiert oder aktualisiert nichts. Diesen Befehl vor jeder Installationsoperation auszuführen ist obligatorisch – das Überspringen bedeutet, dass Sie möglicherweise veraltete Paketversionen auflösen oder Sicherheits-Patches verpassen.

Installierte Pakete aktualisieren:

“`bash

sudo apt upgrade

“`

Aktualisiert alle Pakete, für die eine neuere Version existiert, entfernt jedoch keine aktuell installierten Pakete und installiert keine neuen Pakete zur Erfüllung einer Abhängigkeit. Für ein aggressiveres Upgrade, das Abhängigkeitsänderungen behandelt:

“`bash

sudo apt full-upgrade

“`

`full-upgrade` (früher `dist-upgrade`) installiert neue Abhängigkeiten und entfernt bei Bedarf konfliktverursachende Pakete. Verwenden Sie es mit Vorsicht auf Produktionssystemen.

Ein Paket installieren:

“`bash

sudo apt install package_name

“`

Um mehrere Pakete in einer einzigen Transaktion zu installieren:

“`bash

sudo apt install nginx curl git

“`

Die Kombination von Installationen in einem Befehl ist effizienter, da apt den vollständigen Abhängigkeitsgraphen einmal statt wiederholt auflöst.

Ein Paket entfernen (Konfigurationsdateien beibehalten):

“`bash

sudo apt remove package_name

“`

Ein Paket vollständig entfernen (Binärdateien und Konfigurationsdateien entfernen):

“`bash

sudo apt purge package_name

“`

Bevorzugen Sie immer `purge` gegenüber `remove` bei der Außerbetriebnahme eines Dienstes. Zurückgelassene Konfigurationsdateien von `remove` können zu unerwartetem Verhalten führen, wenn das Paket später neu installiert wird.

Verwaiste Abhängigkeiten entfernen:

“`bash

sudo apt autoremove

“`

Dies wird häufig vernachlässigt und führt im Laufe der Zeit zu Abhängigkeitsaufblähung. Integrieren Sie es in Ihren regulären Wartungsworkflow.

Nach einem Paket suchen:

“`bash

apt search package_name

“`

Paketdetails vor der Installation prüfen:

“`bash

apt show package_name

“`

Dies zeigt die Paketversion, die installierte Größe, Abhängigkeiten und den Maintainer – nützlich, bevor ein unbekanntes Paket eingebunden wird.

Ein Paket auf seiner aktuellen Version halten (kritisch für Produktionsstabilität):

“`bash

sudo apt-mark hold package_name

“`

Dies verhindert, dass `apt upgrade` das Paket anfasst. Unverzichtbar, wenn Sie eine bestimmte Kernel-Version oder ein gepinntes Anwendungsrelease betreiben.

Realer apt-Anwendungsfall: Bereitstellung eines Webservers auf Ubuntu

“`bash

sudo apt update

sudo apt install -y nginx certbot python3-certbot-nginx

sudo systemctl enable nginx

sudo systemctl start nginx

“`

Das Flag `-y` unterdrückt die Bestätigungsaufforderung, was für nicht-interaktive Bereitstellungsskripte erforderlich ist. Kombinieren Sie dies immer mit `apt update` im selben Skriptblock, um sicherzustellen, dass Sie aus aktuellen Repository-Metadaten installieren.

yum: Yellowdog Updater Modified für RPM-basierte Systeme

yum ist der Paketmanager für Red Hat Enterprise Linux (RHEL), CentOS 7 und ältere Fedora-Releases. Er verwaltet `.rpm`-Pakete und sitzt auf der RPM-Datenbank. Wie apt über dpkg bietet yum Abhängigkeitsauflösung und Repository-Verwaltung auf dem rohen `rpm`-Befehl.

Wichtiger architektonischer Hinweis: Auf CentOS 8+, RHEL 8+ und allen modernen Fedora-Releases wurde yum durch dnf (Dandified YUM) abgelöst. Auf diesen Systemen ist der `yum`-Befehl typischerweise ein symbolischer Link oder Alias zu `dnf`. Wenn Sie ein System mit RHEL/CentOS 8 oder höher verwalten, sollten Sie `dnf`-Befehle schreiben. Die Befehlssyntax ist weitgehend kompatibel, aber dnf bietet deutlich bessere Abhängigkeitsauflösung, eine sauberere API und modulare Repository-Unterstützung.

Grundlegende yum-Befehle mit technischem Kontext

Verfügbare Updates prüfen, ohne sie anzuwenden:

“`bash

sudo yum check-update

“`

Dies ist besonders nützlich in automatisierten Überwachungsskripten, um zu erkennen, ob ein System bei Patches zurückliegt, ohne ein Upgrade auszulösen.

Alle verfügbaren Updates anwenden:

“`bash

sudo yum update

“`

Im Gegensatz zu `apt upgrade` installiert `yum update` bei Bedarf auch neue Abhängigkeitspakete. Es gibt kein separates `full-upgrade`-Äquivalent – yum behandelt dies standardmäßig.

Ein Paket installieren:

“`bash

sudo yum install package_name

“`

Ein Paket entfernen:

“`bash

sudo yum remove package_name

“`

Hinweis: Die Entfernungsoperation von yum kann manchmal kaskadieren und abhängige Pakete entfernen. Überprüfen Sie immer die Transaktionszusammenfassung, bevor Sie bestätigen.

Nach einem Paket suchen:

“`bash

yum search package_name

“`

Paketinformationen prüfen:

“`bash

yum info package_name

“`

Installierte Pakete auflisten:

“`bash

yum list installed

“`

Den lokalen Cache leeren:

“`bash

sudo yum clean all

“`

Löscht zwischengespeicherte Paketdaten und Metadaten. Führen Sie dies aus, wenn Sie vermuten, dass veraltete Repository-Daten Auflösungsfehler verursachen.

Ein Paket auf seiner aktuellen Version halten:

“`bash

sudo yum versionlock add package_name

“`

Erfordert das `yum-plugin-versionlock`-Plugin. Das Äquivalent zu `apt-mark hold` ist unverzichtbar für die Aufrechterhaltung stabiler Produktionsumgebungen, in denen eine bestimmte Paketversion nicht durch automatische Updates verändert werden darf.

Realer yum-Anwendungsfall: Apache auf CentOS 7 bereitstellen

“`bash

sudo yum install -y httpd

sudo systemctl enable httpd

sudo systemctl start httpd

sudo firewall-cmd –permanent –add-service=http

sudo firewall-cmd –reload

“`

Ein häufiger Fehler ist, Apache zu installieren und vergessen, die Firewall zu öffnen. Auf CentOS/RHEL-Systemen ist `firewalld` standardmäßig aktiv und blockiert stillschweigend HTTP-Traffic, auch wenn der Dienst läuft.

apt vs yum: Direkter Vergleich

Funktionapt (Debian/Ubuntu)yum / dnf (RHEL/CentOS/Fedora)
Paketformat`.deb``.rpm`
Zugrunde liegendes Tool`dpkg``rpm`
Primäre DistributionenDebian, Ubuntu, Mint, Pop!_OSRHEL, CentOS, Fedora, AlmaLinux, Rocky Linux
Nachfolger / modernes CLI`apt` (ersetzt `apt-get` für interaktive Nutzung)`dnf` (ersetzt `yum` auf RHEL 8+)
AbhängigkeitsauflösungAutomatisch, behandelt KonflikteAutomatisch; dnf ist robuster als yum
Repository-Konfiguration`/etc/apt/sources.list`, `/etc/apt/sources.list.d/``/etc/yum.repos.d/*.repo`
Paket-Hold-Mechanismus`apt-mark hold``yum versionlock` (Plugin erforderlich)
Lokale Paketinstallation`dpkg -i file.deb``rpm -i file.rpm` oder `yum localinstall`
Cache-Verwaltung`apt clean`, `apt autoclean``yum clean all`
Entfernung verwaister Pakete`apt autoremove``yum autoremove` (dnf behandelt dies besser)
TransaktionsverlaufBegrenztVollständiger Transaktionsverlauf mit Rollback über `yum history`
Modul-StreamsNicht nativ unterstütztUnterstützt in dnf (Application Streams)
GPG-SignaturverifizierungJaJa
Skriptfreundliches Flag`-y` (nicht-interaktiv)`-y` (nicht-interaktiv)

dnf: Der moderne Nachfolger von yum

Wenn Sie ein RHEL 8+-, CentOS Stream-, AlmaLinux-, Rocky Linux- oder Fedora-System verwalten, ist dnf Ihr Paketmanager. Der Übergang von yum zu dnf ist nicht kosmetisch – dnf löst eine Reihe von langjährigen architektonischen Problemen in yum:

  • Abhängigkeitsauflösung: dnf verwendet die `libsolv`-Bibliothek, die deutlich schneller und genauer ist als der Resolver von yum
  • API-Stabilität: dnf stellt eine stabile Python-API für Scripting und Automatisierung bereit
  • Modul-Streams: dnf unterstützt Application Streams, die es ermöglichen, dass mehrere Versionen derselben Software (z. B. PHP 7.4 und PHP 8.1) in Repositories koexistieren
  • Transaktions-Rollback: `dnf history undo <id>` ermöglicht es, eine bestimmte Transaktion zurückzurollen – eine Fähigkeit ohne direktes Äquivalent in apt

Wichtige dnf-Befehle, die sich von yum unterscheiden:

“`bash

Install a module stream (e.g., PHP 8.1)

sudo dnf module enable php:8.1

sudo dnf install php

Roll back the last transaction

sudo dnf history undo last

Check which package provides a specific file

sudo dnf provides /usr/bin/python3

“`

Repository-Verwaltung: Eine kritische operative Fähigkeit

Sowohl apt als auch yum/dnf sind nur so nützlich wie die Repositories, für die sie konfiguriert sind. Falsch konfigurierte oder nicht vertrauenswürdige Repositories sind ein erhebliches Sicherheitsrisiko.

Auf Debian/Ubuntu ein Drittanbieter-Repository sicher hinzufügen:

“`bash

Import the GPG key

curl -fsSL https://example.com/gpg.key | sudo gpg –dearmor -o /usr/share/keyrings/example-archive-keyring.gpg

Add the repository with key reference

echo "deb [signed-by=/usr/share/keyrings/example-archive-keyring.gpg] https://repo.example.com/apt stable main" | sudo tee /etc/apt/sources.list.d/example.list

sudo apt update

“`

Auf RHEL/CentOS ein Repository hinzufügen:

“`bash

sudo yum-config-manager –add-repo https://repo.example.com/centos/example.repo

Or manually create /etc/yum.repos.d/example.repo

“`

Sicherheitsprinzip: Fügen Sie niemals ein Repository hinzu, ohne dessen GPG-Schlüssel unabhängig zu verifizieren. Ein kompromittiertes Repository kann bösartige Pakete pushen, die mit Root-Rechten installiert werden.

Den richtigen Paketmanager für Ihre Serverumgebung wählen

Der von Ihnen verwendete Paketmanager wird durch Ihre Linux-Distribution vorgegeben – Sie wählen apt oder yum nicht unabhängig. Was Sie wählen, ist Ihre Distribution, und diese Entscheidung hat nachgelagerte Konsequenzen für die Paketverfügbarkeit, Enterprise-Support-Verträge, den Sicherheits-Patch-Rhythmus und die Tooling-Kompatibilität.

  • Ubuntu LTS (apt): Beste Wahl für allgemeine VPS Hosting-Workloads, Webserver und Entwicklerumgebungen. Long-Term-Support-Releases erhalten 5 Jahre Sicherheitsupdates, erweiterbar auf 10 mit Ubuntu Pro.
  • RHEL / AlmaLinux / Rocky Linux (dnf): Der Standard für Enterprise-Produktionsumgebungen, insbesondere beim Betrieb auf Dedicated Servers, die zertifizierte Software-Stacks, Compliance-Frameworks (PCI-DSS, HIPAA) oder ISV-unterstützte Anwendungsbereitstellungen erfordern.
  • Debian Stable (apt): Äußerst konservative Paketversionen, ideal für Server, bei denen Stabilität über modernster Software priorisiert wird. Häufig für langlebige Datenbank- und Mail-Server verwendet.
  • CentOS Stream / Fedora (dnf): Geeignet für Entwicklungs- und Staging-Umgebungen, in denen Sie vorgelagerte RHEL-Änderungen verfolgen möchten, bevor sie in stabilen Releases landen.

Bei der Bereitstellung eines Control Panels wie cPanel ist der zugrunde liegende Paketmanager von erheblicher Bedeutung. cPanel unterstützt offiziell AlmaLinux, Rocky Linux und CloudLinux – alle dnf-basiert. Wenn Sie einen VPS mit cPanel verwenden, arbeiten Sie bei modernen Deployments in einer dnf-Umgebung.

Für Umgebungen, in denen Sie eine grafische oder webbasierte Oberfläche zur Verwaltung von Paketen und Serverkonfiguration benötigen, ohne auf die Befehlszeile wechseln zu müssen, erkunden Sie VPS Control Panels, die die Paketverwaltung in eine Benutzeroberfläche abstrahieren und dabei weiterhin apt oder dnf im Hintergrund nutzen.

Sicherheitshärtung durch Paketverwaltung

Paketmanager sind eine primäre Angriffsfläche für Supply-Chain-Angriffe. Diese Praktiken sind auf jedem internetfähigen Server nicht verhandelbar:

  • Automatische Sicherheitsupdates aktivieren — Auf Ubuntu: `unattended-upgrades`-Paket. Auf RHEL/CentOS: `dnf-automatic` mit `apply_updates = yes` in `/etc/dnf/automatic.conf`.
  • GPG-Signaturen verifizieren — Deaktivieren Sie niemals die GPG-Prüfung (`–nogpgcheck` in yum/dnf oder `–allow-unauthenticated` in apt) außerhalb isolierter Laborumgebungen.
  • Installierte Pakete regelmäßig prüfen — Verwenden Sie `dpkg -l` oder `rpm -qa`, um ein vollständiges Paketmanifest zu erstellen. Vergleichen Sie dies mit einer bekannten guten Baseline.
  • Unnötige Pakete entfernen — Jedes installierte Paket ist eine Angriffsfläche. Führen Sie `apt autoremove` oder `dnf autoremove` nach größeren Deployments aus.
  • Kritische Pakete pinnen — Verwenden Sie `apt-mark hold` oder `dnf versionlock`, um unbeabsichtigte Upgrades von Paketen wie dem Kernel, OpenSSL oder Datenbank-Engines auf Produktionssystemen zu verhindern.

Wenn Sie einen Mail-Server betreiben oder E-Mail-Infrastruktur hosten, ist es besonders wichtig, Pakete wie Postfix, Dovecot und deren TLS-Abhängigkeiten aktuell zu halten. Kombinieren Sie rigorose Paketverwaltung mit ordnungsgemäß konfigurierten SSL Certificates, um verschlüsselte Transportsicherheit aufrechtzuerhalten. Ebenso profitieren Webhosting-Umgebungen, die über Shared Web Hosting-Plattformen verwaltet werden, davon, dass der Hosting-Anbieter die zugrunde liegende Paketsicherheit pflegt, aber das Verständnis der Paketschicht bleibt für Debugging und benutzerdefinierte Konfiguration wertvoll.

Praktische Entscheidungsmatrix und wichtige Erkenntnisse

Bevor Sie einen Paketverwaltungsbefehl auf einem Produktionssystem ausführen, arbeiten Sie diese Checkliste durch:

Checkliste vor der Operation:

  • Bestätigen Sie, welche Distribution und Version Sie ausführen: `cat /etc/os-release`
  • Bestätigen Sie den richtigen Paketmanager: `which apt` oder `which dnf` oder `which yum`
  • Auf apt-Systemen: führen Sie immer `sudo apt update` vor `apt install` oder `apt upgrade` aus
  • Auf yum/dnf-Systemen: `sudo yum check-update` oder `sudo dnf check-update` vor Upgrades
  • Überprüfen Sie die Transaktionszusammenfassung, bevor Sie eine Installations- oder Entfernungsoperation bestätigen
  • Für Produktionsserver: testen Sie Paket-Upgrades zuerst in einer Staging-Umgebung
  • Nach größeren Upgrades: überprüfen Sie den Dienststatus mit `systemctl status <service>`
  • Nach dem Entfernen von Paketen: führen Sie `apt autoremove` oder `dnf autoremove` aus, um verwaiste Pakete zu bereinigen

Architektonische Entscheidungen:

  • Verwenden Sie `apt full-upgrade` statt `apt upgrade` nur, wenn Sie verstehen und akzeptieren, dass Pakete entfernt werden können
  • Verwenden Sie `dnf` statt `yum` auf jedem System mit RHEL 8 / CentOS 8 oder höher
  • Verwenden Sie `apt-get` (nicht `apt`) in Shell-Skripten und CI/CD-Pipelines für stabile, parsierbare Ausgabe
  • Verwenden Sie `yum versionlock` oder `apt-mark hold` bevor eine automatisierte Update-Pipeline einen Produktionsserver berührt
  • Fügen Sie niemals Drittanbieter-Repositories hinzu, ohne deren GPG-Schlüssel zu importieren und zu verifizieren

FAQ

Was ist der Unterschied zwischen apt und apt-get?

`apt` ist der moderne, benutzerorientierte Befehl, der eingeführt wurde, um `apt-get` und `apt-cache` in einem einzigen Tool mit saubererer Ausgabe und einem Fortschrittsbalken zu konsolidieren. `apt-get` bleibt verfügbar und wird in Skripten bevorzugt, da sein Ausgabeformat versionsübergreifend stabil garantiert ist. Für die interaktive Terminal-Nutzung ist `apt` der aktuelle Standard.

Kann ich apt auf einem CentOS- oder RHEL-Server verwenden?

Nein. apt ist ausschließlich für Debian-basierte Systeme und verwaltet `.deb`-Pakete. CentOS und RHEL verwenden das RPM-Paketformat, das von yum oder dnf verwaltet wird. Die Paketformate und Datenbanken sind architektonisch inkompatibel – es gibt keine Konvertierungsschicht.

Was ist das yum-Äquivalent von apt autoremove?

`sudo yum autoremove` oder `sudo dnf autoremove` entfernt Pakete, die als Abhängigkeiten installiert wurden, aber von keinem explizit installierten Paket mehr benötigt werden. Die dnf-Implementierung ist zuverlässiger als die Legacy-yum-Version.

Wie verhindere ich, dass ein bestimmtes Paket von apt oder yum aktualisiert wird?

Auf apt-basierten Systemen: `sudo apt-mark hold package_name`. Auf yum/dnf-Systemen: installieren Sie das `yum-plugin-versionlock`-Plugin und führen Sie `sudo yum versionlock add package_name` aus, oder auf dnf: `sudo dnf versionlock add package_name`. Beide Mechanismen überleben `upgrade`- und `update`-Befehle, bis sie explizit freigegeben werden.

Ist yum im Jahr 2024 noch relevant?

Für CentOS 7- und RHEL 7-Systeme, die noch in Produktion sind, ja – yum bleibt der Paketmanager. Allerdings hat CentOS 7 im Juni 2024 sein End-of-Life erreicht. Jedes System, das noch CentOS 7 betreibt, sollte auf AlmaLinux 8/9 oder Rocky Linux 8/9 migriert werden, die beide dnf verwenden. Das Schreiben neuer Automatisierungsskripte, die ausschließlich auf yum abzielen, ist nicht mehr ratsam.

15%

15% auf alle Hosting-Dienste sparen

Teste deine Fähigkeiten und erhalte Rabatt auf jeden Hosting-Plan

Benutze den Code:

Skills
Anfangen