9

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

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

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

4

5 回答 5

3

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

Novell 构建服务

Fedora Koji

于 2009-05-12T22:24:32.940 回答
2

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

于 2009-05-13T07:15:59.810 回答
1

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

于 2009-05-13T07:28:39.103 回答
0

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

于 2009-09-12T11:15:29.773 回答
0

这是 Bob Aiello 在这篇关于构建代理的文章中介绍的案例之一。我们有几个客户使用这种方法在多个平台上并行构建。

于 2009-09-12T15:18:14.300 回答