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/PDFen lugar de su ubicación por defecto,/var/spool/cups-pdf/${USER}, se configuracups-pdfagregando en el archivo/etc/cups/cups-pdf.confla 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-okLo 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