9

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

回答

6

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

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

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

  • 释放一个compessed压缩包(.tar.gz .tar.bz2格式或),并让发行打包担心细节。这适用于流行的应用程序,但如果它是新发布的,则没有人会关心您的应用程序打包它。
  • 作为压缩包发布,加上RPM和/或DEB包(取决于客户的需求)。拥有受支持发行版的客户可以安装预先制作的软件包。任何使用不寻常的发行版的人都可能很乐意从tarball安装。
+0

还请注意,如果您希望应用程序在其上运行,您将专门针对64位计算机和/或更具异国情调的处理器维护不同的RPM/deb版本。 – Gnudiff 2009-08-16 09:20:26

0

rpm和deb将存储二进制文件。您需要为每个发行版或发行版变体提供不同的二进制文件,这是因为在不同的发行版中,路径不同。

我建议先从两个你有rpm和deb和钉这两个发行版。然后,也许做一个混杂的发行版,让人们可以提取和目录结构,并自行复制和处理权限。

另外,对于deb等内容,您可以将网站设置为存储库。这使得人们可以很容易地添加repo并在ubuntu中获取/安装deb。很多第三方封闭源代码开发者都这样做。

0

这就是.rpm和.deb文件所做的,但是您必须确保installee发行版能够处理.rpm和.deb文件。如果你想要确保可以在多个发行版中运行,但不确定它们是否具有正确的程序包管理器,那么你几乎不得不求助于shell脚本方法。我建议,如果你能摆脱它,建立你的二进制文件 .rpm和.deb - 这样,你可以获得大部分的发行版,并允许用户以他们舒适和熟悉的方式进行安装与,你不必尝试推出自己的安装程序/卸载程序的shell脚本。

0

您应该为您正式支持的每个Linux发行版提供本地软件包(因为您正式支持它们,您将对它们进行测试,因此做到这一点应该是微不足道的),并提供一个.tar.gz哪些人可以参加其他活动。

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

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

如果您支持多种体系结构,这当然很复杂。

1

MojoSetup是一个用户友好的,完美的交叉distro解决方案和良好的许可(zlib,非常宽容)。它需要的是任何Linux发行版附带的标准sh外壳。它还允许通过创建freedesktop.org规范快捷方式来实现桌面快捷方式,这些快捷方式几乎适用于Linux的所有图形环境(只需在不同分辨率的PNG中进行转储并填充.desktop文件的空白)即可支持。

安装程序使用非常简单的Lua编程语言编写脚本,并有几个示例安装脚本in the Mercurial repository以及一个漫长的教程。还有许多年来将其开发工作备份到轻量级的跨发行版安装程序。