VMware ESXi and vSphere Cluster Management
Paketverwaltung mit dpkg unter Debian und Ubuntu
Lerne, wie du lokale DEB-Pakete mit dpkg unter Debian, Ubuntu und Linux Mint installierst, aktualisierst, entfernst, bereinigst und überprüfst.
dpkg ist das niedrigstufige Werkzeug zur direkten Verwaltung von Debian-Paketen. Mit ihm installierst, entfernst und untersuchst du lokale DEB-Pakete auf Debian-basierten Distributionen wie Debian, Ubuntu, Linux Mint oder Knoppix.
Diese Lektion behandelt die wichtigsten Befehle für lokale Paketdateien und bereits installierte Pakete. Für die normale Softwareinstallation aus Paketquellen ist meist APT die bessere Wahl, weil APT Paketquellen verwaltet und Abhängigkeiten automatisch auflösen kann.
Voraussetzungen und wichtige Begriffe
Du solltest grundlegende Terminalbefehle, Datei- und Verzeichnispfade sowie die Verwendung von sudo kennen. sudo führt einen Befehl mit administrativen Rechten aus. Änderungen an der Paketdatenbank und an Systemverzeichnissen benötigen diese Rechte.
- DEB-Paket: Eine Datei mit der Endung
.deb. Sie enthält ein Programm, Paketmetadaten und gegebenenfalls Maintainer-Skripte. - Paketname: Der Name eines Pakets, das in der lokalen Paketdatenbank bekannt oder installiert ist, beispielsweise
beispielprogramm. - Paketabhängigkeit: Ein weiteres Paket oder eine bestimmte Version, die für die Installation oder Ausführung benötigt wird.
- Paketmetadaten: Beschreibende Angaben wie Name, Version, Architektur, Maintainer, Beschreibung und Abhängigkeiten.
Einordnung von dpkg
dpkg steht für Debian Package Manager. Es arbeitet direkt mit dem Debian-Paketformat und der lokalen Paketdatenbank. Eine lokale Datei wie beispielprogramm_1.0_amd64.deb kann damit installiert oder eine bereits installierte Paketversion kann entfernt werden.
Debian-basierte Distributionen verwenden DEB-Pakete als grundlegendes Paketformat. APT baut auf den niedrigeren Paketwerkzeugen auf: Es nutzt konfigurierte Paketquellen, lädt Pakete aus diesen Quellen und berechnet die erforderlichen Abhängigkeiten. dpkg selbst installiert dagegen grundsätzlich nur das angegebene Paket und löst fehlende Abhängigkeiten nicht selbstständig auf.
| Merkmal | dpkg | APT |
|---|---|---|
| Verarbeitung lokaler DEB-Dateien | Direkte Installation und Verwaltung einer angegebenen Datei | Kann lokale Pakete ebenfalls über höhere Befehle verarbeiten, ist aber vor allem für Paketquellen gedacht |
| Installation aus Paketquellen | Nicht die Hauptaufgabe | Ja, über konfigurierte Repositories |
| Automatische Abhängigkeitsauflösung | Nein | Ja |
| Typischer Einsatzzweck | Lokale Paketdateien und direkte Kontrolle über den Paketstatus | Reguläre Installation, Aktualisierung und Reparatur des Systems |
Grundsyntax und Rechte
Die allgemeine Form lautet:
dpkg [Option] Paket oder Paketdatei
Installierende, entfernende und bereinigende Aktionen werden normalerweise mit sudo ausgeführt:
sudo dpkg [Option] Paket oder Paketdatei
Ein entscheidender Unterschied ist das erwartete Argument:
- Bei
-igibst du eine lokale Paketdatei an, zum Beispiel./beispielprogramm_1.0_amd64.deboder einen absoluten Pfad wie/home/user/Downloads/beispielprogramm_1.0_amd64.deb. - Bei
-rund-Pgibst du den Namen eines installierten Pakets an, nicht den Pfad zu einer DEB-Datei. - Bei
-pverwendest du ebenfalls normalerweise den Paketnamen aus der lokalen Paketdatenbank.
Lokales DEB-Paket installieren
Mit -i oder --install installierst du eine lokale DEB-Datei. Der Pfad muss auf eine vorhandene Datei zeigen:
sudo dpkg -i ./beispielprogramm_1.0_amd64.deb
Das Präfix ./ bedeutet, dass sich die Datei im aktuellen Verzeichnis befindet. Alternativ kannst du einen absoluten oder relativen Pfad verwenden:
sudo dpkg --install /home/user/Downloads/beispielprogramm_1.0_amd64.deb
Ist bereits eine ältere Version desselben Pakets installiert, kann die Installation einer neueren Datei als Aktualisierung dienen:
sudo dpkg -i ./beispielprogramm_1.1_amd64.deb
Nach dem Befehl solltest du die Ausgabe prüfen. Wenn die DEB-Datei Abhängigkeiten benötigt, die auf dem System fehlen, kann dpkg den Paketstatus als unvollständig melden. dpkg lädt diese Zusatzpakete nicht automatisch aus den Paketquellen nach.
Paket entfernen oder vollständig bereinigen
Remove: Programmdateien entfernen, Konfiguration behalten
-r beziehungsweise --remove entfernt die Dateien eines installierten Pakets. Systemweite Konfigurationsdateien bleiben dabei grundsätzlich erhalten:
sudo dpkg -r beispielprogramm
Diese Variante ist sinnvoll, wenn du ein Programm vorübergehend entfernen, eine spätere Neuinstallation vorbereiten oder die bisherige Systemkonfiguration behalten möchtest.
Purge: Paket und Konfiguration entfernen
-P beziehungsweise --purge entfernt das Paket einschließlich seiner systemweiten Paketkonfiguration:
sudo dpkg -P beispielprogramm
Nutze purge, wenn du das Paket vollständig aus der Paketverwaltung entfernen und die zugehörige systemweite Konfiguration nicht behalten möchtest. Benutzerdaten in persönlichen Verzeichnissen werden dadurch nicht automatisch in jedem Fall entfernt.
| Option | Langform | Zweck | Erwartetes Argument | Auswirkung auf Konfigurationsdateien |
|---|---|---|---|---|
-i | --install | Lokale DEB-Datei installieren oder eine Version ersetzen | Pfad zu einer .deb-Datei | Installiert oder aktualisiert die vom Paket verwalteten Dateien |
-r | --remove | Installiertes Paket entfernen | Paketname | Systemweite Konfiguration bleibt grundsätzlich erhalten |
-P | --purge | Paket vollständig bereinigen | Paketname | Systemweite Paketkonfiguration wird ebenfalls entfernt |
-l | --list | Bekannte Pakete und ihren Status auflisten | Optional ein Paketname oder Muster | Keine Änderung |
-p | --print-avail | Gespeicherte verfügbare Paketinformationen anzeigen | Paketname | Keine Änderung |
Installierte Pakete auflisten
Mit -l oder --list zeigst du die Paketliste der lokalen dpkg-Datenbank an:
dpkg -l
Die Ausgabe enthält typischerweise eine Statuszeile mit drei Zeichen. Vereinfacht bedeuten die Spalten:
- Die erste Spalte beschreibt den gewünschten Zustand, etwa Installation oder Entfernung.
- Die zweite Spalte beschreibt den tatsächlichen Paketstatus, etwa installiert, nicht installiert oder nur teilweise entpackt.
- Die dritte Spalte weist auf einen Fehler- oder weiteren Status hin.
Die genaue Legende wird am Anfang der Ausgabe angezeigt. Ein Eintrag mit ii in den ersten beiden Statuspositionen steht typischerweise für ein zur Installation ausgewähltes und vollständig installiertes Paket. Auch entfernte Pakete können auftauchen: Wenn ihre Konfigurationsdateien noch vorhanden sind, bleibt ein entsprechender Eintrag in der Datenbank bestehen.
Mit einem Shell-Muster kannst du die Suche eingrenzen. Setze das Muster in Anführungszeichen, damit die Shell es nicht vorzeitig auswertet:
dpkg -l '*beispielprogramm*'
So findest du den exakten Paketnamen, bevor du ein Paket entfernst oder bereinigst.
Paketmetadaten anzeigen
-p beziehungsweise --print-avail zeigt gespeicherte Informationen zu einem Paket an. Dafür wird der Paketname und nicht zwingend eine DEB-Datei verwendet:
dpkg -p beispielprogramm
Je nach Datenbankstand und Distribution findest du dort unter anderem:
- Paketname und Version
- Architektur, beispielsweise
amd64oderall - Maintainer, also die für das Paket verantwortliche Pflegeinstanz
- Beschreibung
- Abhängigkeiten und gegebenenfalls empfohlene oder vorgeschlagene Pakete
Wenn du gezielt den Status eines installierten Pakets untersuchen möchtest, ist zusätzlich dpkg -s paketname beziehungsweise dpkg --status paketname nützlich. Liefert dpkg -p keine brauchbaren Angaben, prüfe zuerst den exakten Namen mit dpkg -l. Die Informationen können außerdem fehlen, wenn sie nicht in der lokalen Paketdatenbank vorhanden sind.
Abhängigkeiten reparieren und APT verwenden
Eine Abhängigkeit ist ein Paket, das ein anderes Paket benötigt. Bei einer lokalen Installation mit dpkg wird die angegebene DEB-Datei verarbeitet, aber fehlende Zusatzpakete werden nicht automatisch aus den Paketquellen installiert.
Eine typische Fehlermeldung weist auf unmet dependencies, also nicht erfüllte Abhängigkeiten, hin. Lies zunächst die gesamte Ausgabe und prüfe, welche Pakete oder Versionen fehlen. Danach kann APT den unvollständigen Zustand reparieren:
sudo apt-get -f install
Die modernere alternative Schreibweise lautet:
sudo apt --fix-broken install
APT verwendet dabei die eingerichteten Paketquellen. Stelle daher sicher, dass eine Netzwerkverbindung besteht und die Paketquellen korrekt konfiguriert sind. Bestätige keine Änderungen, ohne die von APT angezeigte Paketliste zu prüfen.
Sichere Vorgehensweise
- Installiere DEB-Dateien nur aus vertrauenswürdigen Quellen. Ein DEB-Paket kann neben Programmdateien auch Maintainer-Skripte enthalten, die während der Installation ausgeführt werden.
- Prüfe vor einer Entfernung den Paketnamen und die installierte Version, zum Beispiel mit
dpkg -l '*beispiel*'oderdpkg -p beispielprogramm. - Unterscheide sorgfältig zwischen einem Dateipfad wie
./paket.debund einem Paketnamen wiepaket. - Lies Fehlermeldungen vollständig, bevor du Reparaturbefehle ausführst. Ein erzwungenes oder unüberlegtes Entfernen kann weitere Pakete beeinflussen.
- Prüfe nach einer Installation oder Reparatur den Paketstatus erneut mit
dpkg -l.
Typische Fehler und Lösungen
Fehlende Abhängigkeiten nach dpkg -i
Ursache: dpkg löst Abhängigkeiten nicht selbstständig auf.
Lösung: Prüfe die Ausgabe und führe anschließend sudo apt-get -f install oder sudo apt --fix-broken install aus. Achte auf eine funktionierende Verbindung und passende Paketquellen.
Eine DEB-Datei wird beim Entfernen verwendet
Ursache: Die Optionen -r und -P erwarten den Namen eines installierten Pakets, nicht den Pfad zur Paketdatei.
Lösung: Ermittle den Namen mit dpkg -l und verwende dann beispielsweise sudo dpkg -r beispielprogramm.
Konfiguration bleibt nach dem Entfernen erhalten
Ursache: Das ist das erwartete Verhalten von dpkg -r.
Lösung: Wenn auch systemweite Paketkonfiguration entfernt werden soll, verwende sudo dpkg -P beispielprogramm.
Fehlende Administratorrechte
Ursache: Die Paketdatenbank und Systemverzeichnisse dürfen nur mit ausreichenden Rechten geändert werden.
Lösung: Führe den Befehl mit sudo aus und stelle sicher, dass dein Benutzerkonto administrative Rechte besitzt.
Prüfungsrelevante Zusammenfassung
dpkg -i datei.debinstalliert eine lokale DEB-Datei; der Pfad zur Datei ist erforderlich.- Die Installation einer neueren Version desselben Pakets kann als Aktualisierung dienen.
dpkg -r paketnameentfernt das Paket, lässt systemweite Konfiguration grundsätzlich zurück.dpkg -P paketnameentfernt das Paket einschließlich seiner systemweiten Paketkonfiguration.dpkg -llistet Pakete und Statusinformationen auf; auch Pakete mit zurückgebliebenen Konfigurationsdateien können erscheinen.dpkg -p paketnamezeigt gespeicherte Paketmetadaten wie Version, Architektur, Maintainer und Abhängigkeiten.- dpkg löst Abhängigkeiten nicht automatisch auf. Nach einer problematischen lokalen Installation hilft häufig
sudo apt-get -f installodersudo apt --fix-broken install.
Weitere Inhalte zur direkten Paketverwaltung findest du unter Paketverwaltung mit dpkg.