Ubuntu源码包依赖树


10

我有一些包裹。让我们给他们打电话A.debB.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。有没有办法使这个过程自动化?也许有工具或脚本可以帮我吗?如果没有,我怎么能自己自动化?

另外,没有我的包裹。


2
您说的是“ C.deb取决于B.deb,而B.deb取决于A.deb”,所以我猜您是在指二进制包吗?您还指的是针对A中的外部库对B进行编译吗?如果因此根本不应该是重建包时,需要考虑到A的开发商(S)并没有改变这样的库的接口(所以这是达A的mantainer(S),而不是B的mantainer(S) ;如果您是所有开发人员的开发者,则只需尽可能地从其接口尽可能多地执行A agnostic,以便最大程度地确保兼容性。
kos 2015年

1
我没有在Linux上进行此级别的工作,但我认为这make是发明的目的。一个makefile包含一些规则,这些规则根据更改来确定需要重新编译/重建的内容。

1
@xiaodongjie-您是一个亲爱的人,有一个亲爱的问题-所以您已经知道bash和bash脚本了吗?--->这样,您可以编写一个带有switch-case循环的小脚本,然后像在电梯中将其装入不同的情况一样,对包进行处理。没有我的剧本。你像我们一样聪明-笑吧。-当然,该脚本可以像守护程序一样设置(自动运行)。
dschinn1001 2015年

1
@Joe说:使用make,就像您自己说的那样,@ xiaodongjie,make目标将是生成的程序包,声明其程序包之间的依赖关系,并且每个目标的关联操作将是制作程序包的命令。 。安装make-doc并键入info make以阅读所有相关内容。
拉尔夫·隆奎斯特(RalphRönnquist),2015年

1
如何为构建过程创建别名?
威廉·伊拉斯

Answers:


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>

请注意,命令缩进是TAB。

这样Makefile,您将使用命令

make

这样就可以确定要构建哪些包,以什么顺序构建,然后再构建它们,所有这些都取决于文件的时间戳。例如,如果say B.tar.gz的时间戳晚于B.deb(例如,程序包B具有新的源),那么将首先导致B.deb对其进行重新构建,因为这样会使它在之后被标记C.deb,也将导致C.deb对其进行重新构建。


1

好吧,也许我完全不了解您的意思,但这听起来像是您在重新编译软件包A,并想重新编译软件包B和C,但我只希望我们使用一个makefile


你能解释更多细节吗?
xiaodongjie

或任何例子。
xiaodongjie
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.