跨Linux发行版分发二进制应用程序

10

我写了一个应用程序,目前还不是开源的,我想要在各种Linux发行版上分发可执行文件。什么是最好的方式呢?我看了一下.rpm和.deb打包,但我不确定它们是否可以用于二进制文件。理想情况下,我想要像OS X上的PackageMaker或Windows上的常规安装程序那样,自动将程序复制到/usr/bin目录下。.rpm和.deb包能实现这个功能吗?还是我必须打包一个shell脚本来自动完成这个工作?

5个回答

7

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

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

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

  • 发布压缩的tarball(.tar.gz或.tar.bz2),让分发打包人员处理细节。这对于流行的应用程序很有效,但如果刚刚发布,没有人会关心您的应用程序以进行打包。
  • 发布tarball和RPM和/或DEB包(根据客户需求)。具有支持的发行版的客户端可以安装预先制作的包。任何使用不寻常发行版的人可能仍然喜欢从tarball安装。

请注意,如果您希望应用程序在64位计算机和/或更多的异型处理器上运行,您需要维护不同的RPM / deb版本。 - Gnudiff

1

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

安装程序使用非常简单的Lua编程语言进行脚本编写,并且在Mercurial仓库中有几个示例安装程序脚本以及一个详细的教程。多年来,它已经成为一个轻量级的跨发行版安装程序,并得到了很好的发展。


0

RPM和DEB将存储二进制文件。你可能需要为每个发行版或发行版变体准备不同的二进制文件,因为在不同的发行版中,路径等方面是不同的。

我建议先从你有的两个RPM和DEB开始,并针对这两个发行版进行优化。然后,可以为其他杂项发行版创建一个tarball,让用户自己提取目录结构并复制和处理权限。

此外,对于像DEB这样的东西,您可以设置一个网站作为存储库。这使得人们可以轻松地添加存储库并在Ubuntu中轻松获取/安装DEB。许多第三方闭源开发者都这样做。


0

这就是.rpm和.deb文件的作用,但您必须确保被安装的发行版有能力处理.rpm和.deb文件。如果您想要在多个发行版上运行某些东西,并且不能确定它们是否具有正确的软件包管理器,则基本上必须采用shell脚本方法。我建议,如果可以的话,为.rpm和.deb构建二进制文件 - 这样,您可以覆盖大多数发行版,并允许用户以他们熟悉和习惯的方式进行安装,而不必尝试编写自己的安装程序/卸载程序shell脚本。


0

你应该为每个你正式支持的Linux发行版提供本地包(因为你正式支持它们,所以在它们上进行测试应该很容易),并提供一个.tar.gz文件,供其他发行版的用户使用。

用户可以为一些你不支持的外来发行版制作自己的.rpm等文件;但是,除非它不能在正式支持的操作系统上运行,否则他们不能向你抱怨。

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

当然,如果你支持多种架构,这会变得更加复杂。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接