我有一个 .deb 包,其中包含一个需要 Java 才能运行的应用程序。但是,我不在乎他们安装了哪个实现(例如 OpenJDK、IcedTea、Oracle),而且我不想强迫用户在安装了另一个实现时下载另一个实现。我还想处理用户没有安装任何实现的情况。
有没有办法表明 .deb 包需要任何 Java 实现?如果是这样,如果没有安装任何实现,我该如何处理它们?
指示.deb
包需要 Java 运行时环境(JVM,而不是 JDK)的标准方法是指定对default-jre
或的依赖项default-jre-headless
(前者用于具有 GUI 的程序,后者用于不需要 GUI 的程序),以及对适当版本java-runtime
(java6-runtime
如果您的应用程序使用 Java 6 或更高版本,java7-runtime
Java 7 或更高版本等):
Depends: default-jre | java6-runtime
Run Code Online (Sandbox Code Playgroud)
或者
Depends: default-jre-headless | java6-runtime-headless
Run Code Online (Sandbox Code Playgroud)
等等。
这将处理所有 Debian 提供的 JRE(或 Debian 衍生产品)以及 Oracle JRE(如果它们是使用java-package
. default-jre
取决于默认的 JRE(用于 Debian 8 的 OpenJDK 7、用于 Debian 9 的 OpenJDK 8、用于 Debian 10 的 OpenJDK 11),所以如果没有安装其他 JRE,这可以确保安装了 JRE。各种 JRE 包java-runtime
根据其支持级别提供变体,因此这意味着将使用任何现有的、兼容的 JRE,适当打包,而不是强迫用户安装另一个 JRE。
如果您真的想支持任何已安装的 JRE,包括手动安装的、未打包的 Oracle JRE,您只能在包的“推荐”节中使用上述内容,然后尝试java
从您的启动脚本运行。理想情况下,你应该检查是否有JRE在安装时存在(在postinst
,但要确保你没有失败,如果没有JRE找到了安装),每当你需要运行java
-这可能是复杂的,如果你的包中包含的启动脚本或 systemd 单元等(复杂的是,如何通知管理员出现问题并不明显,但您可以肯定会注意到和理解)。
归档时间: |
|
查看次数: |
1228 次 |
最近记录: |