Wie kann ich dpkg -i Abhängigkeiten für mich installieren lassen?

324

Sprich, ich habe foo-1.2.3.debwas von perlund pythonlaufendem Befehl abhängt :

dpkg -i ./foo-1.2.3.deb

installiert diese Abhängigkeiten nicht. Also muss ich apt-get install perl pythonvon Hand.

Wie kann ich dpkg -idiese Abhängigkeiten automatisch installieren?

Xiè Jìléi
quelle
5
@ pd12: Hurra für Zirkelverweise! :-D
David Foerster
heh, ich habe mich entschieden, beide zu verlinken und zu sehen, welche die Mods auswählen würden.
pd12

Antworten:

416

Nach dem dpkgAusführen des folgenden Befehls konnte ich die erforderlichen Abhängigkeiten installieren:

sudo apt-get -f install

Insgesamt sollte Ihr Terminal so 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 Sie die Zeile über Setting up package_with_unsatisfied_dependencies. Hiermit wird die Installation von behoben (und abgeschlossen) package_with_unsatisfied_dependencies.deb.

Arindom
quelle
8
Soll ich sudo dpkg -i mypackage.debnochmal rennen ?
Muhammad Gelbana
23
Nach dem Ausführen sudo apt-get -f installmeines Pakets und dessen Abhängigkeiten wurden alle installiert. Das Ausführen sudo dpkg -i my_package.debist nicht erforderlich und installiert das Paket nur erneut.
Gus E
5
Folgende Arbeiten auf Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. Der erste dpkg -iDurchlauf markiert Abhängigkeiten, apt-get -f installinstalliert erforderliche Abhängigkeiten und der zweite Durchlauf dpkg -iinstalliert das Paket erfolgreich. Beachten Sie, dass dies apt-get install -fein völlig anderer Befehl ist.
Mikko Rantalainen
1
@ysth nein, nicht tun dpkg -i --force; das wird ein kaputtes Paket erzwingen! Wenn Sie dpkg/ without / --forceausführen, wird der erforderliche Eintrag in der Paketdatenbank vorgenommen, apt-get -f installdamit das Richtige getan wird.
Brian A. Henning
@Lotharyx: Ich kann es jetzt nicht versuchen, aber ich glaube nicht , das dpkg ohne Kraft (die aufgrund von fehlenden Abhängigkeiten fehlschlägt) würde einen Eintrag in der Paketdatenbank machen
ysth
111

Sie können gdebi-coredie Befehlszeilenversion des GDebi-Paketinstallationsprogramms von 10.04 und früher installieren. In den neueren Versionen von Ubuntu wird das Software Center verwendet, um Debs zu installieren, für die es keine entsprechende Befehlszeile gibt.

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

sudo gdebi my_package_1.0.deb
Andrew Gunnerson
quelle
64

ab apt 1.1 (verfügbar in Xenial (16.04), stretch) apt installerlaubt auch lokale Dateien:

sudo apt install ./foo-1.2.3.deb

So viel einfacher und sauberer.

Siehe Release-Ankündigung

Textshell
quelle
4
Es ist an der Zeit, dass dies verfügbar ist
Mike
Diese Lösung hat nicht funktioniert. Alles, was passiert ist, war eine Liste von Fehlern.
Billy S
@BillyTut mir leid zu hören, dass es bei Ihnen nicht funktioniert hat, aber ohne die von Ihnen verwendete Distributionsversion und welche Fehler Sie haben, ist dies überhaupt nicht umsetzbar.
Textshell
Der Befehl hat bei mir nicht funktioniert, aber apt ./install foo-1.2.3.debfunktioniert.
Cenk Alti
1
Der Befehl wurde korrigiert. Die obigen Kommentare beziehen sich auf die vorherige Version der Antwort, bei der das Notwendige ./oder der Pfad verpasst wurde
Zanna,
38

Gdebi

gdebiinstalliert ein Deb-Paket und seine Abhängigkeiten. So verwenden Sie es:

sudo gdebi package.deb

In neueren Versionen von Ubuntu ist dies nicht standardmäßig installiert, so dass Sie es von den Repositorys installieren müssen.

Siehe man gdebifür eine vollständige Liste der Optionen.

