VMware ESXi and vSphere Cluster Management

apt-get-Befehl: Pakete unter Debian und Ubuntu verwalten

Lerne apt-get unter Debian und Ubuntu: Paketquellen aktualisieren, Software installieren, upgraden, entfernen, Fehler beheben und den Paketcache verwalten.

apt-get ist ein Kommandozeilenwerkzeug zur Verwaltung von Softwarepaketen auf Debian, Ubuntu und verwandten Linux-Distributionen. Mit ihm aktualisierst du Paketlisten, installierst Programme, führst Upgrades durch, entfernst Pakete und untersuchst Abhängigkeitsprobleme.

Die meisten Paketaktionen verändern systemweite Dateien und benötigen daher administrative Rechte. Üblicherweise wird der Befehl mit sudo ausgeführt. Die Beispiele setzen grundlegende Terminalkenntnisse und ein funktionierendes Debian-basiertes System voraus.

APT und apt-get einordnen

APT steht für Advanced Package Tool. Es ist die Paketverwaltungsinfrastruktur von Debian-basierten Systemen. APT kennt Paketquellen, Paketversionen und Abhängigkeiten und arbeitet bei der eigentlichen Paketdatenbank eng mit dpkg zusammen.

apt-get ist ein Kommandozeilenprogramm für konkrete Paketaktionen. Daneben gibt es den Befehl apt. apt ist vor allem für die interaktive Nutzung durch Menschen gestaltet und fasst häufig verwendete Funktionen übersichtlich zusammen. apt-get bietet eine traditionell stabile und gut skriptbare Kommandozeilenschnittstelle. Für Automatisierung und Administrationsskripte ist deshalb meist apt-get die passendere Wahl.

Wie APT Paketquellen und Abhängigkeiten nutzt

Ein Repository ist eine Paketquelle. Sie stellt Paketdateien und Metadaten bereit. Der lokale Paketindex enthält Informationen darüber, welche Pakete verfügbar sind, welche Versionen angeboten werden und welche Abhängigkeiten ein Paket besitzt.

APT liest die Quellenkonfiguration aus /etc/apt/sources.list und aus zusätzlichen Dateien im Verzeichnis /etc/apt/sources.list.d/. Eine typische Quellzeile beschreibt den Eintragstyp, eine URI, die Distribution oder Suite und eine oder mehrere Komponenten:

deb URI SUITE COMPONENTEN
# Beispielhafte Struktur:
deb https://example.invalid/debian stable main

deb bezeichnet eine Quelle für installierbare Binärpakete. deb-src bezeichnet eine Quelle für Quellpakete, aus denen Software gebaut werden kann. Die URI verweist auf den Server, die Suite beschreibt beispielsweise eine Distribution oder einen Release-Zweig, und Komponenten teilen das Archiv nach Inhalt und Lizenzmodell auf.

Je nach Distribution können Komponenten wie main, universe, restricted oder multiverse vorkommen. Die genaue Bedeutung und Verfügbarkeit hängt von der jeweiligen Distribution und ihrem Release ab.

Fremdquellen sollten nur verwendet werden, wenn sie vertrauenswürdig sind und exakt zur installierten Distribution und Suite passen. Eine unpassende Quelle kann inkompatible Versionen, Konflikte oder Sicherheitsrisiken verursachen. Signaturprüfungen dürfen nicht pauschal abgeschaltet werden.

Paketquellen kontrollieren

grep -Rhv '^[[:space:]]*#' /etc/apt/sources.list /etc/apt/sources.list.d/ 2>/dev/null

Der Befehl zeigt aktive, nicht auskommentierte Quellzeilen an. Änderungen an diesen Dateien sollten dokumentiert und anhand der offiziellen Dokumentation der Distribution oder des jeweiligen Anbieters geprüft werden.

Paketlisten mit apt-get update aktualisieren

sudo apt-get update

update lädt die Metadaten aus allen aktivierten Paketquellen neu und aktualisiert den lokalen Paketindex. Dabei werden unter anderem verfügbare Paketversionen und Abhängigkeitsinformationen eingelesen. Installierte Programme werden durch diesen Befehl nicht verändert.

Führe update normalerweise vor einer Installation oder einem Upgrade aus:

sudo apt-get update && sudo apt-get upgrade

Erfolgreiche Ausgaben zeigen typischerweise, dass Indexdateien von Quellen abgerufen oder bereits aktuell sind. Fehlermeldungen müssen dagegen ernst genommen werden. Ein nicht erreichbarer Server, eine falsche Suite, eine fehlende Release-Datei oder eine ungültige Signatur kann dazu führen, dass APT die betreffende Quelle nicht verwendet.

