【问题标题】:Building Linux packages for multiple distributions and versions为多个发行版和版本构建 Linux 包
【发布时间】:2010-10-25 16:42:03
【问题描述】:

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

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

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

【问题讨论】:

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


    【解决方案1】:

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

    Novell Build service

    Fedora Koji

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 虽然 appchecker 显示有关兼容性的有价值信息,但它不会构建具有特定于发行版的依赖规范的包。
      • 链接似乎已损坏/指向错误页面 - 我进入 linux.com 上的培训广告页面。我已将其替换为我认为应该是它的当前页面...
      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          【讨论】:

          • 谢谢 - 我们在 Amazon EC2 上构建基础设施,因此可以使用构建代理,但如果可能的话,我更愿意将所有内容都保留在一个构建服务器上以便于维护(例如,如果我们升级一些依赖包的版本,我不想更新多个亚马逊机器映像)。
          猜你喜欢
          • 1970-01-01
          • 2011-12-01
          • 2018-01-09
          • 1970-01-01
          • 2017-01-18
          • 2011-02-24
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多