dpkg = Debian Package Manager
Es ist das Basiswerkzeug zur Verwaltung von Paketen in Debian-basierten Systemen.
Im Gegensatz zu höheren Paketverwaltungswerkzeugen wie apt (oder apt-get), die dpkg im Hintergrund nutzen, arbeitet dpkg auf einer niedrigeren Ebene und bietet direkten Zugriff auf die Paket-Operationen.
Syntax
dpkg [OPTIONS] ACTION-i, --install Installiert das angegebene Paket. Es extrahiert und konfiguriert die Dateien, führt Skripte aus und sichert alte Dateien.
--unpack Entpackt das Paket, ohne es zu konfigurieren.
--configure Konfiguriert ein entpacktes, aber noch nicht konfiguriertes Paket. Kann auch alle ausstehenden Pakete konfigurieren.
--triggers-only Verarbeitet nur Trigger, die durch Paketaktionen ausgelöst wurden.
-r, --remove Entfernt ein installiertes Paket, wobei Konfigurationsdateien erhalten bleiben.
-P, --purge Deinstalliert ein Paket und entfernt alle Dateien, einschließlich Konfigurationsdateien.
-V, --verify Überprüft die Integrität eines Pakets.
-C, --audit Überprüft die Konsistenz der Paket-Datenbank.
--update-avail / --merge-avail Aktualisiert die Informationen über verfügbare Pakete in der dpkg-Datenbank.
-A, --record-avail Aktualisiert die Verfügbarkeit von Paketen mit Informationen aus der angegebenen Paketdatei.
--clear-avail Löscht die Informationen über verfügbare Pakete.
--get-selections Gibt die aktuelle Auswahl der installierten Pakete aus.
--set-selections Stellt die Paket-Auswahl basierend auf einer Eingabedatei ein.
--clear-selections Setzt den Zustand aller nicht-essentiellen Pakete auf „deinstallieren“.
--yet-to-unpack Sucht nach Paketen, die zur Installation ausgewählt, aber noch nicht installiert wurden.
--predep-package Gibt ein Paket aus, das relevante Vor-Abhängigkeiten erfüllt und selbst keine unbefriedigten Vor-Abhängigkeiten hat.
--add-architecture Fügt eine Architektur zur Liste der unterstützten Architekturen hinzu.
--remove-architecture Entfernt eine Architektur zur Liste der unterstützten Architekturen.
--print-architecture Gibt die Architektur an, für die dpkg Pakete installiert.
--print-foreign-architectures Gibt die Liste der zusätzlichen Architekturen aus, die von dpkg unterstützt werden.
--compare-versions Vergleicht Versionsnummern basierend auf den angegebenen Operatoren.
-?, --help Zeigt eine kurze Hilfe an.
--version Zeigt die Versionsinformationen von dpkg an.
Aufbau
Ein Debian-Paket (.deb) besteht aus:
- Dateien: Die eigentlichen Dateien, die installiert werden sollen.
- Meta-Daten: Wie die Paketbeschreibung, die Versionsnummer, Abhängigkeiten, etc.
- Installations- und Deinstallationsskripte: Skripte, die vor, während und nach der Installation/Deinstallation des Pakets ausgeführt werden.
Operationen
Installation eines Pakets
Um ein .deb Paket zu installieren, verwendet man folgenden Befehl.
sudo dpkg -i paketname.deb-i Steht für install. Es sagt dpkg, dass das angegebene Paket installiert werden soll.
Überprüfung der Installation
Nach der Installation kann man überprüfen, ob das Paket korrekt installiert wurde.
sudo dpkg -l | grep <paketname>-l Zeigt eine Liste aller installierten Pakete an
grep <paketname> filtert die Liste nach dem Namen des Pakets.
Entfernen eines Pakets
Um ein Paket zu entfernen, verwendet man folgende Anweisung.
sudo dpkg -r <paketname>-P Steht für purge. Es entfernt das Paket und seine Konfigurationsdateien.
Informationen über Pakete
Liste aller installierten Pakete
Um eine Liste aller installierten Pakete anzuzeigen, wird folgende Anweisung verwendet.
sudo dpkg -lDetaillierte Informationen anzeigen
Wenn man detaillierte Informationen zu einem installierten Paket erhalten möchte, verwendet man folgenden Befehl.
sudo dpkg -s <paketname>-s Steht für status und zeigt den Status und die Details des Pakets an.
Häufige Stolperfallen
dpkg vs. apt — das falsche Werkzeug für den Alltag.
Der häufigste Fehler: dpkg wird wie ein vollwertiger Paketmanager behandelt. dpkg installiert nur das angegebene .deb-Paket, ohne Abhängigkeiten aufzulösen. Fehlen benötigte Bibliotheken oder Pakete, schlaegt die Installation entweder sofort fehl oder — schlimmer — das Programm läuft später nicht richtig. Für die taegliche Paketverwaltung verwendest du apt, das Abhängigkeiten automatisch berechnet und aus den Repositories nachinstalliert. dpkg ist das richtige Werkzeug, wenn du ein einzelnes, heruntergeladenes .deb installieren oder detaillierte Informationen über ein bereits installiertes Paket abrufen willst.
Fehlende Abhängigkeiten nach dpkg -i — der DPKG-Broken-State.
Installierst du ein .deb mit dpkg -i und es fehlen Abhängigkeiten, vermerkt dpkg das Paket als “halb-installiert” oder führt zu einem broken state. apt wird danach bei jeder Operation meckern und dich auffordern, apt —fix-broken install auszuführen. Das repariert den Zustand, indem es die fehlenden Abhängigkeiten nachinstalliert. Am elegantesten umgehst du das Problem, indem du lokale .deb-Dateien direkt mit sudo apt install ./paketname.deb installierst — apt nutzt dann dpkg im Hintergrund, löst aber vorher alle Abhängigkeiten auf.
dpkg --force-remove — gewaltsames Entfernen mit Kollateralschaeden.
dpkg bietet verschiedene —force-* Optionen, die die normalen Schutzmechanismen aushebeln. dpkg —force-remove-reinstreq oder dpkg —force-depends entfernen Pakete auch dann, wenn andere Pakete darauf angewiesen sind. Das Ergebnis: Abhängige Pakete funktionieren nicht mehr, die Paketdatenbank wird inkonsistent und das System kann in einen schwer reparierbaren Zustand geraten. Diese Optionen sind nur für absolute Notfaelle gedacht, wenn ein kaputtes Paket das gesamte System blockiert — und auch dann nur mit anschließendem apt —fix-broken install.
Kein automatisches Update — dpkg aktualisiert keine Paketlisten.
Anders als apt update && apt upgrade hat dpkg kein Konzept von Repositories oder automatischen Updates. Es weiß nichts von neuen Versionen, Sicherheitsupdates oder verfügbaren Alternativen. Wer ausschließlich mit dpkg arbeitet, muss jedes Update manuell als .deb-Datei herunterladen und installieren — inklusive aller Abhängigkeiten. Für die Systempflege ist apt der richtige Weg; dpkg ergänzt es für Low-Level-Operationen.
Hold-Status mit dpkg --set-selections — das vergessene Paket.
Mit echo “paketname hold” | sudo dpkg —set-selections kannst du ein Paket auf “hold” setzen, sodass es von apt upgrade nicht aktualisiert wird. Das ist praktisch für kritische Software, die eine bestimmte Version behalten muss. Die Gefahr: Monate oder Jahre später hat niemand mehr auf dem Schirm, dass dieses Paket zurückgehalten wird — es verpasst Sicherheitsupdates und wird zur Schwachstelle. Mit apt-mark showhold listest du alle zurückgehaltenen Pakete auf. Dokumentiere den Grund für jeden Hold und überprüfe die Liste regelmäßig.
Weiterführende Ressourcen
Externe Quellen
- dpkg(1) – Debian Manpage (man7.org) — Offizielle Manpage mit allen Optionen und Aktionen
- Debian Wiki: dpkg — Umfassende Dokumentation mit Praxisbeispielen
- Ubuntu Manpage: dpkg — Ubuntu-spezifische Manpage
Verwandte Artikel
- apt – Pakete installieren und aktualisieren — Das APT-Werkzeug für den Alltag
- Linux Shell — Grundlagen der Kommandozeile
- Linux Berechtigungen — Dateirechte und sudo
- Linux Verzeichnisstruktur — Das FHS und wohin installierte Pakete gehören