3

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

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

Webstart 不是一种可接受的方式,.tar.gz 是最后的手段。我更喜欢具有正确定义的依赖项(例如 Java)并且易于安装的包。

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

4

5 回答 5

5

首先看看一个类似的项目是如何实现这一目标的。浮现在脑海中的是Freecol,这是一款基于 Java 的跨平台游戏。他们的下载页面上有关于在多个平台上安装它的相当清晰的信息。他们还在诸如GetDEB for Ubuntu 和PackMan for OpenSuse 等网站上提供软件包。

通常,如果您想访问尽可能多的发行版,您应该考虑的格式是(按重要性的粗略顺序):

  1. Ubuntu .deb(如果可以,也创建一个存储库)
  2. OpenSUSE .rpm 或 .ypm(一键安装)
  3. Fedora .rpm
  4. .tar.gz 预编译包

然后是从源代码构建选项,或尽力而为的二进制安装程序。最后,看看其他流行的发行版,例如 Debian、Mandriva 和 BSD

一旦特定平台的包存在,您可能希望考虑将其接受到该发行版中。这将使用户更容易找到和获取。可以在此处找到有关 ubuntu 进程的信息:

(编辑:更好的列表,感谢 Jonik 的建议。)

于 2009-05-22T10:43:42.093 回答
2

看看零安装 ( http://0install.net/ )。

  • 任何人都可以安装软件

您不必成为管理员即可安装文字处理器 [ 更多 ]

  • 任何人都可以分发软件

您无需获得发行版(或其他任何人)的祝福即可成为零安装的一部分;该系统是完全去中心化的 [更多]

  • 自动更新

当更新可用时,零安装会通知您[更多]

  • 安全

如果一个用户下载了恶意程序,其他用户不受影响;用户无需相互信任即可共享下载;安装不执行任何下载的代码;在新软件发布之前总是检查数字签名

于 2009-05-23T16:44:32.560 回答
1

你可以使用 Ubuntu 的 deb 系统。它将帮助您正确标记依赖项。

此处提供了包装指南。

于 2009-05-22T10:09:45.343 回答
1

好问题 - 我不知道答案(而且我想没有一个简单的、包罗万象的解决方案),但从 Linux 用户的角度来看,这里有一些需要考虑的点。

我认为 .tar.gz(或 .tar.bz2)不一定那么糟糕。Linux 用户已经习惯了,例如许多商业软件包都是以这种方式分发的。如果主要目的是在某个位置提取文件,它通常会胜过图形 Windows 样式的安装程序。

一些(也许很多?)用户在包管理系统之外安装了 JRE,因此仅提供 RPM 或 deb(这取决于将 JRE 安装为 RPM 或 deb)可能会有问题。(我个人更喜欢在 . 下安装几个 JRE 版本(实际上是 JDK)/usr/local/java。)所以至少考虑提供一个 zip/gz/bz2 包以及其他选项。

此外,要了解如何创建 Java 软件的 RPM 包,请查看JPackage

于 2009-05-22T10:44:32.967 回答
1

每个发行版都可能有自己的通用文件去向的约定。
在 Ubuntu 中,常见的 java jar 进入 /usr/share/java。存在诸如 commons-cli 和 liblog4j 之类的东西。如果您使用其中任何一个,请确保您的 deb 依赖于适当的包。如果该库在您的应用程序之外使用,但不在 Ubuntu 存储库中,请考虑将其放在自己的 deb 中并依赖于此。您需要在 /usr/share/[name]/ 中为您的特定游戏 jar 创建一个文件夹,然后创建一个 shell 脚本来启动游戏。这个脚本应该放在 /usr/bin(或 /usr/games)并且是可执行的。

不要忘记依赖适当的 java 包(我建议 sun-java#-jre 包,因为 gjc 是废话,而 open-jdk 还不是 100%)(至少 METAL LaF 是 fubar,我不还不知道其他任何事情。)

于 2009-05-22T13:15:16.903 回答