Anleitungen

Ubuntu: .deb-Datei installieren mit apt, dpkg und gdebi

Eine deb-Datei unter Ubuntu installieren: sudo apt install ./datei.deb holt alle Abhängigkeiten mit. Dazu dpkg -i, gdebi, Deinstallation und Fehler.

Veröffentlicht ~10 Min. Lesezeit
Auf dieser Seite

Kurz gesagt: Um eine .deb-Datei unter Ubuntu zu installieren, öffne ein Terminal in dem Ordner, in dem die Datei liegt, und führe sudo apt install ./name.deb aus. apt installiert das Paket und holt jede Abhängigkeit, die es auflistet, aus den Paketquellen von Ubuntu. Das ./ ist wichtig: Ohne Pfad sucht apt in seinen Paketquellen nach einem Paket, das wörtlich name.deb heißt, und bricht mit Unable to locate package ab.

Ubuntu · Debian
cd ~/Downloads
sudo apt install ./mytool_1.4.2_amd64.deb

Die Ausgaben von apt und dpkg auf dieser Seite stammen von einem kleinen Testpaket, gebaut und geprüft unter Debian 12 (dpkg 1.21.23, apt 2.6.1) und in ein Wegwerf-Verzeichnis statt in ein laufendes System installiert. Ubuntu nutzt dieselben beiden Programme, die Befehle sind dort also identisch. Mit deutscher Spracheinstellung erscheinen die Meldungen von apt und dpkg auf Deutsch; LC_ALL=C vor dem Befehl zeigt die englischen Originale, nach denen sich leichter suchen lässt.

Spickzettel

