构建多个软件包以便在不同的Ubuntu版本上进行部署
我需要为Ubuntus Lucid建立debs。 我知道我可以设置VM / chroot等来进行每次构建的分发,但我的Oneiric机器是否有一种机制可以执行以下操作:
ubuntu-dpkg-buildpackage --distro=Lucid
并生成一个Lucid deb?
作为一个快速说明,这是内部包,因此无法养殖到Launchpad或wheverver。
没有单一命令解决方案可以做到这一点,但确实存在使其相对无痛的工具:
-
debootstrap
可以在一个自包含的目录中创建一个原始的,最小的Ubuntu安装 -
schroot
允许您管理多个chroot,保持它们清洁以备将来使用 -
mk-schroot
可用于自动化schroot设置和管理 - 给定.dsc文件(使用
debuild -S
生成),sbuild
将chroot到您的原始chroot,安装任何依赖包,并构建您的源。
这基本上是启动板构建服务器用于构建源包并将它们放入Ubuntu存档中的内容。
通常,使用原始chroot是一种很好的做法,因为它确保包不依赖于构建机器上的任何自定义设置。
设置过程将涉及为您要定位的每个Ubuntu版本创建新的schroot。 这非常简单:使用mk-sbuild
为自己构建一个新的chroot。 这样的东西就是你想要的:
mk-sbuild --arch = amd64 --name = lucid lucid
这将指导您创建一个名为’lucid-amd64’的chroot,并在完成后打印出以下有用信息:
完成了lucid-amd64的建设。 改变黄金形象:sudo schroot -c lucid-amd64-source -u root 要输入图像快照:schroot -c lucid-amd64 要在快照中构建:sbuild -A -d lucid-amd64 PACKAGE * .dsc
因此,一旦设置了chroot,构建过程将是:
- 从您的源
debuild -S
的顶级目录,debuild -S
创建一个源包,包括_ .dsc - 运行构建:
sbuild -A -d lucid-amd64 ../
_ .dsc
有关更多信息, mk-sbuild
, schroot
, sbuild
, debootstrap
和debuild
的联机帮助debuild
非常全面。 https://wiki.ubuntu.com/DebootstrapChroot有一些关于构建和配置chroot的好信息。 另外,如果你需要一只手,你可以在irc.freenode.net上找到#ubuntu-devel。