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

9

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

目前,我们只提供64位Fedora 10的RPM包,但我们希望开始为多个Linux发行版提供包 - 包括32位和64位 - 可能还包括每个发行版的不同版本(例如Fedora 11和Fedora 10)。

我听说为多个Linux版本生成构建的最佳方法是拥有一个单独的构建服务器,并为要构建的每组包使用不同的chrooted环境。是否有好的资源可以更详细地解释这一点,也许有使用此构建机制的知名项目的示例,或者有更好的替代方案来实现相同的目标?

5个回答

3

2
您可以使用LSB appchecker来测试您的应用程序 / 动态链接库 / shell 脚本的兼容性。之后,您可以在所有 RPM 发行版中使用 RPM,在所有 apt-get 发行版中使用 alien,并在其他地方使用 tar.gz。

1
虽然 appchecker 可以显示有关兼容性的有价值信息,但它不会构建具有特定于发行版的依赖项规范的软件包。 - P Shved
链接似乎已经损坏或者导向了错误的页面 - 我被带到了一个在linux.com上宣传培训的页面。我已经用我认为应该是当前页面的链接进行了替换... - codeling

1

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


0

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


0

这是 Bob Aiello 在构建代理方面本文中涵盖的案例之一。我们有几个客户使用此方法并行构建多平台。


谢谢 - 我们的构建基础设施在亚马逊EC2上,因此使用构建代理是可能的,但如果可能的话,我更愿意将所有内容保留在一个构建服务器上以便于维护(例如,如果我们升级某个依赖包的版本,我不想更新多个亚马逊机器映像)。 - gareth_bowles

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接