Zum Hauptinhalt springen
S-EDV news
← Alle Anleitungen
📘 Anleitung Linux 02.06.2026 · 10 min Lesezeit

Pakete verwalten mit apt und dpkg unter Debian/Ubuntu

Pakete unter Debian und Ubuntu sicher verwalten: apt update, apt upgrade, installieren, entfernen, lokale .deb-Dateien nutzen und Paketquellen modern einrichten.

Pakete verwalten mit apt und dpkg unter Debian/Ubuntu

Pakete verwalten mit apt und dpkg unter Debian und Ubuntu gehört zu den wichtigsten Linux-Grundlagen überhaupt. Fast alles, was du später auf einem Debian- oder Ubuntu-System tust, baut darauf auf: Dienste installieren, Sicherheitsupdates einspielen, Zusatzsoftware nachladen, Pakete sauber entfernen oder neue Quellen einbinden.

Einsteiger stolpern dabei oft über zwei Dinge gleichzeitig: erstens über die Frage, wann sie apt und wann sie dpkg verwenden sollen, und zweitens über die Unsicherheit, was ein Befehl wie upgrade, full-upgrade, remove oder purge im Ergebnis wirklich verändert. Genau deshalb gehen wir hier bewusst Schritt für Schritt vor und prüfen nach jeder wichtigen Aktion, was sich auf dem System geändert hat.

Voraussetzungen

  • Ein Debian- oder Ubuntu-System mit Internetzugang
  • Sudo-Rechte oder Root-Zugang
  • Grundlegender Terminal-Zugriff
  • Etwas freie Aufmerksamkeit: Paketverwaltung ist kein Hexenwerk, aber ein falscher Befehl wie purge oder eine schlechte Fremdquelle kann unnötig Ärger verursachen

Wichtig vorab: Diese Anleitung ist bewusst auf Debian und Ubuntu ausgerichtet. Auf RHEL, Rocky, AlmaLinux oder Fedora gelten andere Werkzeuge wie dnf oder yum.

Schritt 1: Verstehen, was apt und dpkg jeweils tun

Bevor du Befehle ausführst, brauchst du ein sauberes Bild von den beiden Werkzeugen:

  • apt ist das Werkzeug für den normalen Alltag. Es kann Paketlisten aktualisieren, Abhängigkeiten auflösen, Pakete installieren, aktualisieren und entfernen.
  • dpkg arbeitet eine Ebene tiefer. Es kennt einzelne Debian-Pakete und deren installierte Dateien, löst aber Abhängigkeiten nicht so komfortabel wie apt.

Eine gute Faustregel lautet deshalb: Wenn du nicht bewusst mit einer lokalen .deb-Datei oder einer Detailprüfung arbeitest, nimm zuerst apt.

Verifizieren: Du hast diesen Schritt verstanden, wenn du die Rollen sauber trennen kannst: apt ist dein Standardwerkzeug für den Paket-Alltag, dpkg ist eher das Werkzeug für lokale Pakete und Detailfragen.

Schritt 2: Paketlisten aktualisieren und Updates einspielen

Bevor du installierst oder aktualisierst, musst du dem System zuerst sagen, welche Pakete und Versionen aus den konfigurierten Quellen überhaupt verfügbar sind. Genau das macht apt update.

sudo apt update

apt list --upgradable

sudo apt upgrade

Die Reihenfolge dahinter ist wichtig:

  • apt update lädt aktuelle Paketinformationen
  • apt list --upgradable zeigt dir, welche Pakete aktualisiert werden könnten
  • apt upgrade installiert normale Updates, ohne Pakete zu entfernen

Daneben gibt es noch:

sudo apt full-upgrade

full-upgrade geht weiter als upgrade. Dabei dürfen auch Abhängigkeiten neu sortiert oder in manchen Fällen Pakete entfernt werden. Genau deshalb solltest du diesen Befehl bewusster einsetzen und die geplanten Änderungen vorher genau lesen.

