Ubuntu源码包依赖树

xia*_*jie 10 package-management apt dpkg dependencies software-installation

我有一些包裹。让我们称他们为A.deb,B.debC.deb。每个包都有一个对应的源包A.dscA.tar.gzB.dscB.tar.gzC.dscC.tar.gz。包相互依赖:C.deb依赖B.debB.deb依赖A.deb

如果我修改A.deb,我需要重建B.deb,否则它将无法工作。这同样适用于B.debC.deb。有没有办法自动化这个过程?也许有工具或脚本可以为我做这件事?如果没有,我怎么能自己自动化呢?

另外,没有我的包裹。

小智 3

您可以使用声明了构建依赖项的 Makefile,例如如下所示:

default: A.deb B.deb C.deb

C.deb: B.deb C.dsc C.tar.gz
        <command(s) to build C.deb>

B.deb: A.deb B.dsc B.tar.gz
        <command(s) to build B.deb>

A.deb: A.dsc A.tar.gz
        <command(s) to build A.deb>
Run Code Online (Sandbox Code Playgroud)

请注意,命令缩进是 TAB。

这样Makefile,您就可以使用命令

make
Run Code Online (Sandbox Code Playgroud)

这将计算出要构建哪些包以及按什么顺序构建,然后构建它们,这一切都取决于文件的时间戳。例如,如果 sayB.tar.gz的时间戳晚于B.deb(即包B有新源),那么这将导致首先B.deb被重建,并且因为这将使其被标记晚于C.deb,所以它也会导致C.deb被重建。