如何为Linux打包游戏?

时间:2009-05-22 09:52:51

标签: java linux software-distribution rpm deb

我有一款目前在Windows和Mac OS X下运行的游戏,我想在Linux下使用它。移植应该相当容易,因为它是一个基于Java的游戏,并使用可在所有3个平台上使用的可移植库。

这个问题的难点和原因是打包它,以便它可以在尽可能多的现代Linux发行版上运行。主要目标是Ubuntu 9。

Webstart不是一种可接受的方式,.tar.gz是最后的选择。我非常喜欢具有正确定义的依赖项(例如Java)的软件包,并且可以轻松安装。

我还需要能够在Windows环境下构建软件包,因为我的构建链中的某些工具仅限Windows。

5 个答案:

答案 0 :(得分:5)

首先看看类似项目是如何实现这一目标的。让人想起的是Freecol,这是一款基于Java的跨平台游戏。他们的download page有很多关于在许多平台上安装它的信息。他们还可以在诸如GetDEB之类的网站上为Ubuntu提供套餐,为{4}}提供适用于OpenSuse的网站。

通常,如果您想要尽可能多地分配,您应该考虑的格式(粗略的重要性):

  1. Ubuntu .deb(如果可以,还可以创建存储库)
  2. OpenSUSE .rpm或.ypm(1点击安装)
  3. Fedora .rpm
  4. .tar.gz预编译包
  5. 然后从源选项构建或使用尽力而为的二进制安装程序。最后,看看其他流行的发行版,如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) ,我还不知道其他任何事情。)