Spickzettel

apt Befehle: Installation, Aktualisierung und Entfernung von Paketen in Ubuntu und Debian

Aktualisiert: · Skillaria.Top

apt ist der Paketmanager von Ubuntu und Debian: sudo apt update aktualisiert die Paketlisten, sudo apt upgrade installiert Updates, sudo apt install name installiert ein Paket, sudo apt remove entfernt es (purge zusammen mit den Konfigurationen), und apt autoremove räumt nicht mehr benötigte Abhängigkeiten auf. Pakete finden Sie mit apt search und apt show, kaputte Abhängigkeiten repariert sudo apt --fix-broken install.

apt ist der Standard-Paketmanager von Ubuntu, Debian und deren Ablegern (Linux Mint, Pop!_OS). Er lädt Programme aus den Repositories herunter, zieht Abhängigkeiten automatisch nach und aktualisiert das System mit einem einzigen Befehl. Im Folgenden finden Sie alle apt Befehle, die im Alltag gebraucht werden, nach Aufgaben geordnet, dazu typische Fehler und ihre Lösungen.

Wie apt arbeitet

Ein Paket ist ein .deb-Archiv mit dem Programm, Metadaten und einer Liste von Abhängigkeiten. Repositories sind Server, auf denen die Pakete liegen; ihre Adressen stehen in /etc/apt/sources.list und im Verzeichnis /etc/apt/sources.list.d/. apt speichert eine lokale Kopie der Liste verfügbarer Pakete und gleicht Installationen mit dieser Kopie ab, deshalb muss sie regelmäßig aktualisiert werden.

Unter der Haube ruft apt das Low-Level-Werkzeug dpkg auf, das Pakete entpackt und registriert, aber keine Abhängigkeiten auflösen kann. Die Befehle apt-get und apt-cache sind die ältere Schnittstelle mit derselben Funktion: stabile Ausgabe, geeignet für Skripte. apt ist die neuere Hülle für Menschen: Fortschrittsanzeige, Farben, kürzere Befehle.

Fast alle ändernden Befehle brauchen Administratorrechte und laufen daher über sudo. Suche und Informationsabfragen funktionieren auch ohne.

Spickzettel: die wichtigsten apt Befehle

BefehlWas er macht
sudo apt updatePaketlisten aus den Repositories aktualisieren
sudo apt upgradeUpdates installieren, ohne Pakete zu entfernen
sudo apt full-upgradeaktualisieren, bei Bedarf auch Pakete entfernen oder ersetzen
sudo apt install paketPaket mit Abhängigkeiten installieren
sudo apt reinstall paketPaket neu installieren
sudo apt remove paketPaket entfernen, Konfigurationen bleiben
sudo apt purge paketPaket zusammen mit den systemweiten Konfigurationen entfernen
sudo apt autoremovenicht mehr benötigte Abhängigkeiten entfernen
apt search wortPaket nach Name und Beschreibung suchen
apt show paketBeschreibung, Version, Abhängigkeiten, Größe
apt list --installedListe der installierten Pakete
apt list --upgradablewas sich aktualisieren lässt
apt policy paketinstallierte und verfügbare Versionen, Quellen
sudo apt cleanCache der heruntergeladenen .deb-Dateien leeren
sudo apt --fix-broken installkaputte Abhängigkeiten reparieren

apt update und apt upgrade: so aktualisieren Sie das System

Das sind zwei verschiedene Vorgänge, die oft verwechselt werden. apt update installiert nichts: Es lädt nur die aktuellen Paketlisten herunter. apt upgrade installiert dagegen neue Versionen der installierten Programme auf Grundlage dieser Listen.

$ sudo apt update
Hit:1 http://archive.ubuntu.com/ubuntu noble InRelease
Get:2 http://security.ubuntu.com/ubuntu noble-security InRelease [126 kB]
...
12 packages can be upgraded. Run 'apt list --upgradable' to see them.

