![构建多个软件包以部署到不同的 Ubuntu 版本](https://linux22.com/image/814536/%E6%9E%84%E5%BB%BA%E5%A4%9A%E4%B8%AA%E8%BD%AF%E4%BB%B6%E5%8C%85%E4%BB%A5%E9%83%A8%E7%BD%B2%E5%88%B0%E4%B8%8D%E5%90%8C%E7%9A%84%20Ubuntu%20%E7%89%88%E6%9C%AC.png)
我需要为 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,构建过程将是:
- 从源包的顶级目录
debuild -S
创建一个源包,包括<package>_<version>.dsc
- 运行构建:
sbuild -A -d lucid-amd64 ../<package>_<version>.dsc
有关更多信息mk-sbuild
,、、和schroot
的手册页非常全面。sbuild
debootstrap
debuild
https://wiki.ubuntu.com/DebootstrapChroot有一些关于构建和配置 chroot 的有用信息。另外,如果您需要帮助,还可以在 irc.freenode.net 上找到 #ubuntu-devel。