Vér*_*ace 13 make software-installation
是否有一种通用的方式来运行 bash 脚本并查看生成的命令,但实际上并不运行这些命令——即某种“试运行”/模拟器?
我有一个我希望运行的数据库安装脚本(实际上是在运行 ./configure 和 make 之后“make install”),但它正在安装我不想要的各种东西。
所以我想要一种方法,在我真正运行它之前确切地看到它要做什么 - 甚至可以手动运行命令。
是否有任何实用程序可以执行此类任务(或任何相关/类似的任务)?
Jef*_*ler 18
GNU make 可以选择进行试运行:
'-n'
'--只是打印'
'--干运行'
'--侦察'
“无操作”。导致 make 打印使目标保持最新所需的配方,但不实际执行它们。请注意,即使使用此标志,某些配方仍会执行(请参阅 MAKE 变量的工作原理)。此外,仍会执行更新包含的 makefile 所需的任何配方。
因此,对于您的情况,只需运行make -n install
以查看make
将执行的命令。
的任何版本make
都有一个-n
选项(参见POSIX 描述make
),但shell没有相应的选项(参见示例显示命令而不执行它们)。
更糟糕的是,如果您碰巧使用 automake,它会粘贴大量样板脚本(其开发人员称之为“递归规则”),这使任何人都无法使用“make -n”,看看会发生什么发生。
进一步阅读:
make -n
可以帮助展示在不实际执行的情况下会做什么。但是请注意,这仍将执行以‘+’
,为前缀的命令,并且在使用 GNU make 时,会执行包含字符串‘$(MAKE)’
或的命令‘${MAKE}’
(请参阅GNU Make 手册中的代替执行)。通常,这有助于显示递归规则的作用,但这意味着,在您自己的规则中,您不应将此类递归与更改任何文件的操作混合在一起。此外,请注意,即使使用 -n,GNU make 也会更新 Makefile 文件本身的先决条件(请参阅The GNU Make Manual 中的Remaking Makefiles)。
回复:在 automake 生成的规则中,`make -n' 有更多问题。
涉及27.9 处理产生许多输出的工具中列出的一些陷阱