Linux Deutsch

apt-get-Befehl unter Linux: Pakete aktualisieren, installieren und entfernen

Lerne apt-get auf Debian- und Ubuntu-Systemen: Paketquellen aktualisieren, Pakete installieren, upgraden, entfernen, Abhängigkeiten prüfen und den Cache verwalten.

apt-get ist ein Kommandozeilenwerkzeug für die Paketverwaltung auf Debian-basierten Linux-Distributionen. Mit dem Befehl lassen sich Softwarepakete und ihre Abhängigkeiten installieren, aktualisieren, entfernen und prüfen.

Dieses Tutorial richtet sich an Einsteiger und Administratoren von Debian, Ubuntu und verwandten Distributionen. Grundkenntnisse im Terminal, bei sudo und bei Dateien und Verzeichnissen sind hilfreich. Eine Einführung bietet der Artikel Einführung in Linux.

Was ist apt-get?

APT steht für „Advanced Package Tool“ und ist das Paketverwaltungssystem von Debian-basierten Distributionen. Ein Paket ist eine installierbare Softwareeinheit mit Program Dateien, Metadaten und Angaben zu benötigten Abhängigkeiten.

apt-get führt Paketverwaltungsaktionen im Terminal aus. Für Skripte und automatisierte Abläufe ist es besonders geeignet, weil seine Bedienoberfläche und Ausgabe auf stabile, nicht-interaktive Verwendung ausgelegt sind.

Der Befehl apt bietet eine modernere, benutzerfreundliche Oberfläche für interaktive Terminal-Sitzungen. Beide Befehle greifen auf dasselbe APT-System zu. Für Skripte wird häufig apt-get verwendet; für manuelle Arbeit ist apt oft übersichtlicher.

Verändernde Aktionen benötigen administrative Rechte, weil Dateien unter Systemverzeichnissen geändert, Pakete installiert oder entfernt und die Paketdatenbank aktualisiert werden. Deshalb beginnt ein typischer Befehl mit sudo:

sudo apt-get install curl

Paketquellen und Paketinformationen

Ein Repository, auf Deutsch Paketquelle, ist ein Server oder Verzeichnis, aus dem APT Paketlisten und Paketdateien bezieht. Die Paketlisten enthalten Metadaten über verfügbare Pakete, Versionen, Abhängigkeiten und Prüfsummen.

Die zentrale Konfigurationsdatei ist:

/etc/apt/sources.list

Zusätzliche Quellen liegen üblicherweise in Dateien unter:

/etc/apt/sources.list.d/

Eine Repository-Zeile folgt grundsätzlich diesem Schema:

deb [Optionen] URI SUITE KOMPONENTE...

deb bezeichnet eine Quelle für fertige Binärpakete. deb-src bezeichnet eine Quelle für Paketquellcode. Die konkrete URI, Suite und Komponente hängen von Distribution und Version ab.

/etc/apt/sources.list – zentrale Liste der konfigurierten Paketquellen.

/etc/apt/sources.list.d/ – zusätzliche Quelldateien, häufig für einzelne Drittanbieter.

deb – Quelle für installierbare Binärpakete.

deb-src – Quelle für Quellpakete beziehungsweise Quellcode.

/var/cache/apt/archives/ – lokaler Cache heruntergeladener Paketarchive.

/var/log/dpkg.log – detailliertes Protokoll von Paketdatenbank-Aktionen.

/var/log/apt/history.log – nachvollziehbare APT-Transaktionen wie Installationen und Entfernungen.

Die Konfiguration der Quellen bestimmt, welche Paketlisten APT laden kann. Erst nach apt-get update kennt APT die aktuellen verfügbaren Versionen aus diesen Quellen. Eine Installation verwendet anschließend diese lokalen Metadaten, um passende Pakete und Abhängigkeiten auszuwählen.

Paketlisten mit update aktualisieren

Mit update lädt APT aktuelle Paketlisten und Metadaten aus den konfigurierten Quellen:

sudo apt-get update

Dieser Befehl aktualisiert nicht die bereits installierten Programme. Er erneuert nur die lokale Kenntnis darüber, welche Pakete und Versionen verfügbar sind. Vor einem Upgrade oder einer Installation sollte deshalb meist zuerst update ausgeführt werden.

Typische erfolgreiche Ausgabezeilen zeigen, dass eine Quelle erreicht und eine Paketliste geladen wurde. Meldungen wie „Ign“, „Err“ oder Hinweise auf fehlende Signaturen verdienen Aufmerksamkeit. Ein Fehler kann durch eine falsche URL, eine nicht passende Suite, DNS- oder Netzwerkprobleme, einen Proxy oder einen ungültigen Signaturschlüssel entstehen.

sudo apt-get update
# Danach beispielsweise:
sudo apt-get upgrade

