Wie installiere ich eine Deb-Datei, von dpkg -i oder von apt?

601

Ich habe ein Deb-Paket zur Installation.

Soll ich per dpkg -i my.deboder per apt installieren ?

Werden beide das Software-Abhängigkeitsproblem gut bewältigen?

Wenn von Apt, wie kann ich von der Deb von Apt installieren?

Tim
quelle
Sie könnten auch verwenden aptitude, um unnötige Pakete zu entfernen.
Ramesh
2
Ich empfehle nicht direkt zu verwenden dpkg. Wenn Sie nur eine Deb verwenden, wählen Sie gdebi und bei mehreren Debs das lokale APT-Repository .
Pandya
5
warum ......... @ Pandya
Tim
2
@Tim, da dpkgAbhängigkeiten nicht aufgelöst werden.
Pandya
1
@Tim gdebi erkennt fehlende Abhängigkeiten, kann herunterladen und installieren (mit apt), kann installieren und konfigurieren (mit dpkg).
Pandya

Antworten:

771

Wenn Sie aptein Paket installieren, verwenden Sie es unter der Haube dpkg. Wenn Sie ein Paket mit apt installieren, erstellt es zuerst eine Liste aller Abhängigkeiten und lädt sie aus dem Repository herunter.

Sobald der Download abgeschlossen ist dpkg, werden alle diese Dateien installiert, wobei alle Abhängigkeiten erfüllt werden.

Also, wenn Sie eine .debDatei haben:

  • Sie können es installieren mit:

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • Sie können es mit sudo apt install ./name.deb(oder sudo apt install /path/to/package/name.deb) installieren .

    Bei alten apt-getVersionen müssen Sie zuerst Ihre deb-Datei in ein /var/cache/apt/archives/Verzeichnis verschieben. In beiden Fällen werden die Abhängigkeiten nach Ausführung dieses Befehls automatisch heruntergeladen.

  • Installieren gdebiund öffnen Sie Ihre .deb-Datei damit ( Rechtsklick -> Öffnen mit ). Es wird Ihr .deb-Paket mit all seinen Abhängigkeiten installieren.

    ( Hinweis : APT verwaltet den Paketindex, bei dem es sich um eine Datenbank mit verfügbaren Paketen handelt, die in einem in der /etc/apt/sources.listDatei und im /etc/apt/sources.list.dVerzeichnis definierten Repository verfügbar sind . Alle diese Methoden erfüllen die Softwareabhängigkeit nicht, wenn die für deb erforderlichen Abhängigkeiten nicht im Paketindex vorhanden sind .)


Warum sudo apt-get install -fnachher verwendensudo dpkg -i /path/to/deb/file (in der ersten Methode erwähnt)?

Von man apt-get:

 -f, --fix-broken
           Fix; attempt to correct a system with broken dependencies in place.

Wenn dpkgein Paket installiert wird und eine Paketabhängigkeit nicht erfüllt ist, bleibt das Paket in einem "nicht konfigurierten" Zustand und das Paket wird als beschädigt betrachtet.

sudo apt-get install -f Befehl versucht, dieses fehlerhafte Paket durch Installieren der fehlenden Abhängigkeit zu beheben.

