构建多个软件包以便在不同的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,构建过程将是:

  1. 从您的源debuild -S的顶级目录, debuild -S创建一个源包,包括_.dsc
  2. 运行构建: sbuild -A -d lucid-amd64 ../_.dsc

有关更多信息, mk-sbuildschrootsbuilddebootstrapdebuild的联机帮助debuild非常全面。 https://wiki.ubuntu.com/DebootstrapChroot有一些关于构建和配置chroot的好信息。 另外,如果你需要一只手,你可以在irc.freenode.net上找到#ubuntu-devel。