Eu quero instalar o pdftk na minha máquina de desenvolvimento onde instalei (várias versões de) Java com SDKMAN! . Para cumprir a dependência default-jre-headless
de pdftk-java
, criei um arquivo simples para 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!
Eu então instalei o pacote com
equivs-build java-11-open
sudo dpkg -i sdkman-java-11-open_1.0_all.deb
Parece ter funcionado:
$ aptitude show default-jre-headless
Package: default-jre-headless
<snip>
Provided by: sdkman-java-11-open (1.0)
No entanto, a dependência ainda não foi atendida:
$ 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}
O mesmo com apt-get
. Isso está no Ubuntu 18.04.
O que eu fiz errado?
O pacote de David Foerster
pdftk-java
depende dedefault-jre-headless (>= 7) | java7-runtime-headless
; para satisfazer isso, você precisa de um pacote com uma versão “Provides” (paradefault-jre-headless
), ou um pacote que forneçajava7-runtime-headless
. (Acho que a dependência de versãodefault-jre-headless
está incorreta; os pacotes JDK/JRE padrão são pacotes concretos com uma época, então todos eles correspondem a isso e não devem ser usados para impor versões mínimas.)Você deve alterar seu
equivs
arquivo para fornecer os mesmos pacotes virtuais que os pacotes que está substituindo (openjdk-11-jre-headless
etc.), com pelo menos:(Você provavelmente não precisa fornecer o concreto
openjdk-11-jre-headless
e osopenjdk-11-jdk-headless
pacotes, mas eu os deixei para simplificar.)