g_p
quelle
2
@Tim, apt-get wurde entwickelt, um Pakete aus dem Repository zu installieren. Es verwaltet die Paketliste sowie deren jeweilige Repository-Adresse. Das Verschieben einer .dev-Datei im Verzeichnis / var / cache / apt / archives, die nicht in der apt-Paketliste enthalten ist, ist daher nicht möglich. Denn wann immer Sie versuchen, dieses Paket mit apt-get zu installieren, sucht es nach seinem Repository, das nicht vorhanden ist. Dazu muss ein lokales Repository erstellt werden, das meiner Meinung nach unbrauchbar ist.
g_p
1
@g_p danke! Ich bin ein wenig verwirrt in Ihrer Antwort oben. Sie schreiben: "(es wird funktionieren, wenn das .deb-Paket in der apt-Paketliste vorhanden ist)" - Ich verstehe nicht, was hier gemeint ist. Wie kann man sicherstellen, dass das .deb-Paket in der apt-Paketliste enthalten ist?
BKSpurgeon
1
@ BKSpurgeon, ich habe in meiner Antwort Bit-Informationen hinzugefügt. Um herauszufinden, ob ein Paket im Index vorhanden ist oder nicht, führen Sie es aus apt-cache search <package name>. Sie können auch verwenden apt-cache policy <package name>, um zusätzliche Informationen zu erhalten.
g_p
1
Werden diese Methoden weiterhin die Signaturprüfung durchführen, die normalerweise von apt durchgeführt wird? Oder kann auf diese Weise eine manipulierte .deb-Datei installiert werden?
Boann
8
Modernes apt-get kann verwendet werden, um ein Paket einfach mit zu installieren apt-get install /path/to/package/name.deb. Es wäre ordentlich, wenn der Autor dieser Antwort beschließen würde, dies zu integrieren. Wenn nicht, werde ich diese Antwort irgendwann hinzufügen, wenn ich genug Repräsentanten hier habe
Sam Hartman
91

Installieren Sie Ihre foo.debDatei mit dpkg -i foo.deb. Wenn es einige Fehler mit ungelösten Abhängigkeiten gibt, führen Sie sie apt-get install -fanschließend aus.

ihor_dvoretskyi
quelle
Ich habe Unable to locate packagees auf diese Weise versucht und war verwirrt. Ich habe wie in Windows nur den Namen des Pakets nach dem Wechsel in den Archivordner verwendet. Sollte ./<file name>für Unix sein, wenn im aktuellen Ordner oder vollständigen Pfad. Das heißt, wenn debnicht in Ordner vorhanden ist PATH.
Alexei Martianov
60

Hier ist der beste Weg, um eine .debDatei auf Ubuntu über die Kommandozeile zu installieren :

sudo gdebi skype.deb

Wenn Sie es noch nicht gdebiinstalliert haben , installieren Sie es mit sudo apt install gdebi-core.

Warum gdebi?

gdebisucht nach allen Abhängigkeiten der .debDatei und installiert sie, bevor versucht wird, die .debDatei zu installieren . Ich finde das viel besser als sudo dpkg -i skype.deb && sudo apt install -f. Letzteres ist viel zu bemüht, Abhängigkeiten in bestimmten Situationen zu beseitigen. Als ich zum Beispiel versuchte, Skype zu installieren, versuchte es, 96 (!) Pakete zu entfernen, einschließlich Pakete wie compizund unity! gdebigab eine viel klarere Fehlermeldung:

 $ sudo gdebi skype.deb
 Cannot install 'libqtgui:i386'

(Hier ist übrigens die Lösung für dieses spezielle Problem .)

Flimm
quelle
hat super funktioniert, danke! Könnte es übrigens sein, dass sich der Versuch zu entfernen auf diese vorübergehenden Pakete bezog? oder denkst du es würde das system wirklich kaputt machen?
Aquarius Power
Alter, ich bin auf ein Problem mit deiner Lösung gestoßen. Ich habe versucht, Rstudio zu installieren. Es wurde automatisch eine alte Version von R für mich gefunden. Während ich die Lösung von @g_p verwendete, konnte ich nur Rstudio installieren.
Dr_Hope
39

Sie können ein lokales .deb-Paket folgendermaßen installieren:

sudo apt install ./foo.deb

Stellen Sie sicher, dass Sie einen lokalen relativen oder absoluten Pfad angeben ( ./falls in der aktuellen Richtung), andernfalls wird foo.debin den Remote-Repos nach diesem gesucht und ein Fehler verursacht.

