我想在我的开发机器上安装 pdftk,我已经使用SDKMAN 安装了(多个版本的)Java!. 为了满足对default-jre-headless
of的依赖pdftk-java
,我创建了一个简单的文件equivs-build
:
Section: misc
Priority: optional
Homepage: https://github.com/reitzig/sdkman-equivs
Standards-Version: 3.9.2
Package: sdkman-java-11-open
Maintainer: Raphael Reitzig <[email protected]>
Provides: openjdk-11-jre-headless, openjdk-11-jdk-headless, openjdk-11-source, default-jdk-headless, default-jre-headless
Conflicts: openjdk-11-jre-headless, openjdk-11-jdk-headless, openjdk-11-source
Replaces: openjdk-11-jre-headless, openjdk-11-jdk-headless, openjdk-11-source
Architecture: all
Description: Dummy package for OpenJDK 11 installed with SDKMAN!
然后我安装了这个包
equivs-build java-11-open
sudo dpkg -i sdkman-java-11-open_1.0_all.deb
似乎奏效了:
$ aptitude show default-jre-headless
Package: default-jre-headless
<snip>
Provided by: sdkman-java-11-open (1.0)
但是,仍然没有满足依赖关系:
$ sudo aptitude update > /dev/null; sudo aptitude install pdftk
The following NEW packages will be installed:
default-jre-headless{a} java-common{a} libapache-pom-java{a} libbcprov-java{a} libcommons-lang3-java{a}
libcommons-parent-java{a} pdftk pdftk-java{a}
与 相同apt-get
。这是在 Ubuntu 18.04 上。
我做错了什么?
David Foerster 的
pdftk-java
包依赖于default-jre-headless (>= 7) | java7-runtime-headless
; 为了满足这一点,你需要一个带有版本化“Provides”(fordefault-jre-headless
)的包,或者一个提供java7-runtime-headless
. (我认为版本依赖default-jre-headless
是不正确的;默认的 JDK/JRE 包是具有纪元的具体包,因此它们都匹配,并且它们不应该用于强制执行最小版本。)您应该更改您的
equivs
文件以提供与您要替换的包相同的虚拟包(openjdk-11-jre-headless
等),至少:(您可能不需要提供具体
openjdk-11-jre-headless
和openjdk-11-jdk-headless
包,但为了简单起见,我将它们留在了里面。)