Las distintas implementaciones de UNIX soportan la impresión de forma distinta.
Históricamente, para imprimir un documento teníamos que saber si estábamos en un sistema tipo BSD, SystemV, o AIX.
El mundo era de las impresoras de línea de puerto serie y todos los trabajos de impresión eran trabajos que se enviaban a una cola, del que un daemon los sacaba.
Con el tiempo, algunos sistemas han pasado a soportar ambas familias de comandos de impresión. En especial AIX ha incorporado un sistema completo de impresión System V.
En Linux ha surgido un sistema moderno de impresión llamado CUPS que acepta la realidad de que ahora mismo la mayoría de impresoras son dispositivos complejos con su propia dirección de red, por las que comunicarse por un protocolo Cliente/Servidor.
Comandos BSD
El sistema BSD se basa en que hay un daemon llamado lpd, al que los usuarios llaman con el comando lpr.
- Imprimir: Para imprimir un fichero en un sistema tipo BSD hay que usar el comando lpr.
lpr [argumentos] ficherolpr [argumentos]Si imprimimos a la impresora por defecto $lpr fichero.txtSi imprimimos a otra impresora $lpr -Pprinter fichero.txtSi no queremos que se imprima el banner $lpr -Pprinter -h fichero.txt
- Para ver los trabajos de impresión: lpq -Pprinter
- Para cancelar un trabajo: lprm -Pprinter 11042
- Para ver las opciones e impresoras configuradas está el fichero /etc/printcap.Las impresoras se pueden definir como de texto o de postscript. Entonces si vamos a imprimir texto hay que elegir una impresora de texto
Yo tuve que configurar /etc/printcap en el difunto Digital UNIX y soportar una impresora local de línea para una máquina AlphaServer. Una impresora tenía una pinta como esta:
printer|PLJ-H1998:\ :lp=/dev/null:\ :sd=/var/spool/lpd/PLJ-H1998:\ :lf=/var/spool/lpd/PLJ-H1998/errores:\ :if=/var/spool/lpd/PLJ-H1998/filtro_entrada:\ :mx#0:\ :sh:\ :sf: |
¿Qué significan los campos en /etc/printcap?
sd ------------ Spool directory sd=/var/spool/lpd/howler-lw
lf ------------ Error log file lf=/var/log/lpr
lp ------------ Device name lp=/dev/lp0
af ------------ Accounting file af=/usr/adm/lpr.acct
rm ------------ Remote machine name rm=beast.xor.com
rp ------------ Remote printer name rp=howler-lw
of ------------ Output filter of=/usr/libexec/lpr/lpf
if ------------ Input filter if=/usr/sbin/stylascii
mx ------------ Maximum file size mx#0
sh ------------ Suppress headers s
Comandos System V
- Imprimir: Para imprimir en un sistema tipo System V (Solaris) hay que utilizar lp
lp [argumentos] ficherolp [argumentos]Si imprimimos a la impresora por defecto $lp fichero.txtSi imprimimos a otra impresora $lp -dprinter fichero.txt.Si no especificamos ninguna impresora con -d se mira la variable $LPDESTSi no queremos que se imprima el banner $lp -dprinter -h fichero.txt
- Ver las colas de impresión Para ver las cola de impresión, lpstat -a.
- Cancelar un trabajo: cancel
- Configurar la impresora. El comando a usar es lpadmin. Este comando modifica los ficheros en /var/spool/lp (que no hay que tocar directamente). En Solaris hay un fichero único tipo printcap, que está en /etc/printers.conf.
Un resumen de comandos System V
lp Encola los trabajosaccept Acepta los trabajoscancel Cancela los trabajosdisable Deshabilita la colaenable Habilita la colalpadmin Configura el sistema de impresiónlpshut Para el servicio de impresiónlpstat Informa sobre el estado de las colaslpmove Cambia trabajos de colalpsched Planifica impresionesSolarislpget Reads configuration settingslpset Modifies configuration settingslpfilter Controls print filters
¿De qué forma se define una impresora en Solaris?
En teoría habría que encontrar las opciones "correctas" de lpadmin, pero en la práctica, el administrador tiene más fácil recurrir a admintool o herramientas similares de ayuda.
El caso de AIX
AIX implementó un sistema de colas propietario que además de trabajos de impresión podía encolar cualquier cosa. El comando para interactuar con este sistema se llamaba enq. Para minimizar la confusión a usuarios provenientes de sistemas tipo BSD o SystemV, incluye los comandos lp y lpr, pero solamente como frontend de enq.
enq manda trabajos a una "cola", definida en el fichero /etc/qconfig, del siguiente estilo:
lp0:
device = pdev0
pdev0:
file = /dev/lp0
header = never
backend = /usr/lpd/piobe
En este fichero se ve que hay una cola lp0 asociada al dispositivo de impresora pdev0, que tiene tres parámetros de configuración (device file, header, backend - programa que envía realmente los trabajos a imprimir).
El daemon de impresión es qdaemon.
Para saber cómo van las colas: qchk, lpstat, or enq -A
La sintaxis del comando enq es complicada, los que venimos de imprimir en SystemV o BSD preferimos acordarnos de esto:
lpr -P printer /etc/motd
que de esto:enq -P printer -c -Bgn /etc/motd
Para crear la cola de impresión, los dispositivos, smit nos lo hace de una forma muy intuitiva.
CUPS
CUPS es el acrónimo de Common Unified Printing System y es lo que se viene usando en Linux como "servidor de impresión". A diferencia de los sistemas clásicos de impresión, CUPS se "encarga de todo".
CUPS reemplaza completamente los sistemas clásicos y consta de:
- demonio de impresión (cupsd): Vigila los directorios spool buscando trabajos que imprimir.
- cola de impresión (/var/spool/cups/
): Directorio que almacena los trabajos a imprimir. - drivers PPD para impresoras postscript o filtro que traduzca el documento generado por la aplicación a un lenguaje entendible por la impresora (el fichero necesario para caracterizar a una impresora se llama PPD - Postscript Printer Description - y si no se puede encontrar en linuxprinting.org, se busca foomatic (paquete foomatic-db-engine), que proporciona el archivo PPD y los filtros necesarios para traducir los documentos (trabaja sobre GhostScript).
- comandos de usuario de interfaz con el sistema: clonados de los clásicos (tanto SysV como BSD) por compatibilidad: lpr (o lp) para enviar a imprimir, lprm para borrar, etc.
- comandos de administración: los clásicos lpstat, lpinfo...
- una interfaz web de administración
En Linux, para instalar una impresora:
- Conectamos la impresora
- Conseguimos el archivo PPD
- Instalamos foomatic
- Reiniciamos el cupsd (/etc/init.d/cupsys restart)
- El interfaz web de administración está en el puerto 631
Bibliografía
Poner CUPs en Solaris: http://preguntaslinux.org/-howto-cups-en-solaris-10-t-4317.html
No hay comentarios:
Publicar un comentario