Frage Wie kann `dpkg -i` Abhängigkeiten für mich installieren?


Sag, ich habe foo-1.2.3.deb was davon abhängt perl und pythonlaufender Befehl:

dpkg -i ./foo-1.2.3.deb

wird diese Abhängigkeiten nicht installieren. Also muss ich apt-get install perl python von Hand.

Wie man ... macht dpkg -i Installieren Sie diese Abhängigkeiten für mich automatisch?


260
2018-05-04 13:11


Ursprung


Mögliches Duplikat von Wie werden fehlende Abhängigkeiten beim Installieren von Software von .deb automatisch abgerufen? - pd12
@ pd12: Hurra für Zirkelverweise! :-D - David Foerster
heh, ich entschied mich beide zu verlinken und zu sehen, welche die Mods auswählen würden. - pd12
Es ist erstaunlich, dass im Jahr 2016, a Die .deb-Grafikinstallation schlägt immer noch fehl, ohne dem Benutzer etwas über fehlende Abhängigkeiten zu sagen. - Dan Dascalescu


Antworten:


Nach dem Gebrauch dpkgDas Ausführen des folgenden Befehls hat mir geholfen, die erforderlichen Abhängigkeiten zu installieren:

sudo apt-get -f install

Insgesamt sollte Ihr Terminal wie folgt aussehen:

$ sudo dpkg -i package_with_unsatisfied_dependencies.deb
dpkg: dependency problems prevent ... 
[additional messages]

$ sudo apt-get -f install
[apt messages]
Setting up [dependency]...
Setting up package_with_unsatisfied_dependencies...

Beachten die Linie über Setting up package_with_unsatisfied_dependencies. Dies behebt (und schließt) die Installation von package_with_unsatisfied_dependencies.deb.


348
2018-05-04 15:38



Sollte ich laufen sudo dpkg -i mypackage.deb nochmal ? - Muhammad Gelbana
Nach dem Rennen sudo apt-get -f install Mein Paket und seine Abhängigkeiten wurden alle installiert. Laufen sudo dpkg -i my_package.deb ist unnötig und wird nur das Paket erneut installieren. - Gus E
Folgende Arbeiten an Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. Der Erste dpkg -i Run Mark Abhängigkeiten, apt-get -f install installiert erforderliche Abhängigkeiten und die zweite dpkg -iinstalliert das Paket erfolgreich. Beachten Sie, dass apt-get install -f ist ein völlig anderer Befehl. - Mikko Rantalainen
@ysth nein, tu es nicht dpkg -i --force; Das wird ein kaputtes Paket erzwingen! Laufen dpkg /ohne/ --force wird den notwendigen Eintrag in der Paketdatenbank machen, so dass apt-get -f install wird das Richtige tun. - Brian A. Henning
@Lotharyx: Ich kann es jetzt nicht versuchen, aber ich dachte nicht, dass der dpkg ohne Zwang (der aufgrund fehlender Abhängigkeiten fehlschlägt) einen Eintrag in der Paketdatenbank machen würde - ysth


Sie können installieren gdebi-coreDies ist die Befehlszeilenversion des GDebi-Paketinstallationsprogramms von 10.04 und früher. In den neueren Versionen von Ubuntu wird das Software Center verwendet, um Debs zu installieren, die nicht über eine Befehlszeile verfügen.

Um ein Deb-Paket mit gdebi zu installieren, führen Sie einfach Folgendes aus:

sudo gdebi my_package_1.0.deb

108
2018-05-04 14:47





Gdebi

gdebi installiert ein Deb-Paket und seine Abhängigkeiten. Um es zu benutzen, laufe:

sudo gdebi package.deb

In neueren Versionen von Ubuntu wird dies nicht standardmäßig installiert, daher müssen Sie es aus den Repositories installieren.

Sehen man gdebi für eine vollständige Liste der Optionen.

gdebi ist die Befehlszeile, die dem gleichnamigen grafischen Werkzeug entspricht, das standardmäßig in Ubuntu enthalten war. Der Befehl für das grafische Werkzeug ist gdebi-gtk und hat ähnliche Funktionen:

gdebi-gtk


35
2018-05-04 16:56



gdebi-gtk zeigt keine benötigten Deps (die Version, die ich hier habe, und es sieht aus wie ein Bug), aber die Kommandozeile wird es! Wenn wir eine andere Maschine mit den Paketen haben, die wir verwenden können dpkg-repack darauf basierend auf solchen Deps-Liste :) - Aquarius Power


beginnend mit apt 1.1 (verfügbar in Xenial (16.04), stretch) apt install erlaubt auch lokale Dateien:

sudo apt install ./foo-1.2.3.deb

So viel einfacher und sauberer.

Siehe die Release-Mitteilung


27
2017-07-05 09:23