Installierte Pakete mit upgrade aktualisieren

upgrade aktualisiert installierte Pakete, sofern dies ohne das Entfernen von Paketen und ohne komplexe Änderungen an Abhängigkeiten möglich ist:

sudo apt-get update
sudo apt-get upgrade

Mit -u oder der ausgeschriebenen Option --show-upgraded werden die betroffenen Pakete angezeigt:

sudo apt-get upgrade -u

Eine Vorschau ohne Änderungen ist mit -s oder --simulate möglich:

sudo apt-get upgrade --simulate

upgrade, dist-upgrade und full-upgrade im Vergleich

dist-upgrade kann Abhängigkeiten umfassender auflösen als upgrade. Dafür darf APT neue Pakete installieren und notwendige Pakete entfernen. Die moderne gleichwertige Bezeichnung ist full-upgrade.

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

Vor allem bei dist-upgrade sollte die Simulation geprüft werden:

sudo apt-get update
sudo apt-get dist-upgrade --simulate

Kontrolliere dabei insbesondere die Liste der zu entfernenden Pakete. Ein Distributions-Upgrade ist nicht dasselbe wie ein Wechsel auf eine neue Hauptversion von Debian oder Ubuntu. Dafür sind häufig distributionsspezifische Werkzeuge und zusätzliche Vorbereitungsschritte erforderlich.

update – aktualisiert Paketlisten; installierte Pakete werden nicht verändert. Typisch vor Installation oder Upgrade.

upgrade – aktualisiert installierte Pakete ohne notwendige Entfernungen oder komplexe Abhängigkeitswechsel.

dist-upgrade/full-upgrade – löst geänderte Abhängigkeiten umfassender auf und kann Pakete installieren oder entfernen.

install – installiert ein oder mehrere Pakete und benötigte Abhängigkeiten.

remove – entfernt Pakete, lässt systemweite Konfigurationsdateien in der Regel zurück.

purge – entfernt Pakete einschließlich systemweiter Konfigurationsdateien.

autoremove – entfernt automatisch installierte, nicht mehr benötigte Abhängigkeiten.

check – prüft den Paketstatus und meldet Abhängigkeitsprobleme; es ist keine vollständige Reparatur.

clean – löscht heruntergeladene Paketarchive aus dem APT-Cache.

autoclean – löscht nur alte Archive, die nicht mehr heruntergeladen werden können.

upgrade: darf normalerweise keine zusätzlichen Pakete installieren oder entfernen. Konfiguration installierter Pakete bleibt erhalten.

dist-upgrade/full-upgrade: darf neue Pakete installieren und Pakete entfernen, um Abhängigkeiten aufzulösen. Änderungen vorher simulieren.

remove: entfernt das Paket, behält systemweite Konfigurationsdateien üblicherweise bei.

purge: entfernt Paket und systemweite Konfigurationsdateien. Benutzerdaten im Home-Verzeichnis werden dadurch nicht automatisch gelöscht.

autoremove: kann mehrere automatisch installierte Pakete entfernen. Die vorgeschlagene Liste sorgfältig prüfen.

Pakete installieren

Ein Paket wird mit seinem Namen installiert:

sudo apt-get install PAKETNAME

Mehrere Pakete können in einem Schritt angegeben werden:

sudo apt-get install curl wget

APT löst erforderliche Abhängigkeiten automatisch auf und installiert die zusätzlich benötigten Pakete. Eine bestimmte Version kann angegeben werden, wenn diese in den aktivierten Quellen verfügbar ist:

sudo apt-get install PAKETNAME=VERSION

Vor größeren Installationen empfiehlt sich eine Simulation:

sudo apt-get --simulate install PAKETNAME

So lassen sich neue, zu aktualisierende und möglicherweise zu entfernende Pakete vorab erkennen.

Pakete entfernen: remove, purge und autoremove

remove entfernt ein Paket, lässt aber systemweite Konfigurationsdateien in der Regel zurück:

sudo apt-get remove PAKETNAME

purge entfernt zusätzlich die zugehörigen systemweiten Konfigurationsdateien:

sudo apt-get purge PAKETNAME

Automatisch installierte Abhängigkeiten, die kein anderes Paket mehr benötigt, können mit autoremove gefunden und entfernt werden:

sudo apt-get autoremove

Paketdatenbank und Abhängigkeiten prüfen

check untersucht, ob der Paketstatus inkonsistent ist oder Abhängigkeiten nicht erfüllt sind:

sudo apt-get check

Der Befehl dient hauptsächlich der Diagnose. Bei unterbrochenen Installationen oder fehlenden Abhängigkeiten kann ein Reparaturversuch mit -f install helfen:

sudo apt-get -f install

Auch dieser Befehl kann Systemänderungen durchführen. Lies die vorgeschlagene Aktion und mögliche Paketentfernungen vor der Bestätigung.

