Simulieren Sie die Ausführung einer "make install" - ein "dry run" oder ein Simulator-Dienstprogramm?

13

Gibt es eine generische Möglichkeit, ein Bash-Skript auszuführen und die resultierenden Befehle anzuzeigen, die Befehle jedoch nicht tatsächlich auszuführen - dh eine Art "Probelauf" / Simulator?

Ich habe ein Datenbank-Installationsskript (eigentlich "make install" nach dem Ausführen von ./configure and make), das ich ausführen möchte, aber es installiert alle möglichen Dinge, die ich nicht möchte.

Also möchte ich eine Möglichkeit haben, genau zu sehen, was es tun wird, bevor ich es ausführe - vielleicht führe ich die Befehle stattdessen sogar von Hand aus.

Gibt es ein Dienstprogramm, das eine solche Aufgabe ausführen kann (oder ähnliches)?

Vérace
quelle
Ich denke, 'set -n' macht so etwas. Fügen Sie auch -x hinzu.
Jeff Schaller
Wie richte ich "make install" ein, um -n zu setzen?
Vérace
bash -n make install, aber von man bash: "Eine interaktive Shell kann diese Option ignorieren."
Pfnuesel
Es gibt keine Dryrun-Option in bash. Siehe auch hier stackoverflow.com/questions/19115156/…
pfnuesel

Antworten:

16

GNU make hat eine Option , um einen Probelauf durchzuführen:

'-n'

'--just-print'

'--Probelauf'

'--recon'

"No-op". Veranlasst make, die Rezepte zu drucken, die benötigt werden, um die Ziele auf den neuesten Stand zu bringen, aber nicht tatsächlich auszuführen. Beachten Sie, dass einige Rezepte auch mit diesem Flag noch ausgeführt werden (siehe Funktionsweise der MAKE-Variablen). Auch alle Rezepte, die zum Aktualisieren der enthaltenen Makefiles benötigt werden, werden weiterhin ausgeführt.

Führen Sie für Ihre Situation einfach make -n installden Befehl aus, makeder ausgeführt werden soll.

Jeff Schaller
quelle
5

Jede Version von makehat eine -nOption (siehe POSIX-Beschreibung vonmake ), aber die Shell hat keine entsprechende Option (siehe zum Beispiel Show-Befehle, ohne sie auszuführen ).

Um die Situation zu verschlimmern, werden bei der Verwendung von automake große Teile von Boilerplate-Skripten (die von den Entwicklern als "rekursive Regeln" bezeichnet werden) eingefügt, die die Fähigkeit jedes Benutzers, "make -n" zu verwenden und zu ermitteln, zunichte machen geschehen.

Weitere Lektüre:

Thomas Dickey
quelle