10

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

4

5 回答 5

7

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

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

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

  • 发布一个压缩的 tarball(.tar.gz 或 .tar.bz2),让分发打包者担心细节。这适用于流行的应用程序,但如果它是新发布的,没有人会足够关心你的应用程序来打包它。
  • 作为 tarball 以及 RPM 和/或 DEB 包(取决于客户需求)发布。具有受支持分发的客户可以安装预制包。任何使用不寻常发行版的人都可能很乐意从 tarball 安装。
于 2009-08-14T18:40:31.933 回答
1

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

安装程序使用非常简单的 Lua 编程语言编写脚本,Mercurial 存储库中有几个示例安装程序脚本以及一个冗长的教程。还需要很多年才能将其发展为轻量级的跨发行版安装程序。

于 2013-03-16T22:45:29.717 回答
0

You should probably provide a native package for each Linux distribution that you officially support (as you officially support them, you'll be testing on them so doing this should be trivial), and provide a .tar.gz which people can drop in for other ones.

Users can always make their own .rpm etc for some alien distribution which you don't support; but they can't complain to you unless it doesn't work on an officially supported OS.

Which OSs do you officially support? You'll obviously need to test on them all (at the very least, you'll need to pass all your regression test suite on each OS on each release).

This is of course complicated if you support multiple architectures.

于 2009-08-15T20:35:22.880 回答
0

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

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

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

于 2009-08-14T18:37:41.347 回答
0

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

于 2009-08-14T18:37:46.633 回答