LPIC-1 Tema 108.4: gestión de impresoras e impresión en Linux

Siguiente entrega de las certificaciones LPIC-1, esta vez para tratar el tema 108.4, es decir, la gestión de impresoras e impresión en Linux. Las preguntas de los exámenes referentes a este tema buscan comprobar que los candidatos a administradores de sistemas saben cómo gestionar las impresoras y las colas de impresión usando CUPS y la interfaz de compatibilidad LPD.

Para ello, se necesitará tener los conocimientos básicos sobre la configuración del sistema CUPS, tanto para impresoras locales como impresoras remotas en red. También debes conocer cómo se pueden gestionar las colas de impresión, resolver problemas que puedan surgir y agregar/quitar tareas de impresión en la cola…

Introducción

Los viejos sistemas LPD que usaban algunos sistemas como UNIX System, o el BLPD de los BSD. En las primeras distro GNU/Linux se comenzó a usar una adaptación del original LPD heredad de BSD. Con él se podían gestionar impresoras tanto locales como remotas, con una función tipo cliente-servidor. Junto con Ghostscript, se completaba para una salida PostScript (estándar) que soportan los controladores de impresoras.

Es decir, cuando se ejecuta un comando para indicar que se imprima un documento, se iniciará un proceso para convertir ese documento a imprimir en una salida PostScript (PS) que se envía al a cola de impresión. En caso de que la impresora no soporte PS, Ghostscript interpreta el fichero PS y, según el controlador de la impresora, realizará otra conversión al formado adecuado para el firmware de dicha impresora.

Al llegar  a los década de los 80s, estos sistemas quedaron obsoletos, y no resultaban flexibles para los drivers tan diversos de las modernas impresoras. Por eso idearon algunos sistemas como LPRng (un fork del sistema de BSD) y CUPS (usa LPD como base).

Curiosidad, si usas el comando man lp en tu distro GNU/Linux, verás que el desarrollador actual de CUPS es Apple Inc. El motivo es que la empresa de Cupertino convirtió este sistema en su sistema de impresión para macOS, por lo que es el principal desarrollador, aunque la licencia no ha variado…

Desde el punto de vista del usuario, estos nuevos sistemas no se diferencian mucho de los primitivos, pero para el administrador sí que se nota el cambio en cuanto a configuraciones.

Bien, dicho esto, cuando alguien intenta imprimir un documento (texto, gráficos, o combinado), lo que ocurre es lo siguiente:

  1. El «spooler», o planificador, se pone en marca cuando se ha decidido usar un comando como lpr, o la opción de impresión de cualquier app para imprimir, el documento a imprimir se envía a una cola ubicada en /var/spool/cups/, junto con un fichero que describe la tarea a realizar.
  2. Luego, cuando el planificador ha entregado todos los datos, un subsistema (filtro) se encargará de transformar el formato del documento de impresión en un formato comprensible para el hardware de la impresora. Es decir, el filtro recibe el nombre de la cola de impresión, el job_ID de trabajo, el nombre de usuario que lo generó, número de copias y el propio nombre del fichero a imprimir. Para que eso sea posible, CUPS usa dos bbdd MIME, una llamada mime.types y otra mime.convs. La primera para los tipos de ficheros conocidos aceptados por CUPS (.odt, .txt, .pdf,…), y la segunda para definir las apps que deben procesar cada tipo de MIME particular. Una vez se detecta el tipo de fichero que es, se pueden tomar dos caminos:
    • Se convierte en PostScript (documentos): pasa por un pre-filtro para pasar a PostScript y se envía al backend de la impresora. Si la impresora no acepta PostScript, se pasa a otro filtro para transformarlo al formato soportado por el driver de la impresora.
    • Se convierte en datos rasterizados (imágenes): GhostScript lo transforma en un formato rasterizado CUPS-raster y luego lo pasa a un filtro final que lo pasa a datos rasterizados en un formato específico para la impresora.
  3. Backend: es la zona final de la cola de impresión, y no es más que otro filtro especial que transmite el nuevo formato a la forma adecuada hacia el periférico de impresión (si es local) o hacia la red (si es remota). En caso de ser para una impresora local, debe lidiar con los controladores de los puertos adecuados (p.e.: USB), y si es por red con los protocolos (IPP, HP JetDirect, SMB, etc.).
  4. Impresión: ahora la impresora recibe esos datos y el procesador de ésta se encargara de enviar las órdenes necesarias para mover el papel y realizar la impresión oportuna…

Sistema CUPS

