Come consentire a 'dpkg -i' di installare le dipendenze per me?

258

Dire, ho foo-1.2.3.deb che dipende da perl e python , tuttavia, comando di esecuzione:

dpkg -i ./foo-1.2.3.deb

non installerà queste dipendenze. Quindi devo apt-get install perl python a mano.

Come rendere dpkg -i installare automaticamente queste dipendenze?

    
posta Xiè Jìléi 04.05.2011 - 15:11

10 risposte

346

Dopo aver utilizzato dpkg , l'esecuzione del seguente comando mi ha aiutato a installare le dipendenze richieste:

sudo apt-get -f install

In generale, il tuo terminale dovrebbe apparire così:

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

Avviso la riga su Setting up package_with_unsatisfied_dependencies . Questa corregge (e completa) l'installazione di package_with_unsatisfied_dependencies.deb .

    
risposta data Arindom 04.05.2011 - 17:38
108

Puoi installare gdebi-core , che è la versione da riga di comando del programma di installazione del pacchetto GDebi dalla 10.04 in poi. Nelle nuove versioni di Ubuntu, il Software Center viene utilizzato per installare debs, che non ha un equivalente a riga di comando.

Per installare un pacchetto deb utilizzando gdebi, esegui semplicemente:

sudo gdebi my_package_1.0.deb
    
risposta data Andrew Gunnerson 04.05.2011 - 16:47
35

Gdebi

gdebi installa un pacchetto deb e le sue dipendenze. Per utilizzarlo, esegui:

sudo gdebi package.deb

Nelle versioni più recenti di Ubuntu, questo non è installato di default, quindi dovrai installarlo dai repository.

Vedi man gdebi per un elenco completo di opzioni.

gdebi è la riga di comando che equivale allo strumento grafico con lo stesso nome che era solito includere di default in Ubuntu. Il comando per lo strumento grafico è gdebi-gtk e ha funzionalità simili:

    
risposta data dv3500ea 04.05.2011 - 18:56
25

che inizia con apt 1.1 (disponibile in Xenial (16.04), stretch) apt install consente anche file locali:

sudo apt install ./foo-1.2.3.deb

Molto più semplice e più pulito.

Vedi comunicato stampa

    
risposta data textshell 05.07.2016 - 11:23
18

in esecuzione

sudo apt-get install -f

dopo aver installato il pacchetto con dpkg può risolvere le depazioni spezzate (almeno l'uomo apt-get say ...). Aggiornamento illecito quando lo controllerò.

    
risposta data Denwerko 04.05.2011 - 15:17
9

dpkg non ha il supporto per le dipendenze. C'è un modo per aggirarlo, ma ciò richiederebbe di creare un database locale (e quindi si conoscono già le dipendenze) ed è considerato obsoleto (...).

Deve essere una linea di comando? (installazione del server?) Se è così, guarda anche apt-get -f ma fai attenzione: risolvendo le dipendenze dopo l'installazione potresti finire con un sistema guasto.

gdebi (frontend gui) era in grado di fare ciò ma è stato sostituito con USC.

Come hai scaricato il .deb. Alcune delle nuove funzionalità di 11.04 sono la gestione di .deb scaricato da un sito Web: viene aperto in USC, quindi le dipendenze verranno risolte dall'installatore.

EDIT basato sul commento di andrew: sudo gdebi foo-1.2.3.deb farebbe il trucco !!

    
risposta data Rinzwind 04.05.2011 - 15:32
3

In alternativa a gdebi-gtk puoi usare Ubuntu Software Center.

Fai doppio clic sul pacchetto e dovrebbe essere disponibile un pulsante di installazione.

    
risposta data Henrique 10.05.2011 - 09:55
3

Potresti creare un file dpkg-dep-inst con il seguente contenuto.

#!/bin/bash

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

Presumo che tu abbia creato il file nella tua cartella home. Rendilo eseguibile con chmod +x dpkg-dep-inst e spostalo su /usr/local/bin con sudo cp dpkg-dep-inst /usr/local/bin .

Ora puoi installare automaticamente il pacchetto debian con le dipendenze con:

sudo dpkg-dep-inst foo-1.2.3.deb
    
risposta data BuZZ-dEE 28.01.2013 - 17:01
1

Mi sono imbattuto in questo problema. Chiamando apt-get install -f , tuttavia, non installa le dipendenze raccomandate ! L'unica soluzione per questo sarebbe quindi creare un repository locale e aggiungere a /etc/apt/sources.list , cioè:

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

In realtà la risposta è che dpkg gestore pacchetti non può installare le dipendenze fuori dalla scatola. Hai cam man dpkg e l'hai scoperto. Pertanto, devi utilizzare strumenti come apt , apt-get , aptitude , ..., in base a dpkg .

Direi che lo stesso caso riguarda il gestore di pacchetti rpm nell'altro emisfero di Linux. rmp non è pensato per fare installazioni basate su dipendenze. Può installare singoli pacchetti e per installare le dipendenze si usa yum , urpmi , up2date questi sono tutti basati su RPM.

Come notato, c'è un leggero pericolo nell'installazione di pacchetti con dpkg direttamente, perché una risoluzione successiva della risoluzione delle dipendenze potrebbe finire con un sistema danneggiato come descritto da @Rinzwind.

    
risposta data prosti 16.08.2018 - 21:05

Leggi altre domande sui tag