weises Glück
quelle
2
Dies sollte als die richtige Antwort markiert werden.
Rael Gugelmin Cunha
@RaelGugelminCunha nicht 100% korrekt. sudo apt install libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt: Fehler beim Laden der gemeinsam genutzten Bibliotheken: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: ungültiger ELF-Header
mvladk
2
@mvladk Bitte achten Sie auf die Syntax: Sie vermissen die ./vor der debDatei.
Rael Gugelmin Cunha
Absolut die beste / einfachste Antwort.
Gerardw
15

Überprüfen Sie die Abhängigkeiten mit dpkg -I my.debund apt-get installdie Abhängigkeiten vorher dpkg -i my.deb.

Sein kann , können Sie die Kopie my.debin /var/cache/apt/archivesund installieren Sie sie mit , apt-getaber ich habe nie versucht. Funktioniert nicht apt-getund dpkgsucht nach Paketen, die in Archiven aufgelistet sind.

Alex
quelle
Vielen Dank. Meinen Sie in Ihrem ersten Satz apt-get install my.debmit apt-get install? Ist es von der Deb-Datei zu installieren? Warum brauchen wir dpkg -i my.debdanach?
Tim
Ich habe immer lokale .debs mit installiert dpkg -i. Ich verstehe, dass aptes keine Möglichkeit gibt, sie zu installieren, abgesehen von dem Verzeichnis, in /var/cache/...das heruntergeladen wird (ich kann mich irren)
Alex
Es sieht so aus, apt-get install ./my.debals würde das etwas bewirken, weil es eine Menge Dinge ausgibt. Was tut es?
Tim
Es macht zu viel :-) funktioniert nicht, siehe @Igor_Dvoretskyi Antwort ist einfach perfekt, ich habe es vergessen-f
Alex
5

Die einfachste Antwort wäre, dpkg durch Ausführen zu verwenden dpkg -i packagename.deb. Sie können es dann deinstallieren, indem Sie ausführen dpkg -r packagename.deb.
apt-getist ein höherstufiges Installationsprogramm, das auf dpkg basiert, und als solches könnten Sie apt-get install packagename.deb.
Es ist hilfreich, es in Ihr apt-get archives-Verzeichnis ( /var/cache/apt/archives) aufzunehmen, damit Sie es als Paket mit Abhängigkeiten und nicht als eigenständiges .deb-Archiv referenzieren können.
Durch Hinzufügen zu Ihrem apt-get-Archivverzeichnis haben Sie außerdem die Möglichkeit, Abhängigkeiten mit zu verwenden apt-get install packagename. Auf diese Weise können Sie es mit manuell hinzugefügten Abhängigkeiten anstelle des eigenständigen archivbasierten Systems von dpkg installieren.

Interessant...
quelle
5

Mit modernem apt-get kann ein Paket einfach mit installiert werden apt-get install /path/to/package/name.deb.

(sollte als Änderung an der obersten Antwort erfolgen, wurde aber abgelehnt - siehe https://unix.stackexchange.com/posts/159114/edit )

Mateusz Konieczny
quelle
Dies hat nicht funktioniert mitapt 1.0.9.8.4 for amd64 compiled on Dec 11 2016 09:48:19
Bruno Bronosky
-3

Es ist sehr einfach, wenn ich Chrome installieren möchte.

Installieren Sie Ihre Chrome-Datei als:

dpkg -i googlechrome.deb.

Manchmal besteht die Möglichkeit, dass Abhängigkeitsfehler wie die folgenden auftreten:

dpkg: dependency problems prevent configuration of google-chrome-stable:
google-chrome-stable depends on libappindicator1; however:
Package libappindicator1 is not installed.

Um die oben genannten Probleme zu beheben, müssen Sie Abhängigkeiten hinzufügen. gib den folgenden Befehl ein:

apt-get install -f

Nachdem Sie den obigen Befehl eingegeben haben, werden Abhängigkeiten zu Ihrem Computer hinzugefügt und Ihre Debian-Paketdatei ( .deb) wird installiert.

Pavan vadrevu
quelle