为多个发行版和版本构建Linux包

时间:2009-05-12 21:40:09

标签: linux build-process build cross-platform packaging

我的公司有一个软件产品,用C语言编写,用于Linux平台,使用autotools构建并通过二进制包分发。要创建二进制文件,我们首先生成源RPM,然后从SRPM编译源代码。

目前我们只提供64位Fedora 10的RPM软件包,但我们想开始为多个Linux发行版提供软件包 - 32位和64位 - 以及每个发行版的不同版本(例如Fedora) 11以及Fedora 10)。

我听说为多种Linux风格生成构建的最佳方法是使用单个构建服务器,并为要构建的每组软件包使用不同的chrooted环境。有没有人有一个很好的资源可以更详细地解释这一点,也许有使用这种构建机制的众所周知的项目的例子,或者有更好的替代方案来实现相同的目标?

5 个答案:

答案 0 :(得分:2)

也许你可以研究以下项目来开始:

Novell Build service

Fedora Koji

答案 1 :(得分:2)

您可以使用LSB appchecker来测试您的应用程序/ dynlib / shell脚本兼容性。之后,您可以使用RPM进行所有RPM分发,并使用alien进行所有apt-get分发,将tar.gz用于其他

答案 2 :(得分:1)

checkinstall这样的工具可以帮助您为不同的发行版生成包。就个人而言,如果您希望与现有的软件包管理系统集成,您还需要在服务器上托管多个存储库并在那里提供软件包,然后让用户配置其软件包管理器以将应用程序从服务器中拉出。

答案 3 :(得分:0)

根据您的软件的确切功能以及它在本地库上具有哪些依赖关系(如果有),您可以使用较旧的glibc分发版构建软件,并使其在许多不同的发行版中工作。这就是我们对InstallBuilder的处理方式。如果您对特定软件包没有依赖关系,那么也可以创建将在大多数RPM或基于DEB的Linux发行版上运行的RPM或DEB软件包。无论如何,跨Linux开发并不容易:)祝你好运!

答案 4 :(得分:0)

这是Bob Aiello在this article中关于构建代理所涵盖的案例之一。 We有几个客户使用这种方法并行构建在多个平台上。