为不同的Ubuntu版本构建多个软件包以进行部署

我需要为Ubuntu的Lucid版本构建deb包。我知道可以设置虚拟机/ chroot等来进行每次构建的分发,但是是否有一种机制可以从我的Oneiric机器上执行类似以下命令的操作:

ubuntu-dpkg-buildpackage --distro=Lucid 并生成一个Lucid deb包?

顺便提一下,这是用于内部软件包,因此无法委托给Launchpad或其他地方处理。

1个回答

这个问题没有一个单一的命令解决方案,但是确实存在工具可以使其相对轻松:

  • debootstrap 可以在一个自包含的目录中创建一个干净、最小化的 Ubuntu 安装
  • schroot 允许您管理多个 chroot,并保持它们的清洁以供以后使用
  • mk-schroot 可用于自动设置和管理 schroot
  • 给定一个 .dsc 文件(使用 debuild -S 生成),sbuild 将进入您的干净 chroot,安装任何依赖包,并构建您的源代码。

这基本上就是 Launchpad 构建服务器用来构建源代码包并将其放入 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
所以,一旦您设置好了chroots,构建过程将是:
  1. 从源包的顶级目录中,运行debuild -S来创建一个源包,包括<package>_<version>.dsc
  2. 运行构建:sbuild -A -d lucid-amd64 ../<package>_<version>.dsc
更多信息,请参考mk-sbuildschrootsbuilddebootstrapdebuild的man页面,它们非常详尽。https://wiki.ubuntu.com/DebootstrapChroot提供了一些关于构建和配置chroots的好信息。另外,如果需要帮助,可以在irc.freenode.net上找到#ubuntu-devel频道。

2我同意sbuild是正确的选择。然而,你在其中有一堆不必要的步骤。mk-sbuild会为你完成所有的schroot设置,而且你不需要以root身份运行sbuild。 - RAOF