你用什么Makefiles(除了自动化)

Makefiles非常适合自动化构build,安装和testing。

但是,那不是Make的结束。 我已经使用makefile来完成许多任务,如清理日志,保存镜像网页和下载,将它们挂接到crontabs和testing套件中。

就像脚本一样,我认为使用Makefiles有很大的自动化范围。 特别是当你需要一系列的依赖性触发。

你使用Makefiles做了什么不同的事情?
你也许打算在雨天做更多的事情。

我的个人简历。 乳胶input,PDF输出。

我非常喜欢Makefiles,尤其是对于初级系统pipe理员。

更新绑定区域文件?

没问题:target有checkzonecheckconfig (内存checkconfig ),只有sudo cp <editlocation> <reallocation>; git commit -a .... sudo cp <editlocation> <reallocation>; git commit -a ....如果一切似乎基本上没问题…

复杂的部署?

没有问题logging在一个Makefile中

我几乎在任何地方使用Makefiles,脚本也是合适的。 实际上,我将它们合并在一起, /usr/local/[s]bin/是“单步”脚本所在的位置,Makefile位于正在讨论的服务的工作目录中。

实际上,由于上​​述原因,我已经使用了它们,而不是构build系统 – 也就是说,如果您不计算乳胶并从上游进行构build。

因为我们几乎是一个Ruby商店,所以我使用Rake而不是Make。 我已经使用Rake自动化了以下内容,使用Make来完成这些工作应该不会太困难:

EC2节点维护。 创build和终止实例。

创build一个tarball并将其上传到S3。

部署服务器configuration; 主要是通过调用rsync获取目录并直接复制单例文件。

将Ruby DSL代码转换为JSON数据。

处理git仓库中的软件版本(创build新的分支,标签等)。

sendmail.cf回到8.9天,如果我记得。

我使用makefile来处理来自DocBook源的XML转换。 这样我可以pipe理所有的命令,并根据目标受众是谁来从同一个来源“做pdf”或“做wordml”。

真的没什么。 我发现Makefile的语法对于大多数日常任务来说是非常糟糕的,我试图在绝对必要的时候只和Makefiles进行交互。 对于系统pipe理任务,我没有看到他们提供什么比Bash或Python脚本。 对于构build软件,有更好的构build系统。

我用它在随机的笔记目录中“打印自上次打印以来的所有笔记”:

 printflag:* .txt
     printcmd $?
     echo“printcmd $?”  > $ @

我将这个命令回显到标志文件中,这样我就可以“。printflag”重新打印相同的集合,如果需要的话。

保持DNS / DHCP /等:

编辑hosts.dat#维护所有相关信息的单个文件
使#工作副本进行视觉检查,差异等,如果需要的话
使安装#进入从这里部署位置
使部署#推送更改文件到服务器
使重启#重新启动适当的服务器进程在这里和那里

(或只是“编辑hosts.dat;重新启动”为愚蠢勇敢)

作为一个快速和肮脏的方式来生成过程的手动脚本 – 也就是说,只需要使用伪目标,并使makefile命令沿着“do step Foo”的回声行事 – 当你需要比tsort更复杂的东西时

我知道一些人过去使用Makefile脚本而不是init脚本。 这有效地使它们平滑地运行,并定义步骤之间的依赖关系。