我公司有一款用 C 语言编写的适用于 Linux 平台的软件产品,该产品使用 autotools 构建并通过二进制包分发。为了制作二进制文件,我们首先生成源 RPM,然后从 SRPM 编译源。
目前我们仅为 64 位 Fedora 10 提供 RPM 包,但我们希望开始为多个 Linux 发行版(32 位和 64 位)提供包,并且可能还提供每个发行版的不同版本(例如 Fedora 11 和 Fedora 10)。
我听说,为多种 Linux 版本生成构建的最佳方法是拥有一个构建服务器,并为要构建的每组软件包使用不同的 chrooted 环境。是否有人有好的资源可以更详细地解释这一点,也许有使用这种构建机制的知名项目的示例,或者有更好的替代方案来实现相同的目标?
注意 - 我非常熟悉如何使用 checkinstall 等工具为不同的发行版生成正确格式的软件包。但我不太熟悉的是如何在同一台机器上多次编译相同的代码,并最终为我想要打包的每个发行版生成正确的二进制文件。
答案1
我强烈建议您了解一下 openSUSE Build Service。它们在 Xen 虚拟服务器中设置了各种发行版和架构,并且支持各种软件包,包括 RPM 和 DEB 格式。它将为您节省大量时间和麻烦,让您无需亲自设置每个服务器,更不用说正确设置所有包含项和构建依赖项所需的时间了。
http://en.opensuse.org/Build_Service
编辑:顺便说一句,如果您有安全方面的顾虑,您可以下载代码并在您自己的一台服务器上设置 OBS,而不是使用公共服务器。
答案2
如果你对单一安装程序方法感兴趣,请查看 http://autopackage.org 和http://zero-install.sourceforge.net/