Makefile 非常适合自动化构建、安装和测试。
但是,这并不是 Make 的结束。我使用 makefile 完成了许多任务,例如清理日志、保留镜像网页和下载、将它们连接到 crontab 和测试套件中……
像脚本一样,我认为使用 Makefile 可以实现很大范围的自动化。特别是当您需要基于依赖关系的触发链时。
您使用 Makefile 做了哪些不同的事情?
你打算对他们做更多的事情,也许在下雨天。
Makefile 非常适合自动化构建、安装和测试。
但是,这并不是 Make 的结束。我使用 makefile 完成了许多任务,例如清理日志、保留镜像网页和下载、将它们连接到 crontab 和测试套件中……
像脚本一样,我认为使用 Makefile 可以实现很大范围的自动化。特别是当您需要基于依赖关系的触发链时。
您使用 Makefile 做了哪些不同的事情?
你打算对他们做更多的事情,也许在下雨天。
我的简历。LaTeX 输入,PDF 输出。
我非常喜欢 Makefile,尤其是对于初级系统管理员。
更新绑定区域文件?
没问题:目标有
checkzone
并且checkconfig
(内存不足)并且只有sudo cp <editlocation> <reallocation>; git commit -a ....
在一切看起来基本正常时才会这样做......部署复杂?
没问题把它记录在Makefile中
我几乎在任何适合脚本的地方都使用过 Makefile。实际上,我将它们组合在一起,
/usr/local/[s]bin/
是“单步”脚本所在的位置,而 Makefile 位于相关服务的工作目录中。实际上,出于上述原因,我使用它们的次数比构建系统要多得多——也就是说,如果您不计算乳胶并从上游构建。
因为我们几乎是一家 Ruby 商店,所以我使用 Rake 而不是 Make。我已经使用 Rake 自动化了以下操作,使用 Make 完成这些操作应该不会太难:
EC2 节点维护。创建和终止实例。
创建一个 tarball 并将其上传到 S3。
部署服务器配置;主要是通过对目录调用 rsync 并直接复制单例文件。
将 Ruby DSL 代码转换为 JSON 数据。
在 git 存储库中处理软件版本(创建新的分支、标签等)。
如果我记得的话,sendmail.cf 会在 8.9 天返回。
我使用 makefile 来处理来自 DocBook 源的 XML 转换。这样我就可以管道所有命令,并根据目标受众从同一来源执行“制作 pdf”或“制作 wordml”。
真的没什么。我发现 Makefile 语法对于大多数日常任务来说都很糟糕,我尝试只在绝对必要时与 Makefile 交互。对于系统管理任务,我看不到它们通过 Bash 或 Python 脚本提供的功能。对于构建软件,有更好的构建系统。
我用它在随机笔记目录中“打印自上次打印以来的所有笔记”:
我将命令回显到标志文件中,因此如果需要,我可以只使用“.printflag”重新打印相同的集合;
维护DNS/DHCP/等:
(或者对于愚蠢的勇敢者来说只是“编辑hosts.dat;重新启动”)
并且作为为过程生成手动脚本的一种快速而肮脏的方法——也就是说,只需使用伪目标并让 makefile 命令回显类似于“do step Foo”的内容——当你需要比 tsort 更复杂的东西时
我知道有些人曾经使用 Makefile 脚本而不是 init 脚本。这有效地使它们并行运行并定义步骤之间的依赖关系。