Моделюйте роботу «make install» - «сухого запуску» або утиліти симулятора?


13

Чи існує загальний спосіб запуску bash-скрипту та перегляду команд, які призводять до цього, але насправді не виконують команди - тобто "сухий запуск" / симулятор сортів?

У мене є сценарій встановлення бази даних (насправді "зробити встановлення" після запуску ./configure and make), який я хочу запустити, але він встановлює всілякі речі, які я не хочу.

Тому я хотів би, щоб точно побачити, що він буде робити, перш ніж запустити його на реальні - можливо, навіть запустити команди вручну.

Чи є якась утиліта, яка може виконати таке завдання (або що-небудь пов'язане / подібне)?


Я думаю, що "set -n" робить щось подібне. Спробуйте також додати -x.
Jeff Schaller

Як я трубу "зробити встановлення" встановити -n?
Vérace

bash -n make install, але з man bash: "Інтерактивна оболонка може ігнорувати цю опцію."
pfnuesel

Не існує жодного варіанту перекачування bash. Дивіться також тут stackoverflow.com/questions/19115156 / ...
pfnuesel

Відповіді:


17

У GNU make є можливість виконувати пробіг:

'-n'

'- просто друк'

'- пробіг'

'--рекон.'

"Неоперативний". Причини змушують надрукувати рецепти, необхідні для того, щоб цілі були актуальні, але насправді їх не виконували. Зауважте, що деякі рецепти все ще виконуються навіть із цим прапором (див. Як працює змінна MAKE). Також будь-які рецепти, необхідні для оновлення включених файлів, все ще виконуються.

Тож для вашої ситуації просто запустіть, make -n installщоб побачити команди, які makeвиконували б.


5

Будь-яка версія makeмає -nопцію (див. Опис POSIXmake ), але оболонка не має відповідного параметра (див., Наприклад, Показати команди без їх виконання ).

Щоб погіршити ситуацію, якщо вам трапляється використовувати автоматичне, воно вставляє великі шматки сценаріїв котлованних панелей (які розробники називають "рекурсивними правилами"), які перемагають здатність будь-кого використовувати "make -n" і бачити, що буде трапляються.

Подальше читання:

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.