Häufige Fehler bei update

  • Namensauflösung oder Zeitüberschreitung: Netzwerk, DNS, Proxy, Firewall und die Erreichbarkeit des Mirrors prüfen.
  • Keine Release-Datei oder nicht signiert: URL, Suite und Vertrauenswürdigkeit der Quelle kontrollieren. Eine veraltete oder eingestellte Quelle korrigieren oder deaktivieren.
  • Signaturfehler: Die Repository-Konfiguration und die dokumentierte Schlüsselverwaltung des Anbieters prüfen. Signaturprüfungen nicht umgehen.
  • Gemischte Distributionen: Fremdquellen oder Einträge für einen anderen Release-Zweig können Abhängigkeiten unauflösbar machen.

Installierte Pakete aktualisieren

Reguläres Upgrade

sudo apt-get update
sudo apt-get upgrade

upgrade aktualisiert installierte Pakete, sofern die Aktualisierung ohne das Entfernen regulär installierter Pakete und ohne problematische Abhängigkeitsänderungen möglich ist. Mit --show-upgraded oder der Kurzform -u werden die aktualisierten Pakete ausdrücklich angezeigt:

sudo apt-get upgrade --show-upgraded

Wenn für ein Upgrade neue Abhängigkeiten installiert werden müssen, kann folgende Option helfen:

sudo apt-get upgrade --with-new-pkgs

Full-upgrade und dist-upgrade

sudo apt-get full-upgrade
sudo apt-get dist-upgrade

dist-upgrade ist die traditionelle Bezeichnung; full-upgrade ist das heutige Synonym. Diese Aktion darf zur Auflösung geänderter Abhängigkeiten Pakete installieren oder entfernen. Dadurch kann sie auch Konflikte lösen, die ein normales upgrade zurückhält.

Prüfe bei kritischen Systemen zunächst den Plan und führe das Upgrade in einem Wartungsfenster mit aktueller Sicherung aus:

sudo apt-get --simulate full-upgrade

Besonders viele unerwartete Entfernungen sind ein Grund, den Vorgang abzubrechen und zunächst Paketquellen, Pinning, Konflikte und einen möglichen Release-Wechsel zu untersuchen.

Pakete installieren

Einzelne und mehrere Pakete

sudo apt-get update
sudo apt-get install nmap
sudo apt-get install curl wget git

Die Syntax lautet apt-get install PAKETNAME. Du kannst mehrere Paketnamen in einem Aufruf angeben. APT ermittelt notwendige Abhängigkeiten automatisch und installiert sie, sofern sie aus den konfigurierten Quellen verfügbar und miteinander vereinbar sind.

Version oder Release-Suite auswählen

sudo apt-get install PAKET=VERSION
sudo apt-get install -t SUITE PAKET

Mit PAKET=VERSION forderst du eine bestimmte verfügbare Version an. Die Version muss im Paketindex bekannt sein. -t beziehungsweise --target-release bevorzugt eine bestimmte Release-Suite. Das sollte nur mit kompatiblen Quellen und bewusstem Versionsmanagement eingesetzt werden.

Installation simulieren

sudo apt-get --simulate install PAKETNAME
sudo apt-get -s install PAKETNAME

Eine Simulation berechnet die geplanten Installationen, Upgrades, Entfernungen und Konfigurationsänderungen, ohne die Pakete tatsächlich zu verändern. Sie ist besonders nützlich, bevor mehrere Pakete installiert oder produktive Systeme geändert werden.

Lokale .deb-Dateien

Eine lokale .deb-Datei ist kein gewöhnlicher Paketname aus einem Repository. Für die direkte Installation sind dpkg oder das interaktivere apt üblich. dpkg installiert die Datei, löst aber Abhängigkeiten nicht automatisch aus. APT kann anschließend helfen, fehlende Abhängigkeiten aus konfigurierten Quellen zu ergänzen.

Pakete entfernen und bereinigen

AktionProgrammpaket entferntKonfiguration entferntAutomatische Abhängigkeiten betroffenTypischer Einsatz
removeJaÜblicherweise neinNein, nicht als HauptzweckProgramm entfernen, Einstellungen behalten
purgeJaSystemweite Paketkonfiguration jaNein, nicht als HauptzweckProgramm vollständig bereinigen
autoremoveJa, bei nicht mehr benötigten PaketenÜblicherweise nicht vollständigJaAutomatisch installierte Abhängigkeiten entfernen
autopurgeJa, bei nicht mehr benötigten PaketenJaJaAbhängigkeiten samt Paketkonfiguration bereinigen

