I am building a Debian *.deb package for our proprietary software. The software is Java based, so I thought it would be good if the deb package checks for an installed Java package first.
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
Problems:
- This fails if an Oracle JDK 7 is installed. It seems as this would only check for the OpenJDK 7 package. How can I check for both Java packages, Oracle AND OpenJDK?
- This fails if OpenJDK 8 is installed but it shouldn’t. Our software runs with Java 7 and Java 8. How can I check for either JDK 7 OR JDK 8?
Summary: How can I configure the Depends:
section of my package so dpkg
checks for ANY Java/JDK package in version 7 or 8?
Advertisement
Answer
To check for “ANY” Java/JDK package, you can use the pipe symbol (“|
“) in the Depends:
line. For example, here’s the line for the tomcat7-common
package in Jessie:
Depends: libtomcat7-java (>= 7.0.56-3), default-jre-headless | java6-runtime-headless | java6-runtime | java-6-runtime
However, note that if you use a Depends:
line, dpkg
will only consider it satisfied by packages that it knows about. If someone installs Oracle Java, or some other vendor’s JDK, without using dpkg
, or if the .deb
doesn’t list the right keywords in a Provides:
line, it won’t work. So, you might be better off with a Suggests:
or Recommends:
line.