Ahora que ya sabes qué es CUPS y algo sobre su funcionamiento, deberías saber cómo configurarlo. Aunque hay algunas herramientas que permiten hacerlo fácilmente de forma gráfica, CUPS también dispone de su propia interfaz web para administrar tus impresoras de manera intuitiva (http://localhost:631).

Si accedes a dicha dirección en cualquier navegador web, accederás a una sencilla interfaz web desde la que configurar todo el sistema de impresión usando un protocolo IPP que corre sobre HTTP.

Aunque se emplea un nuevo demonio llamado cups-lpd, por cuestiones de comodidad, CUPS sigue usando herramientas de sistemas LPD o LPRng, como verás en el siguiente apartado.

Te invito a entrar en la interfaz web e indagar sobre las opciones, creo que no merece demasiado la pena detallar más, ya que es bastante sencillo

CUPS no solo acepta impresoras físicas, también impresoras virtuales, como por ejemplo, para imprimir documentos en PDF (véase CUPS-PDF).

En lo que sí me voy a detener un poco más es en el fichero /etc/cups. El directorio donde se encuentran ficheros de configuración como alternativa a la interfaz web, y que es la más interesante de cara a las certificaciones LPI. Dentro del directorio encontrarás:

Estos ficheros usan un modelo de configuración Apache, con una sintaxis muy similar. Cuando examines el contenido, verás que están divididos en <sección> con una serie de opciones de configuración </sección>.

  • /etc/cups/cupsd.conf: es el fichero de configuración del demonio cupsd. Se puede configurar el acceso a la interfaz web, los usuarios que tienen permiso de administración de las impresoras, si se requiere o no autenticación, contraseñas, grupos de usuarios aceptados, IPs…
  • /etc/cups/printers.conf: control de definiciones de impresoras, donde añadir o quitar impresoras de forma manual.
  • /etc/cups/classes.conf: aquí se definen las clases, es decir, los grupos de impresoras.
  • /etc/cups/client.conf: donde se configuran las opciones de los clientes de impresión aceptados.
  • /etc/cups/mime.convs: lista de programas conversores para pasar un formato (tipo MIME) a otro. Por lo general, no deberías manipular este fichero de base de datos…
  • /etc/cups/mime.types: la otra base de datos, pero para indicar a CUPS cómo reconocer el tipo de fichero mediante magic numbers. Tampoco se debería manipular.

Una vez visto eso, vamos a ver las herramientas que se pueden usar para impresión, que son las «legacy»…

Herramientas LPD (legacy)

Como he dicho, CUPS sigue usando las mismas herramientas heredadas. Por tanto, deberías conocer su funcionamiento básico:

  • lpinfo: es un comando para mostrar información de los drivers o impresoras disponibles.
#Listar todos los dispositivos de impresión
lpinfo -v

#Listar todos los drivers
lpinfo -m

#Listar alguno específico
lpinfo --make-and-model "HP LaserJet Pro" -m
  • lpr: es el programa que envía trabajos al a cola de impresión gracias al demonio lpd.
#Imprimir un fichero llamado documento.txt del directorio actual
lpr documento.txt

#También puedes usar tuberías para dirigir la salida del concatenador a lpr
cat documento.txt | lpr

#E incluso redirigir el contenido de un fichero al dispositivo de impresión
cat documento.txt > /dev/lp0

#Imprimir 4 copias en la impresora HP DeskJet
lpr -#4 -sP hp_dj documento.txt
  • lprm: es el programa para eliminar un trabajo de la cola de impresión si aún no se ha impreso. Necesitarás usar el ID del trabajo que quieres eliminar.
#Eliminar el trabajo con ID 1 de la cola para una impresora específica
lprm -P hplaser6 1

#Eliminar todos los trabajos de la cola
lprm - 

#También puedes especificar el usuario
lprm -u john -P hplaser6 4
  • lpq: muestra los trabajos en la cola de impresión, mostrando el estado (Rank), el propietario, el job_ID, nombre del documento y tamaño.
#Mostrar los detalles de la cola
lpq -l

También existen otros comandos, aunque no son tan interesantes para estas certificaciones. No obstante, te invito a conocerlos: lpc (control de parámetros de impresión), lpmove (mover trabajos hadia otra impresora), lppasswd (añade, borra o cambia una contraseña de un usuario de CUPS), lpadmin (administrar impresoras locales y remotas), lpstat (mostrar el estado de las impresoras instaladas) y lpoptios (configura los parámetros por defecto para una impresora).

Isaac

Apasionado de la computación y la tecnología en general. Siempre intentando desaprender para apreHender.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

A %d blogueros les gusta esto:

Si continuas utilizando este sitio aceptas el uso de cookies. más información

Los ajustes de cookies de esta web están configurados para "permitir cookies" y así ofrecerte la mejor experiencia de navegación posible. Si sigues utilizando esta web sin cambiar tus ajustes de cookies o haces clic en "Aceptar" estarás dando tu consentimiento a esto.

Cerrar