【问题标题】:Distributing binary applications across linux distros跨 Linux 发行版分发二进制应用程序
【发布时间】:2010-11-19 17:57:45
【问题描述】:

我编写了一个尚未开源的应用程序,我想将可执行文件分发到各种 Linux 发行版。最好的方法是什么,我看了一点 .rpm 和 .deb 包装,但我找不到它是否可以用于二进制文件。理想情况下,我想要 OS X 上的 PackageMaker 或 Windows 上的常规安装程序,它会自动复制到 /usr/bin 中。这是 .rpm 和 .deb 包的用途吗,还是我必须捆绑一个会自动执行此操作的 shell 脚本?

【问题讨论】:

    标签: linux distributed packaging software-distribution package-managers


    【解决方案1】:

    MojoSetup 是一个用户友好、完美的跨发行版 解决方案,并且获得了很好的许可(zlib,非常宽松)。它所需要的只是任何 Linux 发行版附带的标准 sh shell。它还允许通过创建 freedesktop.org 规范快捷方式来轻松地创建桌面快捷方式,几乎所有 Linux 图形环境都支持这些快捷方式(因此只需以不同的分辨率转储 PNG 并填写 .desktop 文件的空白)。

    安装程序使用非常简单的 Lua 编程语言编写脚本,并且有几个示例安装程序脚本 in the Mercurial repository 以及冗长的教程。也有很多年的时间来支持它发展成为一个轻量级的跨发行版安装程序。

    【讨论】:

      【解决方案2】:

      您可能应该为您正式支持的每个 Linux 发行版提供一个本机包(当您正式支持它们时,您将对其进行测试,因此这样做应该很简单),并提供一个人们可以使用的 .tar.gz去看看其他的。

      用户总是可以为一些你不支持的外星发行版制作自己的 .rpm 等;但除非在官方支持的操作系统上无法运行,否则他们不会向您投诉。

      您正式支持哪些操作系统?您显然需要对它们全部进行测试(至少,您需要在每个版本的每个操作系统上通过所有回归测试套件)。

      如果您支持多种架构,这当然会很复杂。

      【讨论】:

        【解决方案3】:

        RPM 和 DEB 包是在 Linux 中分发二进制包的两种主要机制。 RedHat 及其衍生产品(Fedora、CentOS)使用 RPM,而 Debian 和 Ubuntu 使用 DEB。

        .rpm 和 .deb 文件本身通常是“哑”档案,并通过预安装的帮助应用程序安装到文件系统中的正确位置。您不必担心编写脚本来安装文件,除非它是一个非常复杂的应用程序,需要针对每个系统进行特殊配置。

        我看到的分发二进制文件的常见模式是:

        • 发布一个压缩的 tarball(.tar.gz 或 .tar.bz2),让分发打包者担心细节。这适用于流行的应用程序,但如果它是新发布的,那么没有人会足够关心你的应用程序来打包它。
        • 以 tarball 的形式发布,外加 RPM 和/或 DEB 包(取决于客户需要)。具有受支持分发的客户可以安装预制包。任何使用不寻常发行版的人都可能乐于从 tarball 安装。

        【讨论】:

        • 另外请注意,如果您希望应用在它们上运行,您将特别需要为 64 位计算机和/或更多奇特的处理器维护不同的 RPM/deb 版本。
        【解决方案4】:

        这就是 .rpm 和 .deb 文件的作用,但您必须确保安装者发行版能够处理 .rpm 和 .deb 文件。如果您希望某些确定 的东西可以跨多个发行版运行,而您不能确定它们是否拥有正确的包管理器,那么您几乎必须求助于 shell 脚本方法。我会建议,如果您能侥幸成功,请为 both .rpm 和 .deb 构建二进制文件 - 这样,您可以覆盖大部分发行版,并且允许用户以某种方式安装他们很熟悉,而且您不必尝试滚动自己的安装程序/卸载程序 shell 脚本。

        【讨论】:

          【解决方案5】:

          rpm 和 deb 将存储二进制文件。您很可能需要为每个发行版或发行版变体使用不同的二进制文件,因为在不同的发行版上,路径不同。

          我建议从您拥有 rpm 和 deb 的两个开始,然后确定这两个发行版。然后也许为 misc 发行版制作一个 tarball,让人们可以自行提取和目录结构以及复制和处理权限。

          此外,对于 deb 之类的东西,您可以将站点设置为存储库。这使得人们很容易在 ubuntu 中添加 repo 和获取/安装 deb。许多第 3 方闭源开发者都这样做。

          【讨论】:

            猜你喜欢
            • 2017-08-08
            • 2011-01-02
            • 2010-10-30
            • 1970-01-01
            • 2010-12-18
            • 2013-02-14
            • 1970-01-01
            • 2014-09-01
            • 2017-09-02
            相关资源
            最近更新 更多