izpack 可执行 jar 到 RPM

Izpack executable jar to RPM

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

Java-罐子file.jar

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

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

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

我愿意接受有关如何使 jar 自动执行的任何其他建议。我基本上是在尝试为 linux

创建一个类似 exe 的文件

提前致谢。

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

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

  • 安装脚本对用户是隐藏的(他们不能只查询 RPM scriptlet 来查看除了文件之外您对他们的系统做了哪些更改)
  • 最终安装的文件将不受任何方式控制,例如您将无法验证它们是否已损坏(rpm -V)或查询安装了哪些包(rpm -q --whatprovides /path/to/file)
  • "Removing" 或 "Upgrading" 除非您编写详细的脚本来处理所有这些未知文件,否则该软件包实际上 不会执行 任何操作
  • 我没有列出的所有其他原因就是为什么您使用包管理器而不是像我们在黑暗时代所做的那样盲目分发 tarball 发行版

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