Simuler le fonctionnement d'un "make install" – un utilitaire "dry run" / simulateur?

Existe-t-il une façon générique d'exécuter un script bash et de voir les commands qui en résultent, mais ne pas exécuter les commands, c'est-à-dire un simulateur de type "dry run" / simulateur?

J'ai un script d'installation de database (en fait "make install" après avoir exécuté ./configure et make) que je souhaite exécuter, mais il installe toutes sortes de choses que je ne veux pas.

Je voudrais donc un moyen de voir exactement ce qu'il va faire avant de le lancer pour de vrai – peut-être même exécuter les commands à la main.

Existe-t-il un utilitaire capable d'effectuer une telle tâche (ou quelque chose de similaire / apparenté)?

GNU make a une option pour faire un dry-run:

'-n'

'–just-print'

'-dry-run'

'-recon'

"No-op". Les causes font pour imprimer les recettes qui sont nécessaires pour rendre les cibles à jour, mais ne les exécutent pas réellement. Notez que certaines recettes sont toujours exécutées, même avec ce drapeau (voir Comment fonctionne la variable MAKE). Toutes les recettes nécessaires à la mise à jour des makefiles inclus sont toujours exécutées.

Donc, pour votre situation, lancez make -n install pour voir les commands qui s'exécuteraient.

Toute version de make a une option -n (voir la description POSIX de make ), mais le shell n'a pas d'option correspondante (voir par exemple Afficher les commands sans les exécuter ).

Pour aggraver la situation, si vous utilisez automake, il colle – dans de gros blocs de script standard (que ses développeurs appellent des «règles récursives») qui défient la capacité de quiconque d'utiliser «make -n» et de voir ce qui va se passer se produire.

Pour en savoir plus:

  • 27.11 Débogage de règles

    make -n peut aider à montrer ce qui serait fait sans le faire réellement. Notez cependant que cela exécutera toujours des commands préfixées de '+' , et, lors de l'utilisation de GNU make, des commands contenant les strings '$(MAKE)' ou '${MAKE}' (voir au lieu d'exécution dans le manuel GNU Make ). Généralement, cela est utile pour montrer ce que les règles récursives feraient, mais cela signifie que, dans vos propres règles, vous ne devez pas mélanger une telle récursion avec des actions qui changent des files. En outre, notez que make GNU mettra à jour les prérequirejs pour le file Makefile lui-même même avec -n (voir Remaking Makefiles dans le manuel GNU Make).

  • Re: Plus de problèmes avec `make -n 'dans les règles générées par automake.
    touche à certains des pièges énumérés dans 27.9 devises de manutention qui produisent de nombreux extrants