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

标签 java rpm

我想为 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/

相关文章:

java - 如果用户不接受条款,则关闭应用程序的按钮

Java 代码约定 : Using 'default' as a variable name

centos - 如何使用 YUM 在 CentOS 中安装多个版本的兼容软件包

tcl - 当从 tcl 调用 rpmbuild 时,为什么 topdir 设置为其默认值?

java - 使用 Selenium Webdriver(使用 Java)测试没有 ID 的视频

java - Spring Boot 和 Thymeleaf Neko HTML 错误

java - 在java中搜索二维数组中的一系列值

node.js - 在AWS python elasticbeanstalk环境中安装requirejs优化器(nodejs)

java - 使用 Maven 在 Debian 上构建 RPM

centos - 如何制作基于arch的rpm规范将库安装到/usr/lib xor/usr/lib64?