Come installare un file deb, da dpkg -i o da apt?


600

Ho un pacchetto deb per l'installazione.

Devo installare da dpkg -i my.debo da apt?

Entrambi gestiranno bene il problema della dipendenza dal software?

Se tramite apt, come posso installare da deb con apt?


È possibile utilizzare aptitudeche rimuove anche i pacchetti non necessari.
Ramesh,

2
Consiglio di non usare direttamente dpkg. In caso di deb singolo, vai con gdebi e in caso di più deb, vai al repository locale APT .
Pandya,

5
perché ......... @Pandya
Tim

2
@Tim perché dpkgnon risolve le dipendenze.
Pandya,

1
@Tim gdebi identifica le dipendenze mancanti, può scaricare e installare (usando apt), può installare e configurare (usando dpkg).
Pandya,

Risposte:


771

Quando si utilizza aptper installare un pacchetto, sotto il cofano che utilizza dpkg. Quando installi un pacchetto usando apt, crea prima un elenco di tutte le dipendenze e lo scarica dal repository.

Al termine del download chiama dpkgper installare tutti quei file, soddisfacendo tutte le dipendenze.

Quindi se hai un .debfile:

  • Puoi installarlo usando:

    sudo dpkg -i /path/to/deb/file
    sudo apt-get install -f
    
  • Puoi installarlo usando sudo apt install ./name.deb(o sudo apt install /path/to/package/name.deb).

    Con le apt-getversioni precedenti devi prima spostare il tuo file deb nella /var/cache/apt/archives/directory. Per entrambi, dopo aver eseguito questo comando, scaricherà automaticamente le sue dipendenze.

  • Installa gdebie apri il tuo file .deb utilizzandolo ( tasto destro -> Apri con ). Installerà il pacchetto .deb con tutte le sue dipendenze.

    ( Nota : APT mantiene l'indice del pacchetto che è un database di pacchetti disponibili disponibili nel repository definito nel /etc/apt/sources.listfile e nella /etc/apt/sources.list.ddirectory. Tutti questi metodi non riusciranno a soddisfare la dipendenza del software se le dipendenze richieste dal deb non sono presenti nell'indice del pacchetto .)


Perché usare sudo apt-get install -fdoposudo dpkg -i /path/to/deb/file (menzionato nel primo metodo)?

Da man apt-get:

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

Quando dpkginstalla un pacchetto e una dipendenza pacchetto non è soddisfatta, lascia il pacchetto in uno stato "non configurato" e quel pacchetto viene considerato interrotto.

sudo apt-get install -f Il comando tenta di correggere questo pacchetto danneggiato installando la dipendenza mancante.


2
@Tim, apt-get è progettato per installare pacchetti dal repository. Mantiene l'elenco dei pacchetti e il rispettivo indirizzo del repository. Quindi, semplicemente spostando un file .dev, che non è presente nell'elenco dei pacchetti apt, nella directory / var / cache / apt / archives non funzionerà. Perché ogni volta che provi a installare questo pacchetto usando apt-get, cerca il suo repository, che non è presente. Per questo devi creare un repository locale che penso sia inutile.
g_p,

1
@g_p grazie! Sono un po 'confuso nella tua risposta sopra. scrivi: "(funzionerà se il pacchetto .deb è presente nella lista dei pacchetti apt)" - Non capisco cosa si intende qui. Come si può garantire che il pacchetto .deb sia presente nell'elenco dei pacchetti apt?
BKSpurgeon,

1
@BKSpurgeon, ho aggiunto informazioni bit nella mia risposta. Per scoprire se un pacchetto è presente nell'indice o non viene eseguito apt-cache search <package name>. Puoi anche usare apt-cache policy <package name>, che fornirà anche alcune informazioni aggiuntive.
g_p,

1
Questi metodi eseguiranno comunque il controllo della firma normalmente eseguito da apt? O è possibile installare un file .deb manomesso in questo modo?
Boann,

8
Apt-get moderno può essere utilizzato per installare un pacchetto semplicemente con apt-get install /path/to/package/name.deb. Sarebbe bello se l'autore di questa risposta decidesse di integrarlo. In caso contrario, aggiungerò quella risposta qualche volta quando avrò abbastanza rappresentante qui
Sam Hartman,

91

Installa il tuo foo.debfile con dpkg -i foo.deb. Se si verificano errori con dipendenze non risolte, eseguire in apt-get install -fseguito.


Ho Unable to locate packageprovato in questo modo e sono rimasto perplesso. Ho usato come in Windows solo il nome del pacchetto dopo essere passato alla cartella di archivio. Dovrebbe essere ./<file name>per Unix se nella cartella corrente o nel percorso completo. Cioè se debnon è nella cartella presente in PATH.
Alexei Martianov,

