Come installare i pacchetti .deb locali con apt-get


144

C'è un modo per installare i pacchetti memorizzati sul tuo HD con apt-get, come apt-get install ./package.deb?

In caso contrario, come gestire le dipendenze in un modo molto molto semplice?


Questo funziona ora. Se usi ancora SuperUser, puoi aggiornare la risposta accettata? Vedi sotto.
mikemaccana,

Risposte:


121

di solito lo faccio dpkg -i <deb file>, fallirà nel dire che ha bisogno di dipendenze. Dopodiché, quando lo fai apt-get update, alla fine dirà qualcosa come "le dipendenze sono pronte per l'installazione", penso che quindi consigli di usare apt-get install -f.

Una volta fatto, lo uso di dpkg -inuovo.

Ha funzionato bene per me negli ultimi anni.

modifica: guardando un po 'oltre, apparentemente uno strumento chiamato gdebipuò farlo come gdebi [deb file].


1
Grazie ho fatto lo stesso con "errore" dpkg quindi apt-get install -f e ha funzionato.
Louis,

2
gdebiha funzionato per me, e la più semplice che abbia mai visto finora.
ctrl-alt-delor

55

Sirex lo ha più o meno corretto, ma la sua risposta non è chiara. Ho appena risolto questo, quindi ecco cosa ho fatto:

sudo dpkg -i /path/to/filename.deb

Se questo non riesce con un messaggio sul pacchetto a seconda di qualcosa che non è installato, è possibile risolverlo se lo si esegue

sudo apt-get -f install

Questo installerà le dipendenze (supponendo che siano disponibili nei repository di cui il tuo sistema è a conoscenza) E il pacchetto che stavi inizialmente richiedendo di installare ('f' è l'opzione 'fix' e 'y' è 'assume sì ai prompt' o l'opzione 'non chiedermi se va bene, basta installarlo già' - molto utile per installazioni silenziose con script). Sul sistema su cui mi trovavo, non era necessario eseguire nuovamente dpkg (Ubuntu lucid 10.04).

Ho trovato interessante che se si interrompe -f quando si esegue sudo apt-get install, verrà elencato il pacchetto come non configurato a causa di una dipendenza non risolta, oltre a suggerire utile:Unmet dependencies. Try 'apt-get -f install' with no packages (or specify a solution).

Modificare:

Se si desidera installare senza dover rispondere 'y' a tutte le domande, è possibile aggiungere il ymodificatore di come ho originariamente incluso: sudo apt-get -fy install. Tuttavia, un commentatore ha sottolineato che apt a volte suggerisce di disinstallare l'intero ambiente desktop. Stavo facendo questo lavoro in una macchina virtuale e non avevo questa preoccupazione, ma questo post è stato aggiornato per riflettere un po 'più attento.


Se ho già tutti i file del pacchetto in una directory, c'è un modo per dire a apt che si tratta di un nuovo repository, quindi non dovrò forzarlo a installare nulla senza dipendenze?
Berry Tsakala

2
Mi dispiace, ma non lo so. Suggerirei di farlo come un'altra domanda di alto livello.
Akrikos,

Pazzo strano che questo sia richiesto. Su raspian, questo richiederà sudo (sia per dpkg che per apt-get):, sudo dpkg -i mypackages.debecc.
Brent Faust

Accesso root @Rubistro richiesto su tutti i sistemi. Immagino che le risposte presupponessero che i comandi fossero eseguiti da root (ad esempio da una shell root interattiva o da uno script che viene eseguito come root).
Amos Shapira,

2
Per il tuo bene, non aggiungere l' -yopzione. È abbastanza comune per apt suggerire, ad esempio, di disinstallare l'intero ambiente desktop se si prova questo con il pacchetto sbagliato al momento sbagliato (almeno su Debian).
oseiskar,

45

Puoi anche installare il file .deb usando gdebi. Esegui i comandi seguenti per installare gdebi,

sudo apt-get install gdebi-core

Installa i pacchetti .deb con gdebi,

sudo gdebi /path/to/filename.deb

Corregge anche le dipendenze.


4
Nota che gdebi prende solo un singolo argomento e fa cadere silenziosamente il resto sul pavimento. Ciò significa che se stai installando più debs contemporaneamente (forse perché dipendono l'uno dall'altro) dovrai creare con cura i gdebicomandi che consentono loro di installarli. imo questa metà sconfigge lo scopo di gdebi, ma potresti ancora trovarlo utile per un singolo file
Anthony Sottile,

@Anthony thenfind -name *.deb -exec gdebi {} \;
jjmontes

3
@jjmontes che funzionerà solo se le interdipendenze sono in ordine alfabetico che scommetterei è piuttosto raro
Anthony Sottile,

Ho seguito questo freesoftwaremagazine.com/articles/… (bug il repo locale doveva essere su / var / www / html / debs) e synaptic continuava a provare a scaricare da remoto anche senza internet, quindi gdebi ha funzionato benissimo con il repository locale ! inoltre, i file .deb dovevano esserechmod +r *.deb
Aquarius Power il

34

Sì, il comando che hai proposto è corretto.

sudo apt-get install ./package.deb

o

sudo apt install ./package.deb

installerà il pacchetto ottenuto da un'altra fonte diversa da APT e allo stesso tempo utilizzerà le funzionalità APT per risolvere automaticamente le sue dipendenze. Sfortunatamente, questa apt-getfunzione non è documentata nella pagina man .

Vedi https://askubuntu.com/a/769542/250300 e https://askubuntu.com/a/795048/250300 per i dettagli.


8
Questa avrebbe dovuto essere la risposta accettata.
Peter,

Quale versione di apt-get ha aggiunto questa funzionalità?
Kurt Fitzner,

@KurtFitzner È stato aggiunto in APT 1.1 per l' annuncio di rilascio (trovato tramite askubuntu.com/a/795048/250300 ).
Melebio
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.