$ apt list --upgradable
$ sudo apt upgrade

Für einen Server verbreitet ist die Kombination in einer Zeile mit automatischer Bestätigung:

sudo apt update && sudo apt upgrade -y

Worin sich upgrade und full-upgrade unterscheiden

apt upgrade kann neue Abhängigkeiten nachinstallieren, entfernt aber nie bereits installierte Pakete. Erfordert ein Update die Entfernung von etwas (etwa bei einem Wechsel der Kernel- oder Bibliotheksversion), werden diese Pakete zurückgehalten — in der Ausgabe erscheint die Zeile The following packages have been kept back. apt full-upgrade (entspricht apt-get dist-upgrade) erlaubt Entfernungen und bringt das Update zu Ende. Lesen Sie davor aufmerksam, was apt entfernen will.

Nur ein einzelnes Paket aktualisieren

sudo apt install --only-upgrade nginx

Ist das Paket nicht installiert, installiert der Befehl mit --only-upgrade es nicht. Das schützt vor versehentlicher Installation.

apt install: Pakete installieren

sudo apt install nginx                 # ein Paket
sudo apt install git curl htop         # mehrere auf einmal
sudo apt install -y docker.io          # ohne Rückfrage Y/n
sudo apt install nginx=1.24.0-2ubuntu7 # eine bestimmte Version
sudo apt install --no-install-recommends ffmpeg  # ohne empfohlene Pakete
sudo apt install ./google-chrome-stable_current_amd64.deb  # lokale .deb-Datei

Vor der Installation zeigt apt, welche Pakete hinzukommen und wie viel Platz sie brauchen, und fragt nach einer Bestätigung. Die Option -y antwortet automatisch mit „ja“ — praktisch in Skripten und Dockerfiles, bei der interaktiven Arbeit sollten Sie die Liste aber lesen.

Standardmäßig installiert apt nicht nur die zwingend nötigen Abhängigkeiten (Depends), sondern auch die empfohlenen (Recommends). Auf Servern und in Containern verringert --no-install-recommends den Umfang deutlich.

Eine .deb-Datei installieren: apt oder dpkg -i

Eine heruntergeladene .deb-Datei installieren Sie am besten mit apt install ./datei.deb — der Pfad muss mit ./ beginnen oder absolut sein, sonst sucht apt ein Paket dieses Namens im Repository. Anders als dpkg -i lädt apt fehlende Abhängigkeiten selbst nach. Haben Sie das Paket bereits mit dpkg installiert und erhalten einen Fehler wegen Abhängigkeiten, behebt ihn sudo apt --fix-broken install.

sudo dpkg -i package.deb
sudo apt --fix-broken install

apt remove, purge und autoremove: Pakete entfernen

BefehlProgrammKonfigurationen in /etcAbhängigkeiten
apt removewird entferntbleibenbleiben
apt purgewird entferntwerden entferntbleiben
apt autoremove——nicht benötigte werden entfernt
sudo apt remove nginx
sudo apt purge nginx            # dasselbe + Konfigurationen
sudo apt autoremove             # Reste der Abhängigkeiten
sudo apt autoremove --purge     # Reste samt ihren Konfigurationen

remove passt, wenn Sie das Programm später vielleicht wieder brauchen und die Einstellungen behalten wollen. purge benutzen Sie für eine vollständige Neuinstallation von Grund auf. Beachten Sie: Dateien im Home-Verzeichnis des Benutzers (etwa ~/.config) entfernt keiner dieser Befehle.

Pakete, die entfernt wurden, deren Konfigurationen aber geblieben sind, finden Sie am Status rc:

dpkg -l | grep '^rc'

Pakete suchen und Informationen abrufen

apt search postgresql          # Suche nach Name und Beschreibung
apt search --names-only '^php8' # nur nach dem Namen, mit regulärem Ausdruck
apt show htop                  # Version, Größe, Abhängigkeiten, Beschreibung
apt policy docker.io           # welche Versionen verfügbar sind und woher
apt list --installed | grep python3
apt-cache depends curl         # wovon das Paket abhängt
apt-cache rdepends libssl3     # wer von dem Paket abhängt