remove und purge

sudo apt-get --simulate remove nmap
sudo apt-get remove nmap
sudo apt-get --simulate purge nmap
sudo apt-get purge nmap

remove entfernt das Programmpaket, lässt systemweite Konfigurationsdateien aber normalerweise zurück. purge entfernt zusätzlich die zugehörige Paketkonfiguration. Dateien im persönlichen Benutzerverzeichnis werden dadurch nicht automatisch entfernt.

autoremove und autopurge

sudo apt-get --simulate autoremove
sudo apt-get autoremove
sudo apt-get --simulate autopurge
sudo apt-get autopurge

autoremove sucht automatisch installierte Pakete, die von keinem anderen installierten Paket mehr benötigt werden. autopurge verbindet diese Bereinigung mit dem Entfernen der zugehörigen Konfigurationsdateien. Prüfe die Liste immer vorher. Ein Metapaket oder eine Desktop-Umgebung kann von vielen Abhängigkeiten abhängen; eine unbedachte Entfernung kann daher wichtige Funktionen beseitigen.

Abhängigkeiten und Paketdatenbank prüfen

Eine Abhängigkeit ist ein zusätzlich benötigtes Paket oder eine Versionsbedingung. Ein Konflikt bedeutet, dass Pakete oder Versionen nicht gemeinsam installiert werden können. APT versucht, diese Bedingungen automatisch aufzulösen. Das gelingt jedoch nicht immer, etwa bei unterbrochenen Aktionen, veralteten Paketlisten oder inkompatiblen Quellen.

sudo apt-get check

check prüft die Struktur der Paketabhängigkeiten. Bei einer unterbrochenen Konfiguration kann dieser Schritt folgen:

sudo dpkg --configure -a

Der Befehl konfiguriert bereits ausgepackte, aber noch nicht fertig eingerichtete Pakete. Danach kann eine Reparatur fehlender oder defekter Abhängigkeiten sinnvoll sein:

sudo apt-get --fix-broken install
# gleichbedeutend:
sudo apt-get -f install

Wenn apt-get update selbst wegen Netzwerk-, Signatur- oder Quellenfehlern scheitert, müssen diese Ursachen zuerst behoben werden. Eine Reparaturoption ersetzt keine korrekte Repository-Konfiguration.

Paketcache verwalten

Heruntergeladene .deb-Archive liegen normalerweise im Cache-Verzeichnis /var/cache/apt/archives/. Der Cache kann Installationen beschleunigen, belegt aber mit der Zeit Speicherplatz.

sudo apt-get autoclean
sudo apt-get clean

autoclean entfernt nur Archivdateien, die nicht mehr herunterladbar oder veraltet sind. clean leert den Download-Cache vollständig. Nach clean müssen Pakete bei einer späteren Installation erneut heruntergeladen werden.

Protokolle und Nachvollziehbarkeit

APT und dpkg protokollieren Paketaktionen. Die wichtigsten Dateien sind:

PfadBedeutungWann relevant
/etc/apt/sources.listZentrale Konfiguration der PaketquellenQuellen, Suites und Komponenten kontrollieren
/etc/apt/sources.list.d/Zusätzliche QuelllistendateienFremdquellen und ergänzende Archive untersuchen
/var/cache/apt/archives/Heruntergeladene PaketarchiveSpeicherverbrauch und Cache bereinigen
/var/log/dpkg.logDetailliertes dpkg-ProtokollInstallierte, entfernte und konfigurierte Pakete zeitlich nachvollziehen
/var/log/apt/history.logZusammenfassung der APT-AktionenZeitpunkte sowie installierte, entfernte oder aktualisierte Pakete prüfen
/var/log/apt/term.logDetaillierte Terminalausgaben von APTFehler, Dialoge und Ablauf einer Paketaktion untersuchen
tail -n 30 /var/log/apt/history.log
tail -n 50 /var/log/dpkg.log

Ältere Logs werden häufig rotiert und komprimiert. Bei einer längeren Untersuchung müssen daher auch ältere Logdateien berücksichtigt werden.