60

Ecco il modo migliore per installare un .debfile su Ubuntu dalla riga di comando:

sudo gdebi skype.deb

Se non lo hai gdebigià installato, installalo usando sudo apt install gdebi-core.

Perché gdebi

gdebicercherà tutte le dipendenze del .debfile e le installerà prima di tentare di installare il .debfile. Lo trovo molto preferibile di sudo dpkg -i skype.deb && sudo apt install -f. Quest'ultimo è troppo ansioso di rimuovere le dipendenze in determinate situazioni. Ad esempio, quando ho provato a installare Skype, ha tentato di rimuovere 96 (!) Pacchetti, inclusi pacchetti come compize unity! gdebiha dato un messaggio di errore molto più chiaro:

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

(Ecco la soluzione a quel particolare problema , tra l'altro.)


ha funzionato alla grande! a proposito, potrebbe essere che il tentativo di rimuovere riguardasse quei pacchetti di transizione / temporanei? o pensi che avrebbe davvero rotto il sistema?
Aquarius Power il

Amico, ho riscontrato un problema con la tua soluzione. Stavo cercando di installare Rstudio. Ha trovato automaticamente una vecchia versione di R per me. Durante l'utilizzo della soluzione di @g_p sono stato in grado di installare solo Rstudio.
Dr_Hope il

39

È possibile installare un pacchetto .deb locale:

sudo apt install ./foo.deb

Assicurati di specificare un percorso relativo o assoluto locale ( ./se nella directory corrente), altrimenti cercherà foo.debnei repository remoti e fallirà.


2
Questo dovrebbe essere contrassegnato come la risposta corretta.
Rael Gugelmin Cunha,

@RaelGugelminCunha non è corretto al 100%. sudo apt installa libstdc ++ 6_8-20180414-1ubuntu2_amd64.deb apt: errore durante il caricamento delle librerie condivise: /usr/lib/x86_64-linux-gnu/libstdc++.so.6: intestazione ELF non valida
mvladk

2
@mvladk Prestare attenzione alla sintassi: manca ./il debfile precedente.
Rael Gugelmin Cunha,

Assolutamente la risposta migliore / più semplice.
Gerardw,

15

Controllare le dipendenze con dpkg -I my.debe apt-get installle dipendenze prima dpkg -i my.deb.

Può essere che si può copiare il my.debin /var/cache/apt/archivese installarlo direttamente con apt-getma non ho mai provato. Non funziona apt-gete dpkgsta cercando i pacchetti elencati negli archivi.


Grazie. nel tuo primo sentenct, vuoi dire apt-get install my.debcon apt-get install? Si installa dal file deb? Perché abbiamo bisogno dpkg -i my.debdopo?
Tim

Ho sempre installato i local .debcon dpkg -i, la mia comprensione è che aptnon ha un'opzione per installarli, a parte la directory in /var/cache/...cui vengono scaricati (potrei sbagliarmi)
Alex

Sembra che apt-get install ./my.debfarà qualcosa, perché produce molte cose. Che cosa fa?
Tim

Fa troppo :-) non funziona, vedi @Igor_Dvoretskyi la risposta è semplicemente perfetta, mi sono dimenticato-f
Alex

5

La risposta più semplice sarebbe quella di utilizzare dpkg eseguendo dpkg -i packagename.deb. È quindi possibile disinstallarlo eseguendo dpkg -r packagename.deb.
apt-getè un programma di installazione di livello superiore basato su dpkg e come tale è possibile apt-get install packagename.deb.
Sarebbe utile aggiungerlo alla directory degli archivi apt-get ( /var/cache/apt/archives) in modo da poterlo fare riferimento come pacchetto con dipendenze e non come archivio .deb autonomo.
Inoltre, aggiungendolo alla directory degli archivi apt-get, hai la possibilità di usare le dipendenze con apt-get install packagename. Ciò ti consentirebbe di installarlo con eventuali dipendenze aggiunte manualmente invece del sistema basato su archivio standalone di dpkg.



-3

È molto semplice se voglio installare Chrome.

Installa il tuo file Chrome come:

dpkg -i googlechrome.deb.

A volte c'è la possibilità di ottenere alcuni errori di dipendenza come il seguente:

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

Quindi, per risolvere i problemi di cui sopra, è necessario aggiungere dipendenze; dare il seguente comando:

apt-get install -f

Dopo aver dato il comando sopra, le dipendenze verranno aggiunte al tuo computer e il tuo pacchetto Debian ( .deb) verrà installato.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.