Welchem Paket gehört eine Datei?

$ dpkg -S /usr/bin/curl
curl: /usr/bin/curl

$ dpkg -L curl        # welche Dateien das Paket installiert hat

Fehlt ein Befehl im System, sagt Ubuntu beim Aufruf selbst, welches Paket Sie brauchen (Meldung Command 'tree' not found, but can be installed with: sudo apt install tree). Für die Suche nach Dateien in nicht installierten Paketen gibt es das Werkzeug apt-file: apt-file search bin/dig nach sudo apt-file update.

Version fixieren: apt-mark hold

Manchmal darf ein Paket nicht aktualisiert werden — zum Beispiel wechselt man die Version eines DBMS oder des Kernels auf einem Produktivsystem nur von Hand. Dafür wird das Paket „eingefroren“:

sudo apt-mark hold postgresql-16
apt-mark showhold
sudo apt-mark unhold postgresql-16

Ein weiteres nützliches Paar sind apt-mark manual und apt-mark auto. Pakete, die als Abhängigkeit installiert wurden, sind als automatisch markiert und landen bei autoremove, sobald sie nicht mehr gebraucht werden. Die Markierung manual schützt ein Paket davor.

Repositories: hinzufügen und ihre Lage

Die Liste der Quellen steht in /etc/apt/sources.list und in den Dateien /etc/apt/sources.list.d/*.list. In Ubuntu 24.04 und Debian 12+ wird zunehmend das Format deb822 mit der Endung .sources verwendet (zum Beispiel /etc/apt/sources.list.d/ubuntu.sources).

Fremdes Repository mit Schlüssel

Der moderne Weg ist, den Schlüssel des Repositories separat abzulegen und über signed-by zuzuordnen. Der Befehl apt-key ist veraltet und in neuen Versionen entfernt.

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release && echo $VERSION_CODENAME) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce

PPA in Ubuntu

sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo add-apt-repository --remove ppa:deadsnakes/ppa

PPA sind persönliche Repositories auf Launchpad. Binden Sie nur solche ein, denen Sie vertrauen: Pakete daraus werden mit root-Rechten installiert.

Cache und Speicherplatz

Heruntergeladene Pakete bleiben in /var/cache/apt/archives/ liegen. Auf kleinen Datenträgern und in Docker-Images sollten Sie diesen Cache leeren.

du -sh /var/cache/apt/archives
sudo apt clean          # gesamten .deb-Cache löschen
sudo apt autoclean      # nur veraltete Versionen löschen

In einem Dockerfile schreibt man die Installation üblicherweise in eine Schicht und entfernt die Paketlisten gleich wieder:

RUN apt-get update \
 && apt-get install -y --no-install-recommends curl ca-certificates \
 && rm -rf /var/lib/apt/lists/*

In Skripten verwendet man apt-get statt apt: Die Schnittstelle von apt ist nicht stabil, und das Programm warnt selbst davor (WARNING: apt does not have a stable CLI interface). Damit der Installer keine Fragen stellt, ergänzen Sie DEBIAN_FRONTEND=noninteractive.

Typische Fehler von apt und ihre Behebung

Could not get lock /var/lib/dpkg/lock-frontend

Ein anderer Prozess arbeitet bereits mit den Paketen: ein zweites Terminal mit apt, das „Software-Center“ oder die automatischen Updates unattended-upgrades im Hintergrund. Warten Sie einige Minuten und prüfen Sie, wer die Sperre hält:

ps aux | grep -E 'apt|dpkg'

Löschen Sie die Lock-Dateien nicht von Hand, solange der Prozess läuft: Eine unterbrochene Installation kann das System in einen inkonsistenten Zustand bringen. Ist der Prozess tatsächlich hängen geblieben oder beendet worden, führen Sie danach sudo dpkg --configure -a aus.

Unable to locate package

apt hat das Paket nicht gefunden. Meist haben Sie auf einem frischen System kein sudo apt update ausgeführt, sich im Namen vertippt oder das Paket liegt in einer deaktivierten Komponente (universe in Ubuntu). Die Komponente aktivieren Sie mit sudo add-apt-repository universe.

Unmet dependencies / held broken packages

Die Abhängigkeiten passen nicht zusammen — meist nach einer manuellen Installation einer .deb-Datei oder nach dem Mischen von Repositories verschiedener Distributionsversionen.

sudo apt --fix-broken install
sudo dpkg --configure -a
apt policy problematisches-paket

dpkg was interrupted

Die Installation wurde abgebrochen (Terminal geschlossen, Stromausfall). Die Meldung nennt die Lösung direkt: sudo dpkg --configure -a.

NO_PUBKEY bei apt update

Dem fremden Repository fehlt der Signaturschlüssel oder er ist veraltet. Laden Sie den aktuellen Schlüssel von der Website des Projekts nach /etc/apt/keyrings/ herunter und tragen Sie ihn über signed-by ein, wie im Beispiel mit Docker oben.

Automatische Sicherheitsupdates

Auf Ubuntu Server ist standardmäßig das Paket unattended-upgrades installiert, das Sicherheitsupdates selbstständig einspielt. Prüfen und aktivieren können Sie es so:

sudo apt install unattended-upgrades
sudo dpkg-reconfigure -plow unattended-upgrades
cat /var/log/unattended-upgrades/unattended-upgrades.log

Ob nach einem Update ein Neustart nötig ist, zeigt die Datei /var/run/reboot-required: Existiert sie, wurden der Kernel oder wichtige Bibliotheken aktualisiert.

Fazit

Die grundlegenden apt Befehle folgen einem kurzen Zyklus: update vor jeder Aktion, install zum Installieren, upgrade zum Aktualisieren, remove oder purge zum Entfernen und autoremove zum Aufräumen. Für Versionen gibt es apt policy und apt-mark hold, für Störungen --fix-broken install und dpkg --configure -a, und in Skripten verwenden Sie apt-get. Die Paketverwaltung wird im Kurs zu Linux praxisnah behandelt.

Häufige Fragen

Worin unterscheidet sich apt von apt-get?

Beide sind Schnittstellen zum selben Paketsystem. apt ist bequemer für die Arbeit im Terminal (Fortschritt, Farben, kurze Befehle), apt-get hat eine stabile Ausgabe und wird für Skripte und Dockerfiles empfohlen.

Muss ich vor jeder Installation apt update ausführen?

Am besten, wenn die Listen lange nicht aktualisiert wurden: Sonst findet apt das Paket möglicherweise nicht oder versucht eine Version herunterzuladen, die auf dem Mirror nicht mehr existiert, und meldet einen Fehler 404.

Wo sehe ich den Verlauf der Installationen und Entfernungen durch apt?

Der Verlauf steht in /var/log/apt/history.log (ältere Einträge in den Archiven history.log.N.gz), das ausführliche Protokoll von dpkg in /var/log/dpkg.log.

Wie rolle ich ein Paket auf eine ältere Version zurück?

Ermitteln Sie die verfügbaren Versionen mit apt policy paket und installieren Sie die gewünschte mit sudo apt install paket=version. Anschließend fixieren Sie sie mit apt-mark hold, damit das nächste Update nicht wieder die neue einspielt.

Kann ich apt auf CentOS oder Fedora verwenden?

Nein, dort gibt es ein anderes Paketformat (rpm) und eigene Paketmanager — dnf und yum. apt funktioniert auf Debian, Ubuntu und deren Ablegern.

Das Thema im Video lernen

Dieses Thema wird im Kurs „Linux: с нуля до уверенного администрирования“ ausführlich mit Praxis behandelt.

Zum Kurs