# dpkg — Das Debian-Paketwerkzeug auf unterster Ebene

> Praxis-Guide zu dpkg: lokale .deb-Pakete installieren, Paketstatus und Inhalt abfragen und Installationen reparieren — die Basis unter apt.

Source: https://www.jpkc.com/db/cheatsheets/package-managers/dpkg/

<!-- PROSE:intro -->
dpkg ist das Low-Level-Paketwerkzeug von Debian und damit die Basis, auf der `apt` und `apt-get` aufsetzen. Du installierst damit lokale `.deb`-Dateien direkt, fragst den Status installierter Pakete ab, listest deren Inhalt auf oder findest heraus, welches Paket zu einer bestimmten Datei gehört. Anders als `apt` löst dpkg jedoch **keine** Abhängigkeiten auf – es verarbeitet genau die Pakete, die du ihm übergibst. Dieser Guide zeigt dir die wichtigsten dpkg-Befehle für Installation, Abfrage und Reparatur.
<!-- PROSE:intro:end -->

## Installieren & Entfernen

`dpkg -i <file>.deb` — Installiert ein .deb-Paket.

```bash
sudo dpkg -i package.deb
```

`dpkg -r <package>` — Entfernt ein Paket (Konfigurationsdateien bleiben erhalten).

```bash
sudo dpkg -r nginx
```

`dpkg -P <package>` — Entfernt ein Paket vollständig (inklusive Konfigurationsdateien).

```bash
sudo dpkg -P nginx
```

`dpkg --configure -a` — Konfiguriert alle entpackten, aber noch nicht konfigurierten Pakete.

```bash
sudo dpkg --configure -a
```

`dpkg --force-depends -i <file>.deb` — Erzwingt die Installation und ignoriert Abhängigkeitsfehler.

```bash
sudo dpkg --force-depends -i package.deb
```

## Installierte Pakete abfragen

`dpkg -l` — Listet alle installierten Pakete auf.

```bash
dpkg -l
```

`dpkg -l '<pattern>'` — Listet Pakete auf, die einem Muster entsprechen.

```bash
dpkg -l 'php*'
```

`dpkg -s <package>` — Zeigt detaillierten Status und Infos zu einem Paket.

```bash
dpkg -s nginx
```

`dpkg -L <package>` — Listet alle von einem Paket installierten Dateien auf.

```bash
dpkg -L nginx
```

`dpkg -S <file>` — Findet heraus, welches Paket eine Datei enthält.

```bash
dpkg -S /usr/sbin/nginx
```

`dpkg -S '<pattern>'` — Sucht Pakete anhand eines Dateipfad-Musters.

```bash
dpkg -S '*/bin/python*'
```

## .deb-Dateien abfragen

`dpkg -I <file>.deb` — Zeigt Infos zu einer .deb-Datei (vor der Installation).

```bash
dpkg -I package.deb
```

`dpkg -c <file>.deb` — Listet die Dateien innerhalb einer .deb-Datei auf.

```bash
dpkg -c package.deb
```

`dpkg -x <file>.deb <dir>` — Entpackt die Dateien einer .deb-Datei in ein Verzeichnis.

```bash
dpkg -x package.deb /tmp/extract/
```

`dpkg -e <file>.deb <dir>` — Extrahiert die Steuerinformationen (control) aus einer .deb-Datei.

```bash
dpkg -e package.deb /tmp/control/
```

## Neu konfigurieren & Reparieren

`dpkg-reconfigure <package>` — Konfiguriert ein installiertes Paket neu (Setup erneut ausführen).

```bash
sudo dpkg-reconfigure tzdata
```

`dpkg-reconfigure -plow <package>` — Konfiguriert neu und zeigt alle Fragen (auch mit niedriger Priorität).

```bash
sudo dpkg-reconfigure -plow locales
```

`dpkg --configure -a` — Repariert teilweise installierte Pakete.

```bash
sudo dpkg --configure -a
```

`apt-get install -f` — Behebt defekte Abhängigkeiten nach einer dpkg-Installation.

```bash
sudo apt-get install -f
```

## Häufige Muster

`dpkg -l | grep '^ii'` — Listet nur korrekt installierte Pakete auf.

```bash
dpkg -l | grep '^ii'
```

`dpkg -l | grep '^rc'` — Listet entfernte Pakete mit übrig gebliebenen Konfigurationsdateien auf.

```bash
dpkg -l | grep '^rc' | awk '{print $2}' | xargs sudo dpkg -P
```

`dpkg --get-selections` — Exportiert den Paket-Auswahlstatus (zum Klonen).

```bash
dpkg --get-selections > packages.txt
```

`dpkg --set-selections < packages.txt` — Importiert Paket-Auswahlen (danach apt-get dselect-upgrade ausführen).

```bash
sudo dpkg --set-selections < packages.txt && sudo apt-get dselect-upgrade
```

`dpkg --compare-versions <v1> <op> <v2>` — Vergleicht Paket-Versionsnummern.

```bash
dpkg --compare-versions 2.0 gt 1.5 && echo 'newer'
```

<!-- PROSE:outro -->
## Fazit

dpkg ist das Fundament der Debian-Paketverwaltung: präzise, schnell und unverzichtbar, wenn du eine einzelne `.deb`-Datei installieren oder genau wissen willst, welches Paket eine bestimmte Datei mitbringt. Der entscheidende Haken: dpkg löst keine Abhängigkeiten auf – ein `dpkg -i` kann dein System in einen inkonsistenten Zustand bringen, den du anschließend mit `sudo apt-get -f install` reparierst. Die Optionen `-r`, `-P` und `--purge` entfernen Pakete (bei `-P`/`--purge` samt Konfiguration) ohne Rückfrage, prüfe also den Paketnamen genau. Für den Alltag – Pakete aus Repositories installieren und aktualisieren – greifst du besser zu `apt`; dpkg ist das Werkzeug für lokale Dateien, Abfragen und Notfall-Reparaturen.

## Weiterführende Links

- [dpkg(1) – Debian-Manpage](https://manpages.debian.org/dpkg) – offizielle Referenz aller Optionen und Aktionen (englisch)
- [dpkg – Debian-Wiki](https://wiki.debian.org/dpkg) – Hintergrund zu dpkg im Debian-Paketsystem (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [apk](https://www.jpkc.com/db/cheatsheets/package-managers/apk/) – Paketmanager von Alpine Linux
- [apt](https://www.jpkc.com/db/cheatsheets/package-managers/apt/) – komfortables High-Level-Frontend der Debian-Paketverwaltung
- [apt-get](https://www.jpkc.com/db/cheatsheets/package-managers/apt-get/) – klassisches, skriptfreundliches APT-Werkzeug

