为Linux分发二进制应用程序的最佳方式是什么?

我刚刚完成将一个应用程序从Windows移植到Linux。
我必须创build应用程序的安装程序。
应用程序不是开源=>我应该分发应用程序的二进制文件(可执行文件,夫妇.so文件,帮助文件和图像)。

我发现了几种方法来做到这一点:
– RPM和DEB包 ;
– 安装程序在.sh文件中 ;
– 自动包装

我不喜欢第一种方法(RPM和DEB包),因为我不想为不同的Linux发行版提供不同的包。

为Linux分发二进制应用程序的最佳方式是什么?

Solutions Collecting From Web of "为Linux分发二进制应用程序的最佳方式是什么?"

经过这两次商业产品,我认为最好的答案是使用本地安装程序为每个支持的平台。 任何事情都会给最终用户带来不愉快的体验,实际上你必须在任何你想要支持的平台上进行测试,所以为每个平台维护软件包并不是一个很大的负担。 你可以创建一个可以在任何平台上“正常工作”的二进制文件,包括你从来没有听说过的一个,这个想法实际上并不能很好地工作。

我的建议是,你选择一个或两个平台来支持最初(Red Hat和Ubuntu将是我的建议),然后让用户需求驱动创建额外的安装包。 也许让你知道,你愿意支持额外的平台,适度的费用,涵盖在这个平台上打包和测试的时间和精力。 如果一个平台被证明是非常不同的,你可能需要收取更多的持续支持。

哦,我不能过分强调这种场景下虚拟机​​的价值。 您需要为您支持的每个平台构建虚拟机,并且可能为每个平台配置多个虚拟机,以便测试不同的配置。

有很多好的答案(我的包括:)) 在这里 。 尽管这更多的是关于二进制兼容性(你需要担心)。

对于安装程序,我会推荐autopackage(我们成功地发布了我们的软件的几个版本),他们已经做了“installer.sh”部分和更多(例如桌面集成)。

你必须小心,测试你的升级方案和东西,这取决于你的包装结构有多复杂,但总的来说很整洁。 我在1.2.6中修正了一些依赖处理的bug,所以应该没问题。

我告诉你一个额外的可能性,虽然我不知道它的状态: Loki安装程序 。 Loki是一家为Linux做视频游戏的公司。 它在2002年下降,但安装程序可用。

InstallShield也可用于Linux 。 没有关于地位的想法。

虽然很多人都建议你去tar.gz,请不要。 我假设你想为你的用户提供一个愉快的安装过程体验。 tar.gz是您可以做的最低级别,低质量,低可用性选择之一。 如你所知,它无处不在,因为它基本上什么都不做。

在freedesktop.org和LSB的家伙很清楚在哪里放东西。 你需要的是一个友好的程序来做到这一点。 Autopackage imho有数字(我喜欢它),但是尽管它的年龄,我还没有看到一个单独的程序作为autopackage分发。

仔细评估一下,但不要忽略成为支持它的势头的一部分,只是因为它不受欢迎。 如果它适用于您,并且适用于您的用户,则其他一切都无关紧要。

你可能想试试InstallBuilder 。 它是跨平台的(运行在Windows,Linux,Mac OS X,Solaris和几乎任何其他的Unix平台上)。 它被英特尔,摩托罗拉,GitHub,MySQL,诺基亚/奇趣科技和其他许多公司使用,所以你将会成为一个好公司:)除了二进制安装程序,它还可以创建交叉式RPM和DEB软件包。

InstallBuilder是商业化的,但是我们提供免费的开放源代码许可证和非常显着的mISV或独立开发者的折扣,只需要给我们一条线。

没有最好的办法 (普遍来说)。 tar.gz的二进制文件,应该工作。

用二进制文件创建一个.tar.bz2压缩文件,然后发布一个压缩文件,如下所示:

<?xml version="1.0" ?> <interface uri="http://mysite/myprog.xml" xmlns="http://zero-install.sourceforge.net/2004/injector/interface"> <name>MyProgram</name> <summary>what it does</summary> <description>A longer description goes here.</description> <implementation main='bin/myprog' id="sha1new=THEDIGEST" version='1.0'> <archive href='http://mysite/myprogram-1.0.tar.bz2' size='10000'/> </implementation> </interface> 

使用您的GPG密钥进行签名。 您可以使用0install上的工具来计算摘要,并以正确的格式为您添加GPG签名。

然后,把它放在你的网站的uri属性的地址。 大多数Linux发行版(例如Ubuntu,Fedora,Debian,Gentoo,ArchLinux等)上的任何用户都可以通过以下方式安装和运行程序:

 0launch http://mysite/myprog.xml 

他们的系统也会定期检查更新。 不同的桌面环境有不同的GUI,但是命令行可以在任何地方使用。

也看一些现有的饲料灵感。

可以在Debian上安装RPM,在RHEL上安装APT。

如果你要静态地链接这个程序,或者只是动态地链接到你将要在程序包中分发的库,那么分发它的方式并不重要。 最简单的方法是tar.gz,这将工作。

OTOH是否与系统库动态链接,特别是如果它具有与客户端的其他应用程序共享的动态库的依赖关系,则需要执行RPM,APT或两者兼而有之。

我也在工作中考虑过这个问题,我不得不同意,这不是一个“最好的办法”。 如果您的应用程序正在作为源代码分发,那么我将使用打包在tar.gz中的make / configure方法。 这在Linux世界看起来相当普遍。

了解做什么的一个好方法是看更大的组织,看看他们如何分配他们的二进制文件。