Verifizieren: Der Schritt ist erfolgreich, wenn apt update ohne Fehler durchläuft, apt list --upgradable dir eine nachvollziehbare Liste zeigt und du nach apt upgrade keine halb fertige Paketaktion zurückbehältst. Wenn Fehler wie NO_PUBKEY oder nicht erreichbare Quellen auftauchen, gehst du nicht einfach weiter, sondern behebst zuerst die Ursache.

Schritt 3: Pakete suchen und Informationen prüfen

Bevor du etwas installierst, ist es oft sinnvoll, den exakten Paketnamen, die Beschreibung oder den Status zu prüfen. So vermeidest du Tippfehler und installierst eher das richtige Paket.

apt search nginx

apt show nginx

apt list --installed | grep nginx

dpkg -l | grep nginx

Typische Nutzung:

  • apt search sucht nach Paketen
  • apt show zeigt Details wie Version, Maintainer und Beschreibung
  • apt list --installed oder dpkg -l helfen dir zu prüfen, ob ein Paket schon installiert ist

Wenn du später zum Beispiel Dienste mit systemd verwaltest, ist dieser Schritt oft der Einstieg: erst prüfen, wie ein Paket genau heißt und ob es schon vorhanden ist, dann installieren, dann den Dienststatus anschauen. Dazu passt unsere Anleitung systemd-Service erstellen und verwalten.

Verifizieren: Der Schritt ist erfolgreich, wenn du für ein Beispielpaket den Namen suchen, die Paketbeschreibung lesen und anschließend erkennen kannst, ob es auf deinem System schon installiert ist oder nicht.

Schritt 4: Pakete installieren, entfernen und bereinigen

Jetzt kommt der eigentliche Alltag: Software installieren, bei Bedarf wieder entfernen und aufräumen.

sudo apt install nginx

sudo apt remove nginx

sudo apt purge nginx

sudo apt autoremove

Der Unterschied zwischen den Befehlen ist wichtig:

  • install installiert das Paket samt nötiger Abhängigkeiten
  • remove entfernt das Paket, lässt aber meist Konfigurationsreste zurück
  • purge entfernt zusätzlich Konfigurationsdateien des Pakets
  • autoremove räumt nicht mehr benötigte Abhängigkeiten auf

Wichtig: purge ist kein besseres remove, sondern ein bewussterer, gründlicherer Schritt. Gerade auf Servern willst du Konfigurationen manchmal absichtlich behalten, wenn du ein Paket später wieder aktivieren möchtest.

Verifizieren: Nach einer Installation solltest du prüfen können, dass das Paket wirklich da ist, zum Beispiel mit dpkg -l | grep PAKETNAME. Nach remove oder purge sollte der Status entsprechend verschwinden oder sich ändern. Wenn ein Paket zu einem Dienst gehört, ist oft auch ein Blick in systemctl status oder in die Logs sinnvoll. Dazu passt unser Grundlagenartikel Logs lesen mit journalctl und /var/log.

Schritt 5: Lokale .deb-Dateien mit dpkg installieren

Nicht jede Software kommt direkt aus den Standardquellen. Manche Hersteller liefern einzelne .deb-Dateien. Dafür brauchst du meist dpkg.

sudo dpkg -i paketdatei.deb

sudo apt --fix-broken install

Warum zwei Schritte? dpkg -i installiert die Datei selbst, löst aber fehlende Abhängigkeiten nicht so bequem wie apt. Genau deshalb folgt oft direkt apt --fix-broken install, damit alle nötigen Pakete sauber nachgezogen werden.

Nützliche Zusatzbefehle:

dpkg -l | grep paketname

dpkg -L paketname

dpkg -r paketname

dpkg --configure -a
  • dpkg -L zeigt dir, welche Dateien ein installiertes Paket abgelegt hat
  • dpkg -r entfernt ein Paket auf dpkg-Ebene
  • dpkg --configure -a hilft, wenn eine Paketkonfiguration unterbrochen wurde

