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

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

我需要为 Ubuntu Lucid 构建 deb。我知道我可以设置 VM/chroot 等来为每个构建制作一个发行版,但我的 Oneiric 机器是否有某种机制可以执行某些操作喜欢

ubuntu-dpkg-buildpackage --distro=Lucid 并且生成了 Lucid deb 吗?

简要说明一下,这是内部的包,因此不能外包给 Launchpad 或任何地方。

答案1

没有单一命令的解决方案可以做到这一点,但是肯定存在一些工具可以使其相对轻松地完成:

  • 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,、、和schroot的手册页非常全面。sbuilddebootstrapdebuildhttps://wiki.ubuntu.com/DebootstrapChroot有一些关于构建和配置 chroot 的有用信息。另外,如果您需要帮助,还可以在 irc.freenode.net 上找到 #ubuntu-devel。

相关内容