Simula l'esecuzione di un "make install" - un "dry run" o un'utilità di simulazione?


13

Esiste un modo generico di eseguire uno script bash e vedere i comandi che ne risultano, ma in realtà non eseguono i comandi, ad esempio una sorta di "dry run" / simulatore?

Ho uno script di installazione del database (in realtà "make install" dopo aver eseguito ./configure and make) che desidero eseguire, ma sta installando tutti i tipi di cose che non voglio.

Quindi mi piacerebbe un modo per vedere esattamente cosa sta per fare prima di eseguirlo sul serio - forse invece eseguire i comandi a mano.

Esiste un'utilità in grado di eseguire tale attività (o qualcosa di correlato / simile)?


Penso che 'set -n' faccia qualcosa del genere. Prova ad aggiungere anche -x.
Jeff Schaller

Come faccio a pipe "make install" per impostare -n?
Vérace,

bash -n make install, ma da man bash: "Una shell interattiva può ignorare questa opzione."
pfnuesel,

Non è disponibile l'opzione dryrun in bash. Vedi anche qui stackoverflow.com/questions/19115156/...
pfnuesel

Risposte:


16

GNU make ha un'opzione per eseguire una corsa a secco:

'-N'

'--Just-print'

'--funzionamento a secco'

'--ricognizione'

“No-op”. Le cause fanno stampare le ricette necessarie per aggiornare gli obiettivi, ma in realtà non li eseguono. Nota che alcune ricette sono ancora eseguite, anche con questo flag (vedi Come funziona la variabile MAKE). Inoltre, tutte le ricette necessarie per aggiornare i makefile inclusi vengono comunque eseguite.

Quindi, per la tua situazione, corri make -n installa vedere i comandi che makeverrebbero eseguiti.


5

Ogni versione di makeha -nun'opzione (vedi descrizione POSIX dimake ), ma la shell non ha un'opzione corrispondente (vedi ad esempio Mostra comandi senza eseguirli ).

Per aggravare la situazione, se ti capita di usare automake, incolla grossi pezzi di scripting plateplate (che i suoi sviluppatori chiamano "regole ricorsive") che sconfiggono la capacità di chiunque di usare "make -n" e vedere cosa sarà accadere.

Ulteriori letture:

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.