Vraag Hoe laat ik `dpkg -i` afhankelijkheden voor mij installeren?


Zeg, ik heb foo-1.2.3.deb waarvan hangt af van perl en python, echter, opdracht uitvoeren:

dpkg -i ./foo-1.2.3.deb

zal deze afhankelijkheden niet installeren. Dus ik moet apt-get install perl python met de hand.

Hoe te maken dpkg -i installeer deze afhankelijkheden voor mij automatisch?


260
2018-05-04 13:11


oorsprong


Mogelijk duplicaat van Hoe automatisch ontbrekende afhankelijkheden bij het installeren van software van .deb te halen? - pd12
@ pd12: Hoera voor circulaire referenties! :-D - David Foerster
heh, ik besloot om beide te linken en te zien welke de mods zouden selecteren. - pd12
Het is verbazingwekkend dat in 2016, een .deb grafische installatie mislukt stilletjes zonder de gebruiker iets te vertellen over ontbrekende afhankelijkheden. - Dan Dascalescu


antwoorden:


Na gebruik dpkg, het uitvoeren van de volgende opdracht hielp me om de vereiste afhankelijkheden te installeren:

sudo apt-get -f install

In totaal zou uw terminal er als volgt uit moeten zien:

$ 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...

Merk op de lijn over Setting up package_with_unsatisfied_dependencies. Deze fixes (en voltooit) de installatie van package_with_unsatisfied_dependencies.deb.


348
2018-05-04 15:38



Moet ik vluchten sudo dpkg -i mypackage.deb nog een keer ? - Muhammad Gelbana
Na het rennen sudo apt-get -f install mijn pakket en de afhankelijkheden zijn allemaal geïnstalleerd. hardlopen sudo dpkg -i my_package.deb is onnodig en zal het pakket gewoon opnieuw installeren. - Gus E
Volgende werken op Ubuntu 14.04: sudo dpkg -i package.deb; sudo apt-get -f install; sudo dpkg -i package.deb. De eerste dpkg -i markeringen afhankelijkheden uitvoeren, apt-get -f install installeert vereiste afhankelijkheden en de tweede dpkg -iinstalleert het pakket met succes. Let daar op apt-get install -f is een totaal ander commando. - Mikko Rantalainen
@ysth nee, doe het niet dpkg -i --force; dat zal een kapot pakket geforceerd installeren! hardlopen dpkg /zonder/ --force zal de benodigde invoer in de pakketdatabase zo maken apt-get -f install zal het juiste doen. - Brian A. Henning
@Lotharyx: Ik kan het nu niet proberen, maar ik dacht niet dat de dpkg zonder kracht (die mislukt als gevolg van ontbrekende afhankelijkheden) een vermelding in de pakketdatabase zou maken - ysth


U kunt installeren gdebi-core, dat is de opdrachtregelversie van het GDebi-pakketinstallatieprogramma van 10.04 en eerder. In de nieuwere versies van Ubuntu wordt het softwarecentrum gebruikt om deb's te installeren, die geen equivalent van de opdrachtregel hebben.

Om een ​​deb-pakket met gdebi te installeren, voer je gewoon uit:

sudo gdebi my_package_1.0.deb

108
2018-05-04 14:47





gdebi

gdebi installeert een deb-pakket en de afhankelijkheden ervan. Om het te gebruiken, voer:

sudo gdebi package.deb

In nieuwere versies van Ubuntu wordt dit standaard niet geïnstalleerd, dus u moet het vanuit de installatiebronnen installeren.

Zien man gdebi voor een volledige lijst met opties.

gdebi is de opdrachtregel gelijk aan de grafische tool met dezelfde naam die standaard in Ubuntu was opgenomen. Het commando voor de grafische tool is gdebi-gtk en heeft vergelijkbare functionaliteit:

gdebi-gtk


35
2018-05-04 16:56



gdebi-gtk zal niet de vereiste deps tonen (de versie die ik hier tenminste heb, en het ziet eruit als een bug), maar de commandoregel zal! Als we een andere machine hebben met de pakketten die we kunnen gebruiken dpkg-repack erop gebaseerd op zo'n deps lijst :) - Aquarius Power


