debian

Installa automaticamente le dipendenze di compilazione non soddisfatte rilevate da dpkg-checkbuilddeps

Esiste un comando che installa tutte le dipendenze di build non soddisfatte che dpkg-checkbuilddeps elencherebbe?

Ho provato a sed l'output e darlo ad apt-get install , ma sembra molto complicato e per qualche motivo non ha funzionato in alcuni ambienti.

sudo apt-get install --yes $(dpkg-checkbuilddeps | sed 's/([^)]*)//g' | sed 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies://g')

C'è un modo migliore?


Uso mk-build-deps dal pacchetto devscripts per questo (avrai anche bisogno di equivs ).

mk-build-deps

costruirà un pacchetto in base a tutte le dipendenze di compilazione nel file di controllo debian/control ; quel pacchetto può quindi essere installato usando apt , che installerà anche tutte le dipendenze mancanti.

Il vantaggio di questo approccio è che la disinstallazione del pacchetto di dipendenze, una volta terminato, identificherà anche le dipendenze di build che potrebbero anche essere disinstallate.

Per ridurre i passaggi manuali,si può usare il seguente comando:

mk-build-deps --install --root-cmd sudo --remove

Il risultato finale di ciò è che tutte le dipendenze di build vengono installate, ma non il pacchetto di dipendenza di build appena generato stesso: viene installato ( --install ), insieme a tutte le sue dipendenze, e quindi rimosso ( --remove ), ma le dipendenze rimangono al loro posto.




Provate quanto segue:

dpkg-checkbuilddeps 2>&1 | sed 's/dpkg-checkbuilddeps:\serror:\sUnmet build dependencies: //g' | sed 's/[\(][^)]*[\)] //g'

Prima di tutto, dpkg-checkbuilddeps stampa l'errore su stderr non stdout . Quindi deve essere reindirizzato a stdout per utilizzare la pipeline.

Ecco come reindirizzare stderr e stdout in Bash

Hai usato l'espressione regolare ([^)]*) su:

sed 's/([^)]*)//g'

Ma dovrebbe esserlo:

sed 's/[\(][^)]*[\)]//g'

Riferimento: utilizzo di sed per eliminare una stringa tra parentesi