gdebiist die Befehlszeile, die dem gleichnamigen grafischen Werkzeug entspricht, das in Ubuntu standardmäßig enthalten war. Der Befehl für das grafische Werkzeug ist gdebi-gtkund hat eine ähnliche Funktionalität:

gdebi-gtk

dv3500ea
quelle
gdebi-gtk zeigt keine erforderlichen Deps an (die Version, die ich zumindest hier habe, und sie sieht aus wie ein Bug), aber die Befehlszeile wird es tun! Wenn wir eine andere Maschine mit den Paketen haben, können wir dpkg-repacksie basierend auf einer solchen Deps-Liste verwenden :)
Aquarius Power
21

Laufen

sudo apt-get install -f

nach der installation von paketen mit dpkg können kaputte abhängigkeiten behoben werden (zumindest kann man das sagen ...). Ich werde aktualisieren, wenn ich es überprüfen werde.

Denwerko
quelle
Soll ich sudo dpkg -i mypackage.debnochmal rennen ?
Muhammad Gelbana
3
apt-get -f installfunktioniert, ist aber apt-get install -fnicht das gleiche.
200_erfolg
9

dpkg unterstützt keine Abhängigkeiten. Es gibt einen Ausweg, aber dafür müssten Sie eine lokale Datenbank erstellen (und daher kennen Sie die Abhängigkeiten bereits), die als veraltet angesehen wird (...).

Muss es eine Kommandozeile sein? (Server-Installation?) Wenn ja, schauen Sie auch, apt-get -faber seien Sie vorsichtig: Das Lösen von Abhängigkeiten nach der Installation kann dazu führen, dass Sie ein kaputtes System haben.

gdebi (gui frontend) war dazu in der Lage, wurde aber durch USC ersetzt.

Wie haben Sie die .deb heruntergeladen? Einige der neuen Funktionen von 11.04 sind die von einer Website heruntergeladenen .deb-Dateien. Diese werden in USC geöffnet, sodass Abhängigkeiten vom Installationsprogramm behoben werden.

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

Rinzwind
quelle
gdebi kann dafür noch verwendet werden. Das Software Center ist jetzt nur noch die Standard-App. Wie Chen Xiao-Long bemerkt, kann gdebi auch in der Befehlszeile verwendet werden.
Andrewsomething
cool! dann hat die Frage eine Antwort, weil gdebi anscheinend auch auf der Kommandozeile verwendet werden kann.
Rinzwind
Dies sollte die akzeptierte Antwort sein.
Prosti
3

Alternativ gdebi-gtkkönnen Sie Ubuntu Software Center verwenden.

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

Henrique
quelle
3

Sie können eine Datei dpkg-dep-instmit folgendem Inhalt erstellen .

#!/bin/bash

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

Ich gehe davon aus, dass Sie die Datei in Ihrem privaten Ordner erstellt haben. Mach es ausführbar mit chmod +x dpkg-dep-instund verschiebe es nach /usr/local/binmit 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
BuZZ-dEE
quelle
1
Verwenden Sie apt-get --yes --fix-broken installund machen Sie die Fixierung automatisch.
Lucas
@ysth Nein, im Allgemeinen nicht.
BuZZ-dEE
1

Ich bin gerade auf dieses Problem gestoßen. Beim Aufruf apt-get install -fwerden jedoch keine empfohlenen Abhängigkeiten installiert ! Die einzige Problemumgehung wäre dann, ein lokales Repository zu erstellen und hinzuzufügen /etc/apt/sources.list, dh:

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

Tatsächlich lautet die Antwort, dass der dpkgPaketmanager Abhängigkeiten nicht sofort installieren kann. Du bist gekommen man dpkgund hast das herausgefunden. So müssen Sie Tools verwenden , wie apt, apt-get, aptitude, ..., basierend auf dpkg.

Ich würde sagen, dass genau der gleiche Fall für den rpmPaketmanager auf der anderen Linux-Hemisphäre gilt. rmpist nicht für abhängigkeitsbasierte Installationen gedacht. Es können einzelne Pakete installieren, und für die Abhängigkeiten zu installieren Sie verwenden yum, urpmi, up2datewerden diese alle auf RPM.

Wie bereits erwähnt, besteht bei der dpkgdirekten Installation von Paketen eine leichte Gefahr , da eine spätere Auflösung von Abhängigkeiten zu einem Systemausfall führen kann, wie in @Rinzwind beschrieben.

prosti
quelle