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.

MerkmaldpkgAPT
Verarbeitung lokaler DEB-DateienDirekte Installation und Verwaltung einer angegebenen DateiKann lokale Pakete ebenfalls über höhere Befehle verarbeiten, ist aber vor allem für Paketquellen gedacht
Installation aus PaketquellenNicht die HauptaufgabeJa, über konfigurierte Repositories
Automatische AbhängigkeitsauflösungNeinJa
Typischer EinsatzzweckLokale Paketdateien und direkte Kontrolle über den PaketstatusRegulä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 -i gibst du eine lokale Paketdatei an, zum Beispiel ./beispielprogramm_1.0_amd64.deb oder einen absoluten Pfad wie /home/user/Downloads/beispielprogramm_1.0_amd64.deb.
  • Bei -r und -P gibst du den Namen eines installierten Pakets an, nicht den Pfad zu einer DEB-Datei.
  • Bei -p verwendest 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.

OptionLangformZweckErwartetes ArgumentAuswirkung auf Konfigurationsdateien
-i--installLokale DEB-Datei installieren oder eine Version ersetzenPfad zu einer .deb-DateiInstalliert oder aktualisiert die vom Paket verwalteten Dateien
-r--removeInstalliertes Paket entfernenPaketnameSystemweite Konfiguration bleibt grundsätzlich erhalten
-P--purgePaket vollständig bereinigenPaketnameSystemweite Paketkonfiguration wird ebenfalls entfernt
-l--listBekannte Pakete und ihren Status auflistenOptional ein Paketname oder MusterKeine Änderung
-p--print-availGespeicherte verfügbare Paketinformationen anzeigenPaketnameKeine Ä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 amd64 oder all
  • 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

  1. 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.
  2. Prüfe vor einer Entfernung den Paketnamen und die installierte Version, zum Beispiel mit dpkg -l '*beispiel*' oder dpkg -p beispielprogramm.
  3. Unterscheide sorgfältig zwischen einem Dateipfad wie ./paket.deb und einem Paketnamen wie paket.
  4. Lies Fehlermeldungen vollständig, bevor du Reparaturbefehle ausführst. Ein erzwungenes oder unüberlegtes Entfernen kann weitere Pakete beeinflussen.
  5. 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.deb installiert eine lokale DEB-Datei; der Pfad zur Datei ist erforderlich.
  • Die Installation einer neueren Version desselben Pakets kann als Aktualisierung dienen.
  • dpkg -r paketname entfernt das Paket, lässt systemweite Konfiguration grundsätzlich zurück.
  • dpkg -P paketname entfernt das Paket einschließlich seiner systemweiten Paketkonfiguration.
  • dpkg -l listet Pakete und Statusinformationen auf; auch Pakete mit zurückgebliebenen Konfigurationsdateien können erscheinen.
  • dpkg -p paketname zeigt 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 install oder sudo apt --fix-broken install.

Weitere Inhalte zur direkten Paketverwaltung findest du unter Paketverwaltung mit dpkg.