java - 如何在 Debian deb 包中配置 Java 7 或 Java 8 依赖项?

标签 java linux debian deb dpkg

我正在为我们的专有软件构建一个 Debian *.deb 包。 该软件是基于 Java 的,所以我认为如果 deb 包首先检查已安装的 Java 包会更好。

Package: [[name]]
Version: [[version]]
Section: non-free
Priority: low
Architecture: all
Description: [[description]]
Maintainer: company <email @ address>
Homepage: http://product.website
Depends: java7-runtime-headless

问题:

  • 如果安装了 Oracle JDK 7,这将失败。看起来这只会检查 OpenJDK 7 包。 我如何检查 Java 包、Oracle 和 OpenJDK?
  • 如果安装了 OpenJDK 8,这将失败,但它不应该。我们的软件使用 Java 7 和 Java 8 运行。我如何检查是 JDK 7 还是 JDK 8?

总结:如何配置我的包的 Depends: 部分,以便 dpkg 检查版本 7 或 8 中的任何 Java/JDK 包?

最佳答案

要检查“任何”Java/JDK 包,您可以在 Depends: 行中使用管道符号 ("|")。例如,这是 Jessie 中 tomcat7-common 包的行:

Depends: libtomcat7-java (>= 7.0.56-3), default-jre-headless | java6-runtime-headless | java6-runtime | java-6-runtime

但是,请注意,如果您使用 Depends: 行,dpkg 只会认为它知道的包满足它。如果有人安装 Oracle Java 或其他供应商的 JDK,但没有使用 dpkg,或者如果 .deb 没有在 Provides 中列出正确的关键字: 行,它不会工作。因此,您最好使用 Suggests:Recommends: 行。

关于java - 如何在 Debian deb 包中配置 Java 7 或 Java 8 依赖项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36181613/

相关文章:

linux - "perf stat"为 ARCH Linux ARM 上的所有事件返回 <not supported>

php - 使用 shell_exec() 重启服务器?

php - 无法在 Xdebug 客户端和服务器之间建立连接

java - 打印 JscrollPane 对象

java - 如何在FtpMessageHandler中设置目标目录?

c++ - 我可以使用 CLang 和 libstdc++ (emmintrin.h)

bash - .deb package postinst 调用包中的另一个脚本

python - 为什么 `pip list` 不显示 `apt` 在 Debian/Ubuntu 上安装的所有 Python 软件包?

java - 如何使用 Java(Fx) 从自定义 UI 面板创建/操作数据库和表?

java - 自定义身份验证过滤器 Spring Security 3.2