Simular a execução de um "make install" - um "dry run" ou utilitário de simulador?

13

Existe uma maneira genérica de executar um script bash e ver os comandos resultantes, mas na verdade não executar os comandos - ou seja, uma espécie de "execução a seco" / simulador?

Eu tenho um script de instalação do banco de dados (na verdade, "make install" após executar ./configure and make) que desejo executar, mas está instalando todo tipo de coisas que eu não quero.

Então, eu gostaria de uma maneira de ver exatamente o que vai fazer antes de executá-lo de verdade - talvez até mesmo executar os comandos manualmente.

Existe algum utilitário que possa executar essa tarefa (ou qualquer coisa relacionada / semelhante)?

Vérace
fonte
Eu acho que 'set -n' faz algo assim. Tente adicionar -x também.
Jeff Schaller
Como canalizo "make install" para definir -n?
Vérace 11/04
bash -n make install, mas de man bash: "Um shell interativo pode ignorar esta opção."
Pfnuesel
Não há opção dryrun no bash. Veja também aqui stackoverflow.com/questions/19115156/…
pfnuesel 11/11/16

Respostas:

16

O GNU make tem uma opção para executar a seco:

'-n'

'--just-print'

'--funcionamento a seco'

'--recon'

"No-op". As causas são necessárias para imprimir as receitas necessárias para atualizar os alvos, mas na verdade não os executam. Observe que algumas receitas ainda são executadas, mesmo com esse sinalizador (consulte Como funciona a variável MAKE). Além disso, todas as receitas necessárias para atualizar os makefiles incluídos ainda são executadas.

Portanto, para a sua situação, basta executar make -n installpara ver os comandos que makeseriam executados.

Jeff Schaller
fonte
5

Qualquer versão makepossui uma -nopção (consulte a descrição POSIX demake ), mas o shell não possui opção correspondente (consulte, por exemplo, Mostrar comandos sem executá-los ).

Para agravar a situação, se você usar o automake, ele colará grandes pedaços de scripts clichê (que seus desenvolvedores chamam de "regras recursivas") que anulam a capacidade de qualquer pessoa usar o "make -n" e ver o que será acontecer.

Leitura adicional:

Thomas Dickey
fonte