beginnend met apt 1.1 (beschikbaar in Xenial (16.04), stretch) apt install staat ook lokale bestanden toe:

sudo apt install ./foo-1.2.3.deb

Zoveel eenvoudiger en schoner.

Zie de release aankondiging


27
2017-07-05 09:23



Het wordt tijd dat dit beschikbaar is - Mike
Deze oplossing werkte niet. Het enige dat gebeurde was een lijst met fouten. - Billy S
@BillyS sorry om te horen dat het niet voor jou werkte, maar zonder de distro-versie die je gebruikt en welke fouten je hebt, is dit helemaal niet uitvoerbaar. - textshell
Het commando werkte niet voor mij maar apt ./install foo-1.2.3.deb werkte. - Cenk Alti
De opdracht gecorrigeerd, opmerkingen hierboven verwezen naar de vorige versie van het antwoord die het noodzakelijke miste ./ of pad - Zanna


lopend

sudo apt-get install -f

na het installeren van het pakket met dpkg kan het gebroken depencies oplossen (tenminste man apt-get say so ...). Ik update wanneer ik het zal controleren.


18
2018-05-04 13:17



Moet ik vluchten sudo dpkg -i mypackage.deb nog een keer ? - Muhammad Gelbana
apt-get -f install werkt, maar apt-get install -f is niet hetzelfde. - 200_success


dpkg ondersteunt geen afhankelijkheid. Er is een manier omheen, maar daarvoor zou je een lokale database moeten maken (en dus zou je de afhankelijkheden al kennen) en het wordt als achterhaald beschouwd (...).

Moet het een opdrachtregel zijn? (server installeren?) Als dat zo is, kijk dan ook eens naar apt-get -f maar wees voorzichtig: het oplossen van afhankelijkheden na de installatie kan ertoe leiden dat je een kapot systeem krijgt.

gdebi (gui frontend) was hiervoor in staat, maar werd vervangen door USC.

Hoe heb je de .deb gedownload. Enkele van de nieuwe 11.04-functies zijn de afhandeling van .deb die is gedownload van een website: deze wordt geopend in USC, zodat afhankelijkheden door het installatieprogramma worden opgelost.

EDIT op basis van commentaar van andrew: sudo gdebi foo-1.2.3.deb  zou het lukken !!


9
2018-05-04 13:32



gdebi kan hier nog steeds voor worden gebruikt. Software Center is nu slechts de standaardapp. Ook, zoals Chen Xiao-Long notities vermeldt, kan gdebi ook op de opdrachtregel worden gebruikt. - andrewsomething
koel! dan heeft de vraag een antwoord omdat gdebi ook op de commandolijn kan worden gebruikt, lijkt het. - Rinzwind
Dit zou het geaccepteerde antwoord moeten zijn. - prosti


Als een alternatief voor gdebi-gtk U kunt Ubuntu Software Center gebruiken.

Dubbelklik op het pakket en een knop voor installatie moet beschikbaar zijn.


3
2018-05-10 07:55





U zou een bestand kunnen maken dpkg-dep-inst met de volgende inhoud.

#!/bin/bash

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

Ik neem aan dat je het bestand hebt gemaakt in je thuismap. Maak het uitvoerbaar met chmod +x dpkg-dep-inst en verplaats het naar /usr/local/bin met sudo cp dpkg-dep-inst /usr/local/bin.

Nu kunt u het Debian-pakket met afhankelijkheden automatisch installeren met:

sudo dpkg-dep-inst foo-1.2.3.deb

3
2018-01-28 16:01



Gebruik apt-get --yes --fix-broken install en maak de fixing automatisch. - Lucas
@ysth Nee, niet in het algemeen. - BuZZ-dEE


Ik kwam dit probleem net tegen. Roeping apt-get install -f zullen niet installeren aanbevolenafhankelijkheden! De enige oplossing hiervoor is dan om een ​​lokale repository te maken en toe te voegen /etc/apt/sources.listd.w.z.

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