构建多个包以在不同的 Ubuntu 版本上进行部署

Pau*_*han 6 packaging development

我需要为 Ubuntus Lucid 构建 debs。我知道我可以设置虚拟机/文件树根切换等,使每共建分布,但有从我解梦机的机制做一些

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

快速说明一下,这是针对内部包的,因此不能用于 Launchpad 或其他任何地方。

Jer*_*err 6

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

  • 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的源包的顶级目录,创建一个源包,包括<package>_<version>.dsc
  2. 运行构建: sbuild -A -d lucid-amd64 ../<package>_<version>.dsc

有关详细信息,请参阅、、和的联机帮助页mk-sbuild,非常全面。https://wiki.ubuntu.com/DebootstrapChroot有一些关于构建和配置 chroot 的好信息。此外,如果您需要帮助,irc.freenode.net 上还有 #ubuntu-devel。schrootsbuilddebootstrapdebuild

  • 我同意 sbuild 是要走的路。然而,你有一堆不必要的步骤。`mk-sbuild` 为您完成所有 schroot 设置,您无需以 root 身份运行 sbuild。 (2认同)