【问题标题】:Izpack executable jar to RPMIzpack 可执行 jar 到 RPM
【发布时间】:2018-01-30 13:28:44
【问题描述】:

我正在尝试为使用 izpack 生成的可执行 jar 创建一个 rpm 包。它基本上是一个安装向导,允许用户安装工具/软件。它提供了一个可执行的 jar。所以我们必须这样做

Java -jar 文件.jar

初始化向导。我试图在 Linux 中通过创建一个带有这个 jar 的 rpm 和一个执行这个 jar 并在我执行 rpm 文件时运行 sh 文件的 sh 文件来在 Linux 中自动化它。我是 rpmbuild 新手,所有在线教程都是关于将特定 jar 从 rpm 文件复制到目标位置,而不是关于如何执行它。

谁能给我一个示例规范文件,它执行以下操作

使用 .jar 和 .sh 创建一个 rpm 文件 当执行 rpm -i file.rpm 时,它会运行 .sh 文件,该文件又会执行 jar 并打开向导。

我愿意接受有关如何使 jar 自动执行的任何其他建议。我基本上是在尝试为 linux 创建一个类似的 exe 文件

提前致谢。

【问题讨论】:

    标签: java rpm rpmbuild rpm-spec


    【解决方案1】:

    出于各种原因,我强烈建议不要这样做,因为这与 RPM 应该做的完全相反。您应该改为在构建机器(作为非 root 用户!),然后捕获要安装的文件。

    为什么你的方法是个坏主意?

    • 安装脚本对用户是隐藏的(他们不能只查询 RPM 脚本来查看您对他们的系统所做的除了文件之外的更改)
    • 最终安装的文件不会以任何方式控制,例如您将无法验证它们是否已损坏 (rpm -V) 或查询安装它们的软件包 (@ 987654322@)
    • “删除”或“升级”包实际上不会任何事情,除非您编写详细的脚本来处理所有这些未知文件
    • 我没有列出的所有其他原因是您使用包管理器而不是像我们在黑暗时代那样盲目地分发 tarball 分发包

    也就是说,如果你坚持要破坏东西,你的解决方案是将java安装调用放在%post中,这将在文件安装后执行。当您升级软件包时它会再次调用它,因此其他安装程序需要处理它。但同样,这不是正确的方法

    【讨论】:

    • 是的,我最终想通了。相反,我在生成的 jar 中添加了一个脚本头来自动执行 jar 并创建一个运行文件。
    猜你喜欢
    • 2020-10-15
    • 2013-12-23
    • 1970-01-01
    • 1970-01-01
    • 2014-04-07
    • 2014-10-02
    • 2023-03-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多