Verifizieren: Der Schritt ist erfolgreich, wenn nach einer lokalen Installation keine offenen Abhängigkeitsfehler zurückbleiben und du das Paket anschließend über dpkg -l oder apt list --installed wiederfindest.

Schritt 6: Paketquellen modern mit signed-by und Keyrings einrichten

Fremde Paketquellen sind praktisch, aber auch ein echter Vertrauenspunkt. Genau deshalb solltest du sie sauber und modern einrichten. Das alte apt-key gilt heute als veraltet und sollte nicht mehr dein Standardweg sein.

Der moderne Ansatz sieht so aus:

sudo mkdir -p /etc/apt/keyrings

curl -fsSL https://example.org/repo.gpg | sudo gpg --dearmor -o /etc/apt/keyrings/beispiel.gpg

echo 'deb [signed-by=/etc/apt/keyrings/beispiel.gpg] https://example.org/debian stable main' | sudo tee /etc/apt/sources.list.d/beispiel.list > /dev/null

sudo apt update

Das Grundprinzip dahinter:

  • Der Schlüssel liegt als eigene Datei im Keyring-Verzeichnis
  • Die Quelle verweist mit signed-by= gezielt auf genau diesen Schlüssel
  • Andere Quellen bekommen dadurch nicht automatisch dasselbe Vertrauen

Wichtig: Den genauen URL-Pfad, den richtigen Distributionsnamen und die echte Quellenzeile übernimmst du immer aus der offiziellen Herstellerdokumentation. Hier im Artikel geht es um das saubere Muster, nicht um das Erfinden einer beliebigen Fremdquelle.

Verifizieren: Der Schritt ist erfolgreich, wenn nach dem Einbinden einer Quelle sudo apt update ohne Schlüssel- oder Signaturfehler durchläuft. Tauchen Fehler wie NO_PUBKEY oder eine falsch benannte Distribution auf, stimmt die Quelle oder der Keyring-Eintrag noch nicht.

Schritt 7: Pakete gezielt festhalten und den Cache bereinigen

Manche Pakete willst du nicht sofort aktualisieren, zum Beispiel weil eine bestimmte Version stabil laufen muss. Dafür gibt es apt-mark hold. Gleichzeitig sammelt APT im Laufe der Zeit Cache-Dateien an, die du bei Bedarf aufräumen kannst.

sudo apt-mark hold nginx

apt-mark showhold

sudo apt-mark unhold nginx

sudo apt clean

sudo apt autoclean

Die wichtigsten Unterschiede:

  • hold verhindert automatische Aktualisierungen eines Pakets
  • showhold zeigt dir alle festgehaltenen Pakete
  • unhold gibt das Paket wieder frei
  • clean leert den Paketcache gründlich
  • autoclean entfernt vor allem nicht mehr brauchbare ältere Paketdateien

Mit solchen Schritten solltest du bewusst umgehen. Ein vergessenes Hold kann später dazu führen, dass du veraltete Pakete übersiehst.

Verifizieren: Der Schritt ist erfolgreich, wenn ein per hold markiertes Paket in apt-mark showhold auftaucht und nach unhold wieder verschwindet. Beim Cache-Aufräumen solltest du verstehen, dass damit nicht das installierte Paket selbst entfernt wird, sondern nur heruntergeladene Paketdateien.

Schritt 8: Automatische Sicherheits-Updates mit unattended-upgrades

Gerade auf Servern willst du nicht darauf vertrauen, dass kritische Sicherheitsupdates immer sofort manuell eingespielt werden. Dafür gibt es unter Debian und Ubuntu häufig das Paket unattended-upgrades.

sudo apt install unattended-upgrades

sudo dpkg-reconfigure unattended-upgrades

Damit aktivierst du automatische Sicherheitsupdates in einem unterstützten Standardweg. Je nach Distribution und Ausgangslage kann das Paket schon vorhanden oder schon aktiv sein.

