[英]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.