3

我知道这个问题可能被问了一百万次,但是没有一个问题可以通过实际应用的方法得到答案,也没有人能解释我要展示的内容。

所以,问题来了:有许多软件供应商提供了适用于所有 Linux 发行版的单一软件包,当我说全部时,我指的至少是主要的(Debian、Redhat 和 Arch)。我试过了,它们都有效。

我的问题是:他们是怎么做到的?

我所知道的:我知道关于二进制不兼容的旧消息。请不要重复那个讲座。任何想从这个问题及其答案中受益的人,如果您从未听说过它,请阅读有关 Linux 发行版的二进制不兼容性的更多信息。我问这个问题的原因是因为我们有一个实际应用程序忽略了这种不兼容性并且适用于几乎所有发行版。这是怎么回事?

我也知道名为LSB的“谣言” 。我称之为谣言的原因是,我从未在任何地方看到过该东西的单一应用程序,如果这是这些供应商的做法,请在答案中解释如何。

(几乎)无处不在的软件示例:

  • Qt Creator,适用于许多操作系统。它只是一个.run在任何地方都可以使用的文件。
  • Mathematica,它提供了一个可以在任何地方工作的单一.sh包。以下是他们下载页面的截图。 在此处输入图像描述

(随时添加更多)。

那么这是怎么回事呢?我怎样才能为我自己的应用程序实现这一点?

一个令人满意的答案将提供一种机制(最好是一个迷你示例),其中一个人可以选择几个 Linux 发行版(比如 Debian、CentOS 和 OpenSUSE),并拥有创建一个可以在所有发行版上运行/安装的单个包的配方.

非常感谢您的任何努力。

4

2 回答 2

4

您所指的包......“.run”或“.sh”只是脚本。由于人们倾向于“直接开始安装”并且可能单击错误的包,因此 shell 脚本可以检测到合适的包,下载并安装它。

或者甚至可能下载并构建源代码......在某种程度上取决于包的项目和目标。

于 2016-10-07T10:41:21.040 回答
1

您是否考虑过使用 appimage 或 flatpak 打包您的应用程序?

http://appimage.org/

http://flatpak.org/

这些是您可以创建开箱即用的应用程序的一些方法。我已经使用了一些以这种方式打包的应用程序,它们可以在 ubunut、fedora 和其他 Linux 发行版上开箱即用。

于 2016-10-07T10:58:53.517 回答