Come posso trovare le dipendenze di compilazione di un pacchetto?


48

Vorrei scoprire quali pacchetti

sudo apt-get build-dep <package>

installerei (se ho già installato alcune dipendenze, mi piacerebbe anche vederle → quindi non basta eseguire o simulare quanto sopra). Riga di comando preferita.


1
Sono confuso, non sudo apt-get build-dep <package>mostra l'elenco dei pacchetti (se il pacchetto ha dipendenze di build) verrà installato?
Isaia,

1
Sfortunatamente questo mostra solo i pacchetti che non sono installati.
Htorque,

Risposte:


45

Per un elenco completo delle dipendenze, comprese le dipendenze delle dipendenze, è possibile utilizzare:

apt-rdepends --build-depends openoffice.org

Il comando potrebbe ricordare di installare apt-rdependsprima.

È possibile utilizzare il comando seguente per mostrare solo quelli che non sono installati:

apt-rdepends --build-depends --print-state openoffice.org | grep NotInstalled

Vedi apt-rdepends --helpper tutte le opzioni.

Nota : questo genererà un elenco enorme .
apt-rdepends -b xterm, ad esempio, genera 8773 righe di output e richiede tempo per farlo.

Se vuoi vedere solo i pacchetti necessari per compilare il pacchetto più in alto, ovvero cosa devo installare per compilare nautilus, esegui:

apt-rdepends --build-depends --follow=DEPENDS nautilus

Questo è approssimativamente equivalente alla risposta di Carsten Thiel ( The following NEW packages will be installed), ma il formato di output è un po 'più bello. Mostra anche solo il pacchetto più in alto, mentre apt-get simulato mostra anche i pacchetti installati come dipendenze di quelli.

Questo mostra anche i pacchetti installati. Ma può anche mostrare pacchetti installati per impostazione predefinita. Sfortunatamente, nessuno dei due metodi è di grande aiuto quando si tenta di ripulire il sistema dopo aver eseguito apt-get build-dep. Per quanto ne so, non esiste un metodo affidabile per trovare quali sono stati installati se non dal guardare il file di registro apt su /var/log/apt/history.log.


1
Grazie, la versione con --follow=DEPENDSè esattamente quello che stavo cercando. Puoi anche trovare quelle dipendenze di build su Launchpad, ad es. per Nautilus: launchpad.net/ubuntu/natty/+source/nautilus (scorrere verso il basso).
Htorque,

17

L'opzione -s( --simulate) genererà tutto ciò che verrebbe fatto senza fare nulla. Non hai nemmeno bisogno dei privilegi di root per quello.

apt-get -s build-dep <package>

6
Vedi il mio commento sopra - questo non mostrerà i pacchetti già installati. Scusa se non sono preciso nella mia domanda.
Htorque,

Non funziona - fallisce conE: Unable to find a source package for inkscape
anatoly techtonik il

17
apt-cache showsrc <pkgname> | grep ^Build-Depends

showsrcvisualizza il file debian / control per un determinato pacchetto sorgente. Facciamo quindi grep per le righe che iniziano con 'Build-Depends' che ha l'elenco dei pacchetti necessari per compilare dal sorgente.


+1 se spieghi cosa apt-cache showsrce cosa | grepfa. Comunque, buona risposta. Grazie per il tempo dedicato a fornirlo.
MadMike,

sudo apt-cache showsrc inkscapenon funziona inkscapein Ubuntu 18.10 - dàW: Unable to locate package inkscape N: No packages found
anatoly techtonik il

@anatolytechtonik appena testato su Ubuntu 18.10 in Docker, funziona per me. apt-get updatePrima tu ?
Stéphane Gourichon,

Questa dovrebbe essere la risposta accettata in quanto fornisce lo strumento necessario e non necessita di alcun pacchetto aggiuntivo.
Stéphane Gourichon,
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.