Es ist an der Zeit, dass dies verfügbar ist - Mike
Diese Lösung hat nicht funktioniert. Alles was passiert ist, war eine Fehlerliste. - Billy S
@BillyS tut mir leid zu hören, dass es für Sie nicht funktioniert hat, aber ohne die Distro-Version, die Sie verwenden, und welche Fehler Sie haben, ist dies überhaupt nicht umsetzbar. - textshell
Der Befehl hat bei mir nicht funktioniert apt ./install foo-1.2.3.deb hat funktioniert. - Cenk Alti
Korrigiert den Befehl, Kommentare oben auf die vorherige Version der Antwort verwiesen, die das notwendige verpasst ./ oder Pfad - Zanna


Laufen

sudo apt-get install -f

nach der Installation von Paket mit dpkg kann gebrochene Abhängigkeiten lösen (zumindest Mann apt-get sagen so ...). Ich werde aktualisieren, wenn ich es überprüfen werde.


18
2018-05-04 13:17



Sollte ich laufen sudo dpkg -i mypackage.deb nochmal ? - Muhammad Gelbana
apt-get -f install funktioniert, aber apt-get install -f ist nicht das Gleiche. - 200_success


dpkg hat keine Abhängigkeitsunterstützung. Es gibt einen Weg darum, aber das würde erfordern, dass Sie eine lokale Datenbank erstellen (und somit würden Sie bereits die Abhängigkeiten kennen) und es wird als veraltet betrachtet (...).

Muss es eine Befehlszeile sein? (Serverinstallation?) Wenn ja, schau dir das an apt-get -f Aber Vorsicht: Wenn Abhängigkeiten nach der Installation gelöst werden, könnte dies zu einem Systemabsturz führen.

gdebi (gui frontend) war früher in der Lage dies zu tun, wurde aber durch USC ersetzt.

Wie hast du das .deb heruntergeladen? Einige der neuen 11.04-Features sind die Handhabung von .deb, die von einer Website heruntergeladen werden: Es wird in USC geöffnet, so dass Abhängigkeiten vom Installer gelöst werden.

BEARBEITEN basierend auf Kommentar von Andrew: sudo gdebi foo-1.2.3.deb  würde den Trick machen !!


9
2018-05-04 13:32



Gdebi kann immer noch dafür verwendet werden. Software Center ist jetzt nur die Standardanwendung. Wie Chen Xiao-Long bemerkt, kann gdebi auch in der Befehlszeile verwendet werden. - andrewsomething
cool! dann hat die Frage eine Antwort, weil gdebi auch auf der Kommandozeile verwendet werden kann. - Rinzwind
Dies sollte die akzeptierte Antwort sein. - prosti


Als Alternative zu gdebi-gtk Sie können Ubuntu Software Center verwenden.

Doppelklicken Sie auf das Paket und eine Schaltfläche zum Installieren sollte verfügbar sein.


3
2018-05-10 07:55





Sie könnten eine Datei erstellen dpkg-dep-inst mit folgendem Inhalt.

#!/bin/bash

DEBIAN_FILE1=$1
dpkg -i $DEBIAN_FILE1 || apt-get --fix-broken install

Ich nehme an, Sie haben die Datei in Ihrem Home-Ordner erstellt. Mach es ausführbar mit chmod +x dpkg-dep-inst und verschiebe es nach /usr/local/bin mit sudo cp dpkg-dep-inst /usr/local/bin.

Jetzt können Sie das Debian-Paket mit Abhängigkeiten automatisch installieren mit:

sudo dpkg-dep-inst foo-1.2.3.deb

3
2018-01-28 16:01



Benutzen apt-get --yes --fix-broken install und machen die Fixierung automatisch. - Lucas
@ysth Nein, nicht allgemein. - BuZZ-dEE


Ich bin gerade auf dieses Problem gestoßen. Berufung apt-get install -f werden nicht Installieren empfohlenAbhängigkeiten, obwohl! Die einzige Problemumgehung dafür wäre dann, ein lokales Repository zu erstellen und hinzuzufügen /etc/apt/sources.list, d.h.

apt-ftparchive packages . > Packages && gzip < Packages > Packages.gz
sudo echo "deb file://$PWD /" >> /etc/apt/sources.list
sudo apt-get update

1
2018-02-10 15:19





Eigentlich ist die Antwort das dpkg Paketmanager kann Abhängigkeiten nicht sofort installieren. Du hast eine Kamera man dpkg und das herausgefunden. Also müssen Sie Tools wie verwenden apt, apt-get, aptitude, ..., beyogen auf dpkg.

Ich würde sagen, genau der gleiche Fall ist für die rpm Paketmanager auf der anderen Linux-Hemisphäre. rmp ist nicht für abhängigkeitsbasierte Installationen gedacht. Es kann einzelne Pakete installieren und die von Ihnen verwendeten Abhängigkeiten installieren yum, urpmi, up2date Diese basieren alle auf RPM.

Wie bereits erwähnt, besteht eine geringe Gefahr, dass Pakete mit installiert werden dpkg direkt, weil die Auflösung der Auflösung späterer Auflösung zu einem Systemausfall führen kann, wie @Rinzwind es skizziert hat.


0
2017-08-16 19:05