Solución:
El paquete pdftk en Ubuntu (y su paquete Debian ascendente) se eliminó debido a su dependencia del tiempo de ejecución GCJ ahora obsoleto. Encontré una bifurcación que depende de OpenJDK o similar.
Instalar desde una versión futura de Ubuntu (recomendado)
Comenzando con Cosmic (Ubuntu 18.10), Ubuntu se envía pdftk-java
del mismo código fuente que se muestra a continuación como reemplazo. Intentando instalar pdftk
instalará este paquete en su lugar. Los usuarios de versiones anteriores pueden descargarlo manualmente desde el repositorio de paquetes e instalarlo con su administrador de paquetes favorito.
Instalar desde PPA (anticuado)
Construí un paquete Deb (solo para Bionic) con las dependencias adecuadas:
sudo add-apt-repository ppa:malteworld/ppa
sudo apt update
sudo apt install pdftk
El paquete contiene un script contenedor colocado en /usr/bin
, para que pueda invocarlo normalmente:
pdftk ...
Instalar desde la fuente
-
Instale las herramientas de compilación y las dependencias:
sudo apt install git default-jdk-headless ant libcommons-lang3-java libbcprov-java
Por supuesto, puede utilizar un JDK compatible diferente al suministrado por
default-jdk-headless
. -
Descarga la bifurcación pdftk de Marc Vinyal:
git clone https://gitlab.com/pdftk-java/pdftk.git cd pdftk
-
Coloque enlaces simbólicos a las bibliotecas requeridas en el
lib
carpeta:mkdir lib ln -st lib /usr/share/java/commons-lang3,bcprov.jar
-
Construye el paquete JAR:
ant jar
-
Ejecute el paquete JAR:
java -jar build/jar/pdftk.jar --help
-
(Opcional) Para ejecutar el paquete JAR, por ejemplo, cuando lo distribuye a otros sistemas, necesita al menos un JRE funcional (sin cabeza) como el de
default-jre-headless
paquete, así como las bibliotecas de Javalibcommons-lang3-java
ylibbcprov-java
:sudo apt install default-jre-headless libcommons-lang3-java libbcprov-java
Nuevamente, puede usar un JRE diferente al
default-jre-headless
. Esta bifurcación pdftk también admite compilaciones para versiones anteriores de JRE (≥ 7 según la documentación). -
(Opcional) Puede enseñar a Linux a ejecutar archivos JAR (Java Archive) a través de
update-binfmts(8)
. La mayoría de los JRE enviados en paquetes Deb, incluidos los que se encuentran en los repositorios de paquetes de Canonical, se encargan de eso durante la instalación, aunque parece tener errores en algunos paquetes de OpenJDK.
PD: Probé esto con OpenJDK 9 sin cabeza en Ubuntu Trusty, pero veo pequeñas razones por las que no debería funcionar con OpenJDK 10 sin cabeza en Bionic.
Dependiendo de las aplicaciones
Un comentarista planteó la pregunta válida si el Cadena PDF las aplicaciones se ven afectadas por este cambio:
- No, Cadena PDF es una aplicación de C ++ y no se ve afectada directamente por la desaprobación de GCJ. Necesita un trabajo pdftk ejecutable pero no le importa cómo funciona bajo el capó. En todo caso, Cadena PDF fue eliminado de Bionic así como pdftk.
Para Ubuntu 18.04, simplemente instale el paquete pdftk snap:
sudo snap install pdftk
Instalación de pdftk en Ubuntu 18.04 amd64
Escribí un pequeño script bash que automatiza la instalación en Ubuntu 18.04. Tenga en cuenta que he descargado solo amd64 paquetes!
#!/bin/bash
#
# author: abu
# date: July 3 2019 (ver. 1.1)
# description: bash script to install pdftk on Ubuntu 18.04 for amd64 machines
##############################################################################
#
# change to /tmp directory
cd /tmp
# download packages
wget http://launchpadlibrarian.net/340410966/libgcj17_6.4.0-8ubuntu1_amd64.deb
http://launchpadlibrarian.net/337429932/libgcj-common_6.4-3ubuntu1_all.deb
https://launchpad.net/ubuntu/+source/pdftk/2.02-4build1/+build/10581759/+files/pdftk_2.02-4build1_amd64.deb
https://launchpad.net/ubuntu/+source/pdftk/2.02-4build1/+build/10581759/+files/pdftk-dbg_2.02-4build1_amd64.deb
echo -e "Packages for pdftk downloadednn"
# install packages
echo -e "nn Installing pdftk: nn"
sudo apt-get install ./libgcj17_6.4.0-8ubuntu1_amd64.deb
./libgcj-common_6.4-3ubuntu1_all.deb
./pdftk_2.02-4build1_amd64.deb
./pdftk-dbg_2.02-4build1_amd64.deb
echo -e "nn pdftk installedn"
echo -e " try it in shell with: > pdftk n"
# delete deb files in /tmp directory
rm ./libgcj17_6.4.0-8ubuntu1_amd64.deb
rm ./libgcj-common_6.4-3ubuntu1_all.deb
rm ./pdftk_2.02-4build1_amd64.deb
rm ./pdftk-dbg_2.02-4build1_amd64.deb
Este script descargará los paquetes a /tmp
e instalar desde allí usando un apt install
¡mando! Posteriormente, los paquetes en el /tmp
Se eliminará el directorio.
Para ejecutar este script, cópielo en un editor y guárdelo, por ejemplo. pdftk_installer. Luego ejecútelo en una terminal con
chmod 755 pdftk_installer
./pdftk_installer
Instalación de pdftk en Ubuntu 20.04 amd64
El script anterior fallará debido a que faltan bibliotecas gcc-6 en Ubuntu 20.04. Sin embargo, aquellos que deseen evitar la solución snap o docker pueden usar schroot. Sé que se trata de una sobrecarga considerable: se necesitan unos 500 MB; pero puede utilizar este entorno para instalar más programas antiguos, bibliotecas, compiladores, etc. en el entorno Xenial (Ubuntu 16.04).
Primero instale el schroot
paquete
sudo apt install schroot debootstrap
Se requiere el último paquete para instalar un sistema similar a Debian. Ahora escribe un xenial.conf
archivar en el /etc/schroot/schroot.d
directorio:
cat < [xenial]
> description=Ubuntu 16.04
> directory=/srv/chroot/xenial
> root-users=$USER
> type=directory
> users=$USER
> EOF
Verifique que el nuevo archivo conf esté escrito
cat /etc/schroot/chroot.d/xenial.conf
A continuación, cree el directorio xenial (si elige otro directorio, modifique el archivo conf anterior):
sudo mkdir -p /srv/chroot/xenial
Ahora comienza el espectáculo, mientras se instala, vaya a tomar un café:
sudo debootstrap xenial /srv/chroot/xenial
El sistema de archivos xenial ahora está disponible en /srv/chroot/xenial
.
Ahora es el momento de incluir los repositorios de xenial apt necesarios. Para hacerlo, escriba
cat <
Vuelva a comprobar que el archivo /srv/chroot/xenial/etc/apt/sources.list
existe
cat /srv/chroot/xenial/etc/apt/sources.list
Es hora de ingresar al xenial schroot (nota: ¡no se necesitan privilegios de root!) Y actualizar el apt
schroot -c bionic -u root apt-get update
Finalmente, está listo para instalar el pdftk package
:
schroot -c xenial -u root apt-get install pdftk
Puedes usar pdftk
invocándolo a través del schroot:
schroot -c xenial -- pdftk
Por ejemplo, para mostrar el tipo de menú de ayuda.
schroot -c xenial -- pdftk --help
Por último, sugiero crear un alias para pdftk en su .bashrc
expediente:
Primero haga una copia de su .bashrc
cp ~/.bashrc ~/.bashrc_backup
y luego agrega un alias
echo alias pdftk='schroot -c xenial -- pdftk' >> ~/.bashrc
Ahora puedes usar pdf
como de costumbre en tu fiesta. Para probar, abra una nueva terminal y escriba
pdftk --version
Si tiene que instalar otros programas anteriores como tuve que hacer, use los comandos apt similares a los descritos anteriormente.
Tenga en cuenta que todos los comandos junto al apt-get
y el xenial.config
se ejecutan con privilegios de usuario.
Nos puedes añadir valor a nuestro contenido informacional participando con tu veteranía en las explicaciones.