Simule la ejecución de un "make install": ¿una "ejecución en seco" o una utilidad de simulador?

13

¿Existe una forma genérica de ejecutar un script bash y ver los comandos que resultan, pero no ejecutar realmente los comandos, es decir, una especie de "ejecución en seco" / simulador?

Tengo un script de instalación de base de datos (en realidad "make install" después de ejecutar ./configure and make) que deseo ejecutar, pero está instalando todo tipo de cosas que no quiero.

Así que me gustaría una forma de ver exactamente qué va a hacer antes de ejecutarlo de verdad, tal vez incluso ejecutar los comandos a mano.

¿Hay alguna utilidad que pueda realizar dicha tarea (o algo relacionado / similar)?

Vérace
fuente
Creo que 'set -n' hace algo así. Intenta agregar -x también.
Jeff Schaller
¿Cómo canalizo "make install" para establecer -n?
Vérace
bash -n make install, pero de man bash: "Un shell interactivo puede ignorar esta opción".
pfnuesel
No hay opción de ejecución en seco en bash. Ver también aquí stackoverflow.com/questions/19115156/…
pfnuesel

Respuestas:

16

GNU make tiene una opción para hacer una ejecución en seco:

'-norte'

'--just-print'

'--dry-run'

'--recon'

"No-op". Las causas hacen que se impriman las recetas que se necesitan para actualizar los objetivos, pero en realidad no se ejecutan. Tenga en cuenta que algunas recetas aún se ejecutan, incluso con este indicador (consulte Cómo funciona la variable MAKE). Además, todas las recetas necesarias para actualizar los archivos MAKE incluidos todavía se ejecutan.

Entonces, para su situación, simplemente ejecute make -n installpara ver los comandos que makese ejecutarían.

Jeff Schaller
fuente
5

Cualquier versión de maketiene una -nopción (consulte la descripción de POSIXmake ), pero el shell no tiene una opción correspondiente (consulte, por ejemplo, Mostrar comandos sin ejecutarlos ).

Para agravar la situación, si utiliza automake, pega grandes fragmentos de secuencias de comandos repetitivas (que sus desarrolladores denominan "reglas recursivas") que vencen la capacidad de cualquiera de usar "make -n" y ver qué ocurrir.

Otras lecturas:

Thomas Dickey
fuente