Paket-Cache verwalten

Heruntergeladene Paketarchive werden normalerweise unter /var/cache/apt/archives/ zwischengespeichert. Sie sind nicht die bereits installierten Programme.

Mit clean wird dieser Cache vollständig geleert:

sudo apt-get clean

Installierte Pakete bleiben dabei erhalten. autoclean ist zurückhaltender und entfernt nur alte Archive, die aus den konfigurierten Quellen nicht mehr heruntergeladen werden können:

sudo apt-get autoclean

Protokolle und Nachvollziehbarkeit

Paketverwaltungsprotokolle helfen dabei, Änderungen am System nachzuvollziehen. Das detaillierte dpkg-Protokoll liegt typischerweise hier:

less /var/log/dpkg.log

Die APT-Historie zeigt unter anderem Installationen, Aktualisierungen und Entfernungen:

less /var/log/apt/history.log

Für eine gezielte Untersuchung kann auch nach Paketnamen gesucht werden. Beachte, dass ältere Protokolle abhängig von der Logrotation komprimiert oder in zusätzliche Dateien ausgelagert sein können.

Fehlerbehebung bei apt-get

Fehler bei apt-get update

Ermittelt zunächst die betroffene Datei unter /etc/apt/sources.list oder in /etc/apt/sources.list.d/. Prüfe anschließend URL, Distribution beziehungsweise Suite, Repository-Komponente, Netzwerk, DNS und Signaturschlüssel. Eine nicht vertrauenswürdige oder inkompatible Fremdquelle sollte vorübergehend deaktiviert werden, statt Sicherheitsprüfungen zu umgehen.

Pakete werden bei upgrade zurückgehalten

Aktualisiere zuerst die Paketlisten. Wenn ein Paket neue Abhängigkeiten oder eine Entfernung benötigt, kann upgrade es zurückhalten. Prüfe die möglichen Änderungen mit:

sudo apt-get update
sudo apt-get dist-upgrade --simulate
apt-mark showhold

Unerfüllte Abhängigkeiten

Eine unterbrochene Paketaktion, inkompatible Fremdquellen oder nicht vollständig konfigurierte Pakete können die Ursache sein. Beginne mit:

sudo apt-get check
sudo apt-get -f install

Untersuche danach widersprüchliche Paketversionen und Fremdquellen.

Gesperrter Paketmanager

Eine Sperrdatei bedeutet häufig, dass bereits ein anderer APT-, dpkg- oder grafischer Aktualisierungsprozess läuft. Lass diesen Vorgang regulär abschließen und versuche es danach erneut. Sperrdateien sollten nicht blind gelöscht werden.

Kein Speicherplatz

Prüfe den freien Speicher und bereinige bei Bedarf den Paket-Cache:

df -h
sudo apt-get clean
sudo apt-get autoremove

Bei autoremove muss die vorgeschlagene Liste kontrolliert werden.

Paketname wird nicht gefunden

Aktualisiere die Paketlisten und suche nach dem tatsächlichen Paketnamen:

sudo apt-get update
apt-cache search SUCHBEGRIFF

Falls das Paket weiterhin fehlt, prüfe aktivierte Repository-Komponenten und die passende Paketquelle. Mehr Informationen bietet der Artikel apt-cache-Befehl.

Ein sicherer Arbeitsablauf

  1. Prüfe, ob die Paketquellen zur installierten Distribution passen.
  2. Aktualisiere die Paketlisten mit sudo apt-get update.
  3. Simuliere größere Installationen, Entfernungen oder vollständige Upgrades.
  4. Kontrolliere besonders die Liste entfernter Pakete und die Änderungen an wichtigen Diensten.
  5. Führe die Aktion mit administrativen Rechten aus und lies die Ausgabe.
  6. Untersuche bei Problemen apt-get check, apt-get -f install und die Protokolle.

Prüfungsrelevante Merksätze

  • update aktualisiert Paketlisten, nicht installierte Programme.
  • Die normale Reihenfolge lautet: sudo apt-get update, danach sudo apt-get upgrade.
  • upgrade vermeidet normalerweise notwendige Paketentfernungen; dist-upgrade beziehungsweise full-upgrade löst Abhängigkeiten umfassender auf.
  • remove lässt systemweite Konfiguration meist zurück, purge entfernt sie.
  • autoremove kann mehrere Pakete entfernen und muss deshalb kontrolliert werden.
  • clean entfernt Cache-Archive, nicht installierte Software.
  • Ein Distributions-Versionswechsel ist nicht automatisch ein dist-upgrade.

Zur Vertiefung eignen sich die Artikel über das APT-Paketverwaltungssystem, Paketverwaltung mit dpkg und Paketmanager und Paketverwaltung.