我想为 my Java game 创建一个 RPM 包(目前打包为 JAR + JNLP 文件)。我使用 Ant 作为构建工具。我不能使用依赖于平台的工具,因为使用我的源代码的少数开发人员使用多个操作系统,不一定是 GNU Linux,不像我。
起初,我尝试使用JDIC但是它的源代码多年来一直没有维护,我不得不修改大量的东西才能让它重新编译。此外,它只是在后台调用 native RPM 工具。然后,我找到了RPM Ant task但它也在后台使用 native RPM 工具。之后,我找到了RPM Maven plugin但我现在不想为了创建 RPM 包而切换到另一个构建工具。
最后,我找到了 Redline RPM 纯 Java 库,它有一个 Ant 任务,有一个例子 here .我仍然不明白如何使用它。我了解一些基本字段(组、版本、发布、名称)的作用,我知道我必须使用“依赖”来表示我的游戏至少需要 Java 1.7,但我不知道如何处理我的JAR,将桌面快捷方式的 .desktop 文件放在哪里,以及调用主类运行我的游戏的 bash 脚本放在哪里。作为第一步,我想创建一个二进制包。我找到了另一个使用这个库的例子 here .我是否也必须提供卸载脚本?我应该使用安装后脚本将 .desktop 文件复制到桌面目录中吗?我应该为第三方库使用 tarfileset 吗?我知道将 JAR 放入多个 RPM 会更好,但我想在做更详细但更干净的事情之前成功地做一些简单的事情。
最佳答案
我写了一个关于如何使用redline的简单教程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);
红线maven依赖
<dependency>
<groupId>org.redline-rpm</groupId>
<artifactId>redline</artifactId>
<version>1.2.1</version>
</dependency>
关于java - 如何使用 Redline RPM Java 库创建 RPM 包?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22770027/