我有一款目前在Windows和Mac OS X下运行的游戏,我想在Linux下使用它。移植应该相当容易,因为它是一个基于Java的游戏,并使用可在所有3个平台上使用的可移植库。
这个问题的难点和原因是打包它,以便它可以在尽可能多的现代Linux发行版上运行。主要目标是Ubuntu 9。
Webstart不是一种可接受的方式,.tar.gz是最后的选择。我非常喜欢具有正确定义的依赖项(例如Java)的软件包,并且可以轻松安装。
我还需要能够在Windows环境下构建软件包,因为我的构建链中的某些工具仅限Windows。
答案 0 :(得分:5)
首先看看类似项目是如何实现这一目标的。让人想起的是Freecol,这是一款基于Java的跨平台游戏。他们的download page有很多关于在许多平台上安装它的信息。他们还可以在诸如GetDEB之类的网站上为Ubuntu提供套餐,为{4}}提供适用于OpenSuse的网站。
通常,如果您想要尽可能多地分配,您应该考虑的格式(粗略的重要性):
然后从源选项构建或使用尽力而为的二进制安装程序。最后,看看其他流行的发行版,如Debian,Mandriva和BSD
一旦某个特定平台的软件包存在,您可能希望考虑让它接受该分发。这将使用户更容易找到和获取。有关ubuntu流程的信息,请访问:
(编辑:更好的清单,感谢Jonik的建议。)
答案 1 :(得分:2)
查看零安装(http://0install.net/)。
您只需安装字处理器[更多]
即可成为管理员您不需要被分发(或其他任何人)祝福成为零安装的一部分; 该系统完全分散[更多]
当有更新时,Zero Install会通知您[更多]
如果一个用户下载恶意程序,其他用户不会受到影响; 用户可以共享下载而无需相互信任; 安装不会执行任何下载的代码; 在新软件r
之前,始终会检查数字签名答案 2 :(得分:1)
您可以将deb系统用于Ubuntu。它可以帮助您正确标记依赖关系。
可提供包装指南here。
答案 3 :(得分:1)
好问题 - 我不知道答案(我想没有一个简单,无所不包的解决方案),但从Linux用户的角度来看,这里有一些要考虑的问题。
我认为.tar.gz(或.tar.bz2)并不一定那么糟糕。 Linux用户习惯了它,例如许多商业软件包以这种方式分发。如果要点只是在某个位置提取文件,它通常会胜过图形Windows风格的安装程序。
一些(可能很多?)用户在包管理系统外部安装了JRE,因此仅提供RPM或deb(这取决于将JRE安装为RPM或deb)可能会有问题。 (我个人更喜欢在/usr/local/java
下安装几个JRE版本(实际上是JDK)。)所以至少考虑提供一个zip / gz / bz2包以及其他选项。
另外,要了解如何创建Java软件的RPM包,请查看JPackage。
答案 4 :(得分:1)
每个发行版可能都有自己的常用文件所在的约定 在Ubuntu中,常见的java jar进入/ usr / share / java。像commons-cli和liblog4j这样的东西存在。如果您使用其中任何一种,请确保您的deb取决于相应的包装。如果库的使用超出了你的应用程序,而不是Ubuntu repos,请考虑将它放在自己的deb中并依赖于它。您需要在/ usr / share / [name] /中为特定游戏罐创建一个文件夹,然后创建一个shell脚本来启动游戏。此脚本应放在/ usr / bin(或/ usr / games)中并可执行。
别忘了依赖一个合适的java包(我建议sun-java#-jre包'因为gjc是crap而open-jdk还不是100%(至少METAL LaF是fubar) ,我还不知道其他任何事情。)