如何使用Redline RPM Java库创建RPM包?

我想为我的Java游戏创建一个RPM包(目前打包为JARs + JNLP文件)。 我使用Ant作为构建工具。 我不能使用依赖于平台的工具,因为使用我的源代码的少数开发人员使用多个操作系统,不一定是GNU Linux。

起初,我尝试使用JDIC,但它的源代码已经多年没有维护了,我不得不修改大量的东西,只是为了让它重新编译。 而且,它只是调用本机RPM工具。 然后,我找到了RPM Ant任务,但它也使用了本机RPM工具。 之后,我发现了RPM Maven插件,但我现在不想切换到另一个构建工具来创建RPM包。

最后,我发现Redline RPM纯Java库有一个Ant任务,这里有一个例子。 我仍然不明白如何使用它。 我理解一些基本字段(组,版本,发布,名称)的作用,我知道我必须使用“依赖”来表示我的游戏至少需要Java 1.7但我不知道如何处理我的JAR,在哪里放置.desktop文件用于桌面快捷方式以及放置调用主类的bash脚本来运行我的游戏。 作为第一步,我想创建一个二进制包。 我在这里找到了另一个使用这个库的例子。 我是否还必须提供卸载脚本? 我应该使用postinstall脚本将.desktop文件复制到桌面目录中吗? 我应该为第三方库使用tarfileset吗? 我知道将JAR放入几个RPM会更好,但我想在做更精细但更清洁的事情之前成功做一些简单的事情。

我在这里写了一个关于如何使用redline的简单教程

基本上你要做的就是建立一个空的rpm是:

 org.redline_rpm.Builder builder = new Builder(); File directory = new File("."); builder.setType(RpmType.BINARY); builder.setPlatform(Architecture.X86_64, Os.LINUX); builder.setPackage("name", "1", "1"); builder.setDescription("Description"); builder.setSummary("Summary"); builder.build(directory); 

您可以添加对某些命令的依赖:示例

 builder.addDependencyMore("tar", "0"); builder.addDependencyMore("python", "0"); builder.addDependencyMore("wget", "0"); 

然后,您也可以添加一些预安装脚本或安装后脚本和文件。

 builder.setPostInstallScript(xxx); File tarball = new File("/the/dir/of/your/file/file.tar.gz"); builder.addFile("/where/to/put/it/file.tar.gz", tarball); 

Redline maven依赖

  org.redline-rpm redline 1.2.1  

我在这里解决了我的问题。 我只需添加一个简短的脚本来运行该应用程序。

PS:顺便说一句,我现在使用我自己的工具(它使用引擎盖下的Redline RPM),它是完全记录的,开源(在GPL下)并且也适用于DEB,APP和EXE(通过NSIS),它被称为Java Native部署工具包 。