… después de actualizar CUPS en una máquina Debian. ¿ Y qué es lo peor ? Que no tengo ni idea de dónde anotarlo una vez descubierto y resuelto.
El escenario inicial es un servidor de impresión funcionado bajo la versión Lenny de Debian con sus correspondientes actualizaciones de seguridad. También dispone del servicio LDP instalado para que una antigua -pero vital- máquina y sus programas puedan imprimir en el resto de las impresoras de la red.
Hoy teníamos actualización de seguridad así que me he puesto a ello. Al rato de hacerlo comienza a sonar el teléfono y llegan las primeras quejas: las facturas no salen. Entonces veo la luz y me doy cuenta de que existe un patrón. Que siempre que actualizo CUPS en esa máquina aparece el mismito error. ¿ Cómo he sido tan melón antes ? Ya sé qué ocurre.
Este servicio de impresión está en el puerto 515 y no dispone de un programa propio sino que está integrado en inetd. Reviso la configuración y en el archivo
/etc/inetd.conf
aparece la famosa línea
#<off>#printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd
que señala que el servicio está desactivado. Para solucionarlo basta con eliminar ese prefijo y reiniciar el servidor
inetd
.
¿ Por qué sucedía ? Pues porque el paquete en el que se incluye este servicio (
cups-bsd
) emplea la base de datos de configuración Debian y allí estaba indicado claramente que el servicio debe estar desactivado.
# debconf-show cups-bsd cups-bsd/setuplpd: false
Supongo que hace mucho tiempo le indiqué que no lo hiciese y luego se me olvidó por completo. Como las actualizaciones de seguridad no han sido muchas no llegaba a establecer la relación y los últimos años me limitaba a actualizar el programa, sufrir y detectar el problema y activar el servicio. Hoy le he echado un vistazo a los scripts que acompañan al paquete y he visto que en llamado prerm está la siguiente línea:
update-inetd --pattern cups-lpd --disable printer
Como este programa es ejecutado durante una actualización de paquete el servicio quedaba desactivado. Una vez que el paquete está instalado se ejecuta postinst que comprueba si la configuración guardada indica que tiene que activar y si es que no se ignora:
... db_get cups-bsd/setuplpd if [ "$RET" = "true" ]; then update-inetd --add 'printer stream tcp nowait lp /usr/lib/cups/daemon/cups-lpd cups-lpd' fi ...
Ha bastado con cambiarlo para que las próximas ocasiones no tenga que sufrir tanto.
¿ Y todo esto …
… debería ir en el wiki ? Es toda una pregunta. Este tipo de cuestiones son las que más trabajo dan para situar dentro de una estructura jerarquizada como yo quiero que sea mi wiki. Pero lo mismo tengo que habilitar un cajón para esto porque aumenta su número.
El hijoputa del CUPS lleva haciendo eso desde que estaba yo allí. Esperemos que eso lo solucione, aunque no tengo mucha fe.