繁体   English   中英

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

[英]How to create a RPM package with Redline RPM Java library?

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

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

最后,我发现其中有一个Ant任务红线RPM纯Java库,有一个例子在这里 我仍然不明白如何使用它。 我了解几个基本字段(组、版本、发布、名称)的作用,我知道我必须使用“depends”来表示我的游戏至少需要 Java 1.7 但我不知道如何处理我的JAR,在哪里放置桌面快捷方式的 .desktop 文件,以及在哪里放置调用主类来运行我的游戏的 bash 脚本。 作为第一步,我想创建一个二进制包。 在这里找到了另一个使用这个库的例子。 我是否也必须提供卸载脚本? 我应该使用安装后脚本将 .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);

红线 maven 依赖

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

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

PS:顺便说一句,我现在使用我自己的工具(它在引擎盖下使用 Redline RPM),它是完全文档化的免费软件(在 GPL 下)并且也适用于 DEB、APP 和 EXE(通过 NSIS),它被称为Java Native部署工具包

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM