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