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.