簡體   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