Wenn du prüfen willst, ob es installiert ist:

dpkg -l | grep unattended-upgrades

Und wenn du die Konfiguration später genauer lesen willst, schaust du typischerweise in:

/etc/apt/apt.conf.d/20auto-upgrades
/etc/apt/apt.conf.d/50unattended-upgrades

Verifizieren: Der Schritt ist erfolgreich, wenn das Paket installiert ist und die Konfigurationsdateien vorhanden sind. Du solltest außerdem nachvollziehen können, dass automatische Sicherheitsupdates etwas anderes sind als ein komplettes unbeaufsichtigtes Versions-Upgrade aller Pakete.

Troubleshooting

  • apt update meldet NO_PUBKEY: Dann fehlt der passende Schlüssel oder die Quelle verweist nicht sauber per signed-by= auf den richtigen Keyring.
  • dpkg -i endet mit Abhängigkeitsfehlern: Genau dafür ist danach sudo apt --fix-broken install gedacht.
  • Eine Paketaktion wurde unterbrochen: Dann helfen oft sudo dpkg --configure -a und anschließend sudo apt --fix-broken install.
  • Nach full-upgrade sollen Pakete entfernt werden: Dann brich ab, lies die Liste genau und entscheide bewusst, ob diese Änderungen zu deinem System passen.
  • Du kannst Paketdateien oder Konfigurationsreste nicht einordnen: Dann lohnt sich ein Blick auf Rechte und Besitzverhältnisse. Dafür passt unsere Anleitung Linux-Benutzer, Gruppen und Rechte verstehen.

Häufige Fragen

Was ist der Unterschied zwischen apt und apt-get?

apt ist die modernere, benutzerfreundlichere Oberfläche für die interaktive Arbeit im Terminal. apt-get wird weiterhin oft in Skripten oder älteren Dokumentationen verwendet.

Wann nehme ich remove und wann purge?

remove ist sinnvoll, wenn du das Paket loswerden, die Konfiguration aber vielleicht behalten möchtest. purge nutzt du, wenn auch die Konfigurationsreste bewusst entfernt werden sollen.

Muss ich immer zuerst apt update ausführen?

Immer dann, wenn du mit aktuellen Paketinformationen arbeiten willst, also vor Installationen oder Upgrades. Ohne apt update arbeitet das System eventuell mit veralteten Paketlisten.

Warum sollte ich apt-key nicht mehr verwenden?

Weil der alte Mechanismus Vertrauensgrenzen unsauber macht. Die moderne Kombination aus Keyring-Datei und signed-by= ist klarer und sicherer.

Wofür ist dpkg -L nützlich?

Damit siehst du, welche Dateien ein installiertes Paket auf dem System abgelegt hat. Das ist praktisch bei Fehlersuche, Konfigurationssuche oder Aufräumarbeiten.

Was ist der Unterschied zwischen clean und autoclean?

clean leert den Paketcache grundsätzlich. autoclean entfernt vor allem alte Paketdateien, die nicht mehr sinnvoll verwendet werden können.

Fazit

Wenn du Debian- oder Ubuntu-Systeme sicher betreiben willst, ist eine ruhige und saubere Paketverwaltung Pflicht. Die wichtigste Grundlage ist dabei nicht nur das Wissen über einzelne Befehle, sondern die Reihenfolge: erst verstehen, dann prüfen, dann aktualisieren oder installieren, und nach jeder Änderung kontrollieren, was wirklich passiert ist. Genau so vermeidest du blinde Paketaktionen.

Als nächste passende Bausteine ergänzen dazu besonders Logs lesen mit journalctl und /var/log, systemd-Service erstellen und verwalten und Cron und crontab richtig nutzen – die Grundlagen das Fundament sinnvoll.

Weiterführende Anleitungen und Quellen

Quellen: apt(8) Debian Manpage, dpkg(1) Debian Manpage, Debian Wiki: UseThirdParty, unattended-upgrades(8) Debian Manpage.