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

时间:2014-03-31 19:04:49

标签: java rpm

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

起初,我尝试使用JDIC,但其源代码已经维护多年,我不得不修改大量内容以使其重新编译。而且,它只是调用本机RPM工具。然后,我找到RPM Ant task但它也使用了本机RPM工具。之后,我找到RPM Maven plugin,但我现在不想切换到另一个构建工具来创建RPM包。

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

2 个答案:

答案 0 :(得分:3)

我写了一个关于如何使用红线here

的简单教程

基本上你需要做的就是建立一个空的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依赖

<dependency>
    <groupId>org.redline-rpm</groupId>
    <artifactId>redline</artifactId>
    <version>1.2.1</version>
</dependency>

答案 1 :(得分:1)

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

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