Sicherer Arbeitsablauf

  1. Repository-Konfiguration in /etc/apt/sources.list und /etc/apt/sources.list.d/ kontrollieren.
  2. Paketindex aktualisieren: sudo apt-get update.
  3. Die geplante Aktion simulieren, zum Beispiel mit sudo apt-get --simulate install PAKETNAME.
  4. Die angezeigten Installationen, Upgrades und Entfernungen prüfen.
  5. Die Aktion ausführen und die Ausgabe auf Fehler achten.
  6. Bei größeren Änderungen Logs und Systemzustand kontrollieren.

Bei einer Meldung über eine Sperrdatei läuft meist bereits ein anderer APT- oder dpkg-Prozess, etwa eine grafische Paketverwaltung oder ein automatischer Update-Dienst. Warte den Vorgang ab oder identifiziere ihn gezielt. Beende Prozesse nur, wenn ihr Zustand sicher beurteilt werden kann. Sperrdateien dürfen nicht blind gelöscht werden, weil dadurch die Paketdatenbank beschädigt werden kann.

Typische Fehler systematisch beheben

Installation wegen nicht erfüllbarer Abhängigkeiten abgebrochen

  • sudo apt-get update ausführen und Fehler in den Quellen beheben.
  • Mit sudo apt-get check den Paketstatus prüfen.
  • Bei unterbrochener Konfiguration sudo dpkg --configure -a ausführen.
  • Danach gegebenenfalls sudo apt-get --fix-broken install verwenden.
  • Bei wiederkehrenden Problemen Fremdquellen, gemischte Distributionen und Paket-Pinning untersuchen.

Upgrade möchte unerwartet viele Pakete entfernen

sudo apt-get --simulate upgrade
sudo apt-get --simulate full-upgrade

Bestätige die Änderung nicht, bevor die Ursache klar ist. Mögliche Gründe sind Abhängigkeitswechsel, Paketkonflikte, unpassende Quellen oder ein nicht korrekt vorbereitetes Release-Upgrade. Für umfangreiche Änderungen sind Sicherungen und ein Wartungsfenster ratsam.

Root-Dateisystem ist fast voll

  • Zuerst sudo apt-get autoclean als vorsichtige Cache-Bereinigung verwenden.
  • Mit sudo apt-get --simulate autoremove nicht mehr benötigte Abhängigkeiten prüfen.
  • Bei Bedarf sudo apt-get clean einsetzen und den erneuten Downloadbedarf beachten.

Wichtige apt-get-Aktionen im Vergleich

BefehlZweckÄndert installierte Pakete?Wichtige Hinweise
updatePaketindex aus Quellen neu ladenNeinVor Installationen und Upgrades ausführen
installPakete und Abhängigkeiten installierenJaMehrere Namen, Versionen und Ziel-Suites möglich
upgradeReguläre Aktualisierung installierter PaketeJaEntfernt regulär keine installierten Pakete
full-upgrade / dist-upgradeAbhängigkeiten umfassend auflösenJaKann Pakete installieren oder entfernen
removeProgrammpaket entfernenJaKonfiguration bleibt üblicherweise erhalten
purgePaket samt systemweiter Konfiguration entfernenJaPersönliche Dateien werden nicht automatisch entfernt
autoremoveNicht mehr benötigte automatische Abhängigkeiten entfernenJaVorher simulieren, um Metapakete zu schützen
checkAbhängigkeitsstruktur prüfenNeinHilfreich bei Diagnose
cleanGesamten Paketcache leerenInstallierte Pakete neinSpätere Installationen laden Archive erneut
autocleanVeraltete oder nicht mehr ladbare Archive entfernenInstallierte Pakete neinKonservative Cache-Bereinigung

Kurzübersicht für die Praxis

# Paketindex erneuern
sudo apt-get update

# Ein Paket installieren
sudo apt-get install PAKETNAME

# Aktionen vorab prüfen
sudo apt-get --simulate upgrade

# Regulär aktualisieren
sudo apt-get upgrade

# Umfangreicher aktualisieren
sudo apt-get --simulate full-upgrade
sudo apt-get full-upgrade

# Paket entfernen oder vollständig bereinigen
sudo apt-get remove PAKETNAME
sudo apt-get purge PAKETNAME

# Abhängigkeiten prüfen und reparieren
sudo apt-get check
sudo dpkg --configure -a
sudo apt-get --fix-broken install

# Cache bereinigen
sudo apt-get autoclean

Für die interaktive Alternative und weiterführende Paketverwaltung ist der apt-get-Befehl die stabile Grundlage; verwandte Werkzeuge wie apt-cache, dpkg und APT-Pinning ergänzen ihn bei Suche, Diagnose und Versionssteuerung.