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