Descripción del problema
En Ubuntu 14.04 se encontraron problemas al imprimir a la Impresora PDF
(PDF Writer, provista por el paquete cups-pdf
).
El problema es que de un momento a otro dejan de generarse los PDF’s en la
carpeta $HOME/PDF
sin ningún mensaje de error.
Se puede imprimir en otras impresoras (en papel) sin problemas.
Esto ocurre en un sistema con autenticación por LDAP y utilizando nscd
Para que los PDF’s se almacenen en
$HOME/PDF
en lugar de su ubicación por defecto,/var/spool/cups-pdf/${USER}
, se configuracups-pdf
agregando en el archivo/etc/cups/cups-pdf.conf
la lineaOut ${HOME}/PDF
Diagnóstico
Se envía una página de prueba utilizando la interfaz web, http://127.0.0.1:631.
Se revisan los logs de CUPS disponibles en /var/log/cups
y documentados en
la página del manual de
cupsd:
-
/var/log/cups/access_log
:localhost - - [01/Aug/2018:11:29:15 -0300] "POST / HTTP/1.1" 200 152 Cancel-Subscription successful-ok localhost - - [01/Aug/2018:11:29:23 -0300] "POST / HTTP/1.1" 200 257 Create-Printer-Subscriptions successful-ok localhost - - [01/Aug/2018:11:29:29 -0300] "POST /printers/PDF HTTP/1.1" 200 409 Print-Job successful-ok
Lo anterior corresponde al envío de la impresión de prueba a la Impresora PDF, con estado
successful
. -
/var/log/cups/error_log
: sin cambios. -
/var/log/cups/page_log
:PDF joe 437 [01/Aug/2018:11:29:30 -0300] 1 1 - localhost Test Page - -
El log indica que fué impresa la página Test Page enviada por el usuario joe.
La pista del diagnóstico viene del archivo /var/log/cups/cups-pdf_log
,
generado por cups-pdf
:
Wed Aug 1 11:29:30 2018 [STATUS] ***Experimental Option: DecodeHexStrings
Wed Aug 1 11:29:30 2018 [STATUS] PDF creation successfully finished (nobody)
Aquí el texto nobody hace referecia al nombre de usuario dado a CUPS-PDF que debería ser el mismo que envió la página, joe.
Leyendo las opciones en /etc/cups/cups-pdf.conf
, nobody corresponde al
valor por defecto de la opción AnonUser:
### Key: AnonUser
## uid for anonymous PDF creation (this might be a security issue)
## this setting has no influence on AnonDirName (see there)
## set this to an empty value to disable anonymous
### Default: nobody
Esto es, por algún motivo no se pasó correctamente el nombre de usuario al
backend cups-pdf
.
Para confirmar que el archivo PDF se está generando se puede ver el directorio
/var/spool/cups-pdf/ANONYMOUS
, que es donde se envian (por defecto) los
PDF’s creados anonimamente.
Para confirmar que el problema está dado por una falla de nscd
, se corrobora
que el demonio está bajo ejecutando service nscd status
y se debe obtener
como salida:
* Status of Name Service Cache Daemon service:
* not running.
Solución
Levantar el demonio nscd
utilizando service nscd start
.
Se debe comprobar que el demonio quede ejecutando utilizando nuevamente
service nscd status
.
Si el demonio no está levantado esto suele deberse a que los archivos utilizados
por nscd
(el caché) están corruptos.
Para solucionar lo anterior borrar los archivos del caché de nscd
, levantar
el demonio y comprobar que ahora si está funcionando:
$ sudo rm -fr /var/cache/nscd/*
$ sudo service nscd start
$ sudo service nscd status