AufgabeBefehl
Installieren, mit Abhängigkeitensudo apt install ./app.deb
Mehrere Dateien auf einmal installierensudo apt install ./*.deb
Vorschau, was passieren würdeapt install -s ./app.deb
Mit dpkg installieren, dann Abhängigkeiten reparierensudo dpkg -i app.deb; sudo apt --fix-broken install
Name, Version und Abhängigkeiten anzeigendpkg -I app.deb
Die enthaltenen Dateien auflistendpkg -c app.deb
Nur den Paketnamen ausgebendpkg-deb -f app.deb Package
Installiert, und in welcher Version?dpkg -s NAME
Dateien, die es installiert hatdpkg -L NAME
Entfernensudo apt remove NAME
Entfernen samt Konfigurationsdateiensudo apt purge NAME
Abhängigkeiten entfernen, die nichts mehr brauchtsudo apt autoremove

sudo apt install ./datei.deb: die Methode der Wahl

Gib apt etwas, das wie ein Pfad aussieht, also einen Schrägstrich enthält, und es behandelt das Argument als Datei statt als Paketnamen: ./app.deb, ~/Downloads/app.deb und /tmp/app.deb funktionieren alle. apt liest die Abhängigkeiten aus der Datei, findet sie in deinen eingerichteten Paketquellen und installiert alles in der richtigen Reihenfolge. Mehrere Dateien auf einmal (sudo apt install ./*.deb) sind der Weg, um ein Programm zu installieren, das ein Hersteller auf mehrere voneinander abhängige Pakete aufteilt.

Erst eine Vorschau mit -s

-s simuliert den ganzen Lauf, ohne etwas zu ändern, und braucht kein sudo. Beim Testpaket, das von jq abhängt:

apt install -s ./mytool_1.4.2_amd64.deb · Debian 12
The following additional packages will be installed:
  jq libjq1
The following NEW packages will be installed:
  jq libjq1 mytool
0 upgraded, 3 newly installed, 0 to remove and 0 not upgraded.
Inst libjq1 (1.6-2.1+deb12u3 Debian-Security:12/oldstable-security [amd64])
Inst jq (1.6-2.1+deb12u3 Debian-Security:12/oldstable-security [amd64])
Inst mytool (1.4.2 local-deb [amd64])
Conf libjq1 (1.6-2.1+deb12u3 Debian-Security:12/oldstable-security [amd64])
Conf jq (1.6-2.1+deb12u3 Debian-Security:12/oldstable-security [amd64])
Conf mytool (1.4.2 local-deb [amd64])

local-deb markiert die Datei, die du angegeben hast; die beiden anderen Pakete kommen aus dem Archiv der Distribution (unter Ubuntu nennen die Zeilen stattdessen das Ubuntu-Release). Der echte Lauf gibt denselben Plan aus, fragt Do you want to continue? [Y/n], wenn er zusätzliche Pakete braucht, und lädt dann herunter und installiert. Ubuntu 26.04 und Debian 13 liefern APT 3 aus, das dieselben Informationen in einem neuen Layout zeigt, unter Überschriften wie Installing: und Installing dependencies:.

Der Hinweis „Download is performed unsandboxed“

Ausgabe von apt
N: Download is performed unsandboxed as root as file '/root/mytool_1.4.2_amd64.deb' couldn't be accessed by user '_apt'. - pkgAcquire::Run (13: Permission denied)

Harmlos. apt liest Dateien normalerweise über einen Benutzer _apt ohne Root-Rechte, der ein privates Verzeichnis wie /root oder einen Home-Ordner mit engen Rechten nicht öffnen kann. Also liest apt die Datei stattdessen als root und macht weiter. Die Installation läuft trotzdem durch. Leg die Datei vor der Installation nach /tmp, und der Hinweis verschwindet.

dpkg -i: der Low-Level-Weg und wie du aufräumst, was er hinterlässt

dpkg ist das Werkzeug unter apt. Es installiert genau die Datei, die du ihm gibst, und lädt nie etwas herunter. Ein Paket mit fehlender Abhängigkeit wird deshalb entpackt, aber nicht eingerichtet:

sudo dpkg -i mytool_1.4.2_amd64.deb · Abhängigkeit fehlt
Selecting previously unselected package mytool.
Preparing to unpack mytool_1.4.2_amd64.deb ...
Unpacking mytool (1.4.2) ...
dpkg: dependency problems prevent configuration of mytool:
 mytool depends on libfoo2 (>= 2.0); however:
  Package libfoo2 is not installed.

dpkg: error processing package mytool (--install):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 mytool

dpkg -l mytool zeigt jetzt den Status iU: entpackt, nicht konfiguriert. apt verweigert jede weitere Installation, bis das geklärt ist, und nennt dir die Lösung selbst:

Ubuntu · Debian
sudo apt --fix-broken install      # dasselbe wie: sudo apt -f install

apt installiert entweder die fehlenden Abhängigkeiten und schließt die Konfiguration ab, oder es bietet an, das halb installierte Paket zu entfernen, wenn es die Abhängigkeiten nirgends findet. Lies die angezeigte Liste, bevor du mit Y antwortest. Wurde dpkg selbst mittendrin unterbrochen (eine abgerissene SSH-Sitzung, ein Neustart), ist der Fehler ein anderer; Hilfe dazu gibt es unter dpkg was interrupted (engl.). Heute ist dpkg -i vor allem sinnvoll, um eine Reihe von Dateien auf einem Rechner ohne Netzwerkzugang zu installieren; überall sonst erledigt apt install ./ dieselbe Arbeit und kümmert sich um die Abhängigkeiten.

gdebi und das App Center

gdebi ist ein kleiner Installer für lokale .deb-Dateien. Wie apt löst er Abhängigkeiten aus deinen Paketquellen auf; anders als dpkg -i prüft er sie, bevor er das System anfasst, und verweigert die Installation gleich, wenn sie sich nicht erfüllen lassen, statt ein halb installiertes Paket zu hinterlassen. Seit apt lokale Dateien installieren kann, ist er vor allem eine Frage der Gewohnheit:

Ubuntu · Debian
sudo apt install gdebi-core
sudo gdebi mytool_1.4.2_amd64.deb

Unter Ubuntu Desktop 24.04 öffnet das App Center seit einem Update im Juli 2024 wieder lokale .deb-Dateien: Öffne die Datei per Rechtsklick mit dem App Center, und es warnt vor der Installation, dass das Paket von einem Drittanbieter stammt. Öffnet ein Doppelklick stattdessen die Archivverwaltung, nimm den Terminal-Befehl oben.

Vor der Installation in eine .deb hineinschauen

Eine .deb ist ein Archiv aus zwei Teilen: Steuerdaten (Name, Version, Abhängigkeiten, Skripte) und die Dateien selbst. dpkg liest beides, ohne etwas zu installieren:

dpkg -I mytool_1.4.2_amd64.deb
 new Debian package, version 2.0.
 size 1132 bytes: control archive=620 bytes.
     320 bytes,    11 lines      control
     114 bytes,     2 lines      md5sums
      81 bytes,     4 lines   *  postinst             #!/bin/sh
 Package: mytool
 Version: 1.4.2
 Architecture: amd64
 Maintainer: Example Vendor <packages@example.com>
 Installed-Size: 12
 Depends: jq (>= 1.6)
 Section: utils
 Priority: optional
 Homepage: https://example.com/mytool
 Description: example command-line tool
  A small example package used to show how dpkg inspects a .deb file.
  • Architecture muss zu deinem System passen, das dpkg --print-architecture ausgibt: amd64 auf x86-64-PCs und -Servern, arm64 auf 64-Bit-ARM. all heißt, das Paket läuft überall.
  • Depends nennt, was apt zusätzlich installiert.
  • postinst (und preinst, prerm, postrm, falls vorhanden) sind Maintainer-Skripte. dpkg führt sie bei Installation und Entfernung als root aus.
dpkg -c mytool_1.4.2_amd64.deb
drwxr-xr-x root/root         0 2026-10-21 12:22 ./
drwxr-xr-x root/root         0 2026-10-21 12:22 ./usr/
drwxr-xr-x root/root         0 2026-10-21 12:22 ./usr/bin/
-rwxr-xr-x root/root        30 2026-10-21 12:22 ./usr/bin/mytool
drwxr-xr-x root/root         0 2026-10-21 12:22 ./usr/share/
drwxr-xr-x root/root         0 2026-10-21 12:22 ./usr/share/doc/
drwxr-xr-x root/root         0 2026-10-21 12:22 ./usr/share/doc/mytool/
-rw-r--r-- root/root         8 2026-10-21 12:22 ./usr/share/doc/mytool/copyright

Um die Skripte zu lesen oder das Programm ohne Installation auszuprobieren, entpacke die Teile:

jedes Debian- oder Ubuntu-System
dpkg-deb -e mytool_1.4.2_amd64.deb control/    # Steuerdatei und Maintainer-Skripte
cat control/postinst
dpkg-deb -x mytool_1.4.2_amd64.deb files/      # die Dateien, ohne etwas zu installieren

Prüfen, woher die Datei stammt

  • Von der Website des Herstellers herunterladen oder von der offiziellen Release-Seite des Projekts, über HTTPS, nicht von einer Mirror-Seite oder aus einem Forenanhang.
  • Die Prüfsumme vergleichen, wenn der Hersteller eine veröffentlicht: sha256sum app.deb gibt den Hash zum Vergleich mit bloßem Auge aus, und mit der Prüfsummendatei des Herstellers daneben antwortet sha256sum -c SHA256SUMS --ignore-missing mit app.deb: OK oder FAILED. Signiert der Hersteller diese Datei auch, prüfe die Signatur mit gpg --verify gegen seinen veröffentlichten Schlüssel.
  • Sicherstellen, dass es überhaupt ein Paket ist. file app.deb sollte Debian binary package melden; ein Download-Link, der einen Browser braucht, kann dir eine HTML-Seite unter einem .deb-Namen hinterlassen.

Warum eine Paketquelle besser ist als eine heruntergeladene .deb

Ein aus einer Datei installiertes Paket hängt an keiner Quelle, apt upgrade aktualisiert es also nie. apt policy macht das sichtbar: Der einzige Ort, aus dem es das Paket kennt, ist die eigene Statusdatei von dpkg.

apt policy mytool
mytool:
  Installed: 1.4.2
  Candidate: 1.4.2
  Version table:
 *** 1.4.2 100
        100 /var/lib/dpkg/status

Prüfe deshalb vor jedem Download, ob Ubuntu das Programm schon als Paket anbietet (apt policy NAME, apt search NAME) und ob der Hersteller eine APT-Paketquelle bereitstellt; mit der Paketquelle bekommst du dasselbe Programm plus seine Updates. Manche Herstellerpakete richten ihre Paketquelle bei der Installation selbst ein (das von Google Chrome tut es), sieh also danach in /etc/apt/sources.list.d/ nach: Ist dort eine neue Datei aufgetaucht, hält das nächste apt upgrade das Programm aktuell. Stimmt der Paketname, aber apt findet das Paket trotzdem nicht, liegt es an den Paketquellen; das klärt Unable to locate package (engl.). Führt eine Paketquelle das Paket ebenfalls und du willst deine von Hand installierte Version behalten, halte sie mit sudo apt-mark hold NAME fest.

Ein aus einer .deb installiertes Paket entfernen

apt und dpkg kennen das Paket unter seinem Namen, nicht unter dem Dateinamen. Lies den Namen aus der Datei aus oder durchsuche die Liste der installierten Pakete:

Ubuntu · Debian
dpkg-deb -f mytool_1.4.2_amd64.deb Package   # gibt den Namen aus: mytool
dpkg -l | grep -i mytool                      # oder unter den installierten Paketen suchen
sudo apt remove mytool                        # Programm entfernen, Konfigurationsdateien behalten
sudo apt purge mytool                         # samt Konfigurationsdateien entfernen
sudo apt autoremove                           # Abhängigkeiten entfernen, die nichts mehr braucht

Die Abhängigkeiten, die apt für das Paket mitgebracht hat (jq und libjq1 im Beispiel), sind als automatisch installiert markiert, deshalb räumt autoremove sie ab, sobald nichts anderes sie mehr braucht. dpkg -L mytool listet jede Datei, die das Paket auf das System gebracht hat, falls du vor dem Entfernen sehen willst, was alles verschwindet.

Fehler beim Installieren einer .deb und die Lösung

E: Unable to locate package app.deb

sudo apt install mytool_1.4.2_amd64.deb
E: Unable to locate package mytool_1.4.2_amd64.deb
E: Couldn't find any package by glob 'mytool_1.4.2_amd64.deb'
E: Couldn't find any package by regex 'mytool_1.4.2_amd64.deb'

Der Pfad fehlt, also hat apt nach einem Paket mit diesem Namen gesucht. Setze ./ davor oder gib den vollen Pfad an.

The following packages have unmet dependencies

sudo apt install ./mytool_1.4.2_amd64.deb
The following packages have unmet dependencies:
 mytool : Depends: libfoo2 (>= 2.0) but it is not installable
E: Unable to correct problems, you have held broken packages.

apt kennt kein Paket, das die Abhängigkeit erfüllt. Meist wurde die Datei für ein anderes Release oder eine andere Distribution gebaut (ein neueres Ubuntu mit neueren Bibliotheken oder Debian statt Ubuntu); lade also den Build für dein Release herunter. Seinen Codenamen liefert . /etc/os-release && echo "$VERSION_CODENAME". Manchmal gibt es die Abhängigkeit, aber sie liegt in einer Komponente der Paketquellen, die du nicht aktiviert hast, etwa universe. Wie du sie einschaltest, zeigt der Abschnitt fehlende Komponente aktivieren (engl.). Die Installation mit --force-depends von dpkg zu erzwingen, verschiebt den Fehler nur auf den Moment, in dem das Programm startet.

dependency problems - leaving unconfigured

Das ist der oben gezeigte Fehler von dpkg -i. Führe sudo apt --fix-broken install aus.

package architecture (arm64) does not match system (amd64)

Ausgabe von dpkg
dpkg: error processing archive mytool_1.4.2_arm64.deb (--install):
 package architecture (arm64) does not match system (amd64)

Du hast den Build für einen anderen Prozessor heruntergeladen. Vergleiche die Zeile Architecture aus dpkg -I mit dpkg --print-architecture und hol dir die passende Datei. Die Ablehnung kommt erst von dpkg, wenn es die Datei entpackt; die Simulation von apt kann die Installation einer arm64-Datei trotzdem anstandslos planen, eine saubere Vorschau ist also kein Beweis.

dpkg-deb: error: 'app.deb' is not a Debian format archive

Die Datei ist kein Paket. Eine als page.deb gespeicherte HTML-Seite erzeugt genau diesen Fehler, und file page.deb antwortet mit HTML document (nachgeprüft unter Debian 12 mit dpkg 1.21.23). Kopiere den direkten Download-Link, lade die Datei mit curl -fLO oder wget neu herunter und vergleiche die Prüfsumme.

Could not get lock, oder dpkg was interrupted

Beides hat nichts mit deiner Datei zu tun. Ein anderer apt-Prozess (oft der automatische Updater) hält die Paketdatenbank, oder ein früherer Lauf ist auf halbem Weg stehen geblieben. Behebe das zuerst mit Could not get lock /var/lib/dpkg/lock-frontend (engl.) und dpkg was interrupted (engl.) und starte die Installation dann erneut.

trying to overwrite '/usr/bin/x', which is also in package y

Zwei Pakete liefern dieselbe Datei aus: oft ein älterer Build desselben Programms, der unter einem anderen Paketnamen installiert wurde, oder ein Herstellerpaket, das mit einem Paket von Ubuntu kollidiert. Entferne zuerst das andere Paket. --force-overwrite gibt es, aber dann beanspruchen zwei Pakete eine Datei, und das nächste Update eines der beiden macht sie wieder kaputt.

Eine .deb auf einem Server installieren

Auf einem VPS gibt es keinen Browser, um auf einen Download-Button zu klicken. Kopiere den direkten Link zur .deb von der Release-Seite des Herstellers und lade sie auf dem Server nach /tmp herunter; dort erscheint auch der Hinweis zu _apt nicht:

Ubuntu- oder Debian-Server
cd /tmp
curl -fLO https://example.com/downloads/mytool_1.4.2_amd64.deb
sha256sum mytool_1.4.2_amd64.deb      # mit dem vom Hersteller veröffentlichten Wert vergleichen
sudo apt install ./mytool_1.4.2_amd64.deb

-f lässt curl bei einem HTTP-Fehler scheitern, statt die Fehlerseite als dein Paket zu speichern, und -L folgt den Weiterleitungen, die die meisten Release-Seiten nutzen. Meldet der Server curl: command not found, musst du zuerst curl installieren (engl.). Die VPS von VMHeaven laufen auf x86-64, der amd64-Build ist also der richtige, und die Befehle sind auf einem Ubuntu-VPS und einem Debian-VPS dieselben.

Häufige Fragen

Wie installiere ich unter Ubuntu eine .deb-Datei im Terminal?

Führe sudo apt install ./datei.deb in dem Ordner aus, in dem die Datei liegt, oder gib ihren vollen Pfad an. apt installiert das Paket und lädt jede Abhängigkeit, die es auflistet, aus den Paketquellen von Ubuntu. Ohne das ./ (oder einen anderen Pfad mit Schrägstrich) sucht apt in seinen Paketquellen nach einem Paket namens datei.deb und scheitert mit Unable to locate package.

Was ist der Unterschied zwischen apt install ./datei.deb und dpkg -i?

dpkg -i installiert nur die Datei, die du angibst, und lädt nie etwas herunter; ein Paket mit fehlenden Abhängigkeiten bleibt deshalb entpackt, aber nicht konfiguriert. apt install ./datei.deb löst diese Abhängigkeiten auf und installiert sie zuerst. Nach einem gescheiterten dpkg -i bringt sudo apt --fix-broken install die Arbeit zu Ende oder bietet an, das Paket zu entfernen.

Wie deinstalliere ich ein Programm, das ich aus einer .deb-Datei installiert habe?

Über den Paketnamen, nicht den Dateinamen: dpkg-deb -f datei.deb Package gibt ihn aus. Dann entfernt sudo apt remove NAME das Programm, sudo apt purge NAME löscht zusätzlich seine Konfigurationsdateien, und sudo apt autoremove räumt die Abhängigkeiten ab, die nur dafür installiert wurden.