it-swarm.it

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

Ho un pacchetto deb per l'installazione.

Devo installare entro dpkg -i my.deb o da apt?

Entrambi gestiranno bene il problema della dipendenza dal software?

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

728
Tim

Quando usi apt per installare un pacchetto, sotto il cofano usa dpkg. Quando installi un pacchetto usando apt, crea prima un elenco di tutte le dipendenze e lo scarica dal repository.

Una volta terminato il download, chiama dpkg per installare tutti quei file, soddisfacendo tutte le dipendenze.

Quindi se hai un file .deb, Puoi installarlo come segue:

  1. Usando:

    Sudo dpkg -i /path/to/deb/file
    Sudo apt-get install -f
    
  2. Usando:

    Sudo apt install ./name.deb
    

    O

    Sudo apt install /path/to/package/name.deb
    

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

  3. Prima installa gdebi e poi apri il tuo file .deb utilizzandolo ( Tasto destro -> Apri con). Installerà il pacchetto .deb con tutte le sue dipendenze.

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


Perché usare Sudo apt-get install -f Dopo Sudo dpkg -i /path/to/deb/file (Come indicato nel metodo 1)?

Da man apt-get:

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

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

Il comando Sudo apt-get install -f Tenta di correggere questo pacchetto rotto installando la dipendenza mancante.

939
g_p

Installa il tuo foo.deb file con dpkg -i foo.deb. In caso di errori con dipendenze non risolte, eseguire apt-get install -f in seguito.

95
ihor_dvoretskyi

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

Sudo gdebi skype.deb

Se non hai già installato gdebi, installalo usando Sudo apt install gdebi-core.

Perché gdebi

gdebi cercherà tutte le dipendenze di .deb e li installerà prima di tentare di installare il .deb file. 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 compiz e unity! gdebi ha dato un messaggio di errore molto più chiaro:

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

(Ecco la soluzione a quel particolare problema , a proposito.)

66
Flimm

È 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.deb nei repository remoti e fallire.

60
wisbucky

Controlla le dipendenze con dpkg -I my.deb e apt-get install le dipendenze prima di dpkg -i my.deb.

Forse puoi copiare il my.deb in /var/cache/apt/archives e installalo direttamente con apt-get ma non ci ho mai provato. Non funziona, apt-get e dpkg stanno cercando i pacchetti elencati negli archivi.

15
Alex

La risposta più semplice sarebbe usare 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 potresti 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.

6
Interesting...

Apt-get moderno può essere usato per installare un pacchetto semplicemente con apt-get install /path/to/package/name.deb.

(dovrebbe essere fatto come modifica alla risposta principale ma è stato rifiutato - vedi https://unix.stackexchange.com/posts/159114/edit )

5