DPD Impresión

De Gleducar, http://www.gleducar.org.ar

Tabla de contenidos

¿Qué es CUPS?

Extraído de la web de CUPS: "El 'Common UNIX Printing System' ("CUPS") es una solución multiplataforma de impresión para todos los entornos UNIX. Está basado en el "Protocolo de impresión de internet" y proporciona servicios completos de impresión a la mayor parte de las impresoras Postscript. CUPS se distribuye bajo la licencia GNU GPL..." Aunque hay otros paquetes de impresión como LPRNG, CUPS es muy popular y relativamente fácil de usar.

Instalación de CUPS

Paquetes

Necesitas como mínimo CUPS y Ghostscript:

# apt-get install  cups ghostscript
  • cups - La versión actual de CUPS
  • ghostscript - Un intérprete del lenguaje Postscript


Algunos de estos paquetes de driver, depende de tu modelo de impresora. Si no estás seguro, instala gimp-print.

  • gutenprint (antes llamado gimp-print) - Una colección de drivers de alta calidad para impresoras Canon, Epson, Lexmark, Sony, Olympus, y PCL para ser utilizados con Ghostscript, CUPS, Foomatic, y Gimp.
  • foomatic, foomatic-db, foomatic-db-engine, foomatic-db-ppd y foomatic-filters - Foomatic es un sistema de base de datos sobre controladores para integrar drivers libres de impresoras con los habituales spoolers bajo Unix
  • Instalar foomatic-filters suele resolver tus problemas si en el archivo error.log aparece el error "stopped with status 22!"
  • hplip - Driver para HP Linux inkjet. Da soporte para DeskJet, OfficeJet, Photosmart, Business Inkjet y algunos modelo de impresora LaserJet.
  • cups-pdf - Un interesante paquete que te permite crear una impresora virtual PDF que genera PDF con todo lo que le mandas.


Si tu impresora está conectada a una impresora de red utilizando el protocolo samba o si el sistema va a ser un servidor de impresión para clientes Windows:

# apt-get install  samba

Descarga de los PPD para la impresora

Dependiendo de tu impresora, este paso es opcional y puede no ser necesario ya que la instalación estándar de CUPS ya dispone de unos cuantos archivos PPD (Postscript Printer Description). Es más, los paquetes foomatic-filters, gimp-print y hplip tambén incluyen una serie de archivos PPD que serán detectados automáticamente por CUPS.


Aquí tienes una explicación de lo que es un archivo PPD de la web Linux Printing: "El fabricante da un archivo PPD de cada impresora PostScript que tiene toda la información específica de la impresora sobre el modelo particular: Las capacidades básicas de la impresora así como si la impresora es en color, tipos de letra, nivel de PostScript, etc., y especialmente las opciones ajustables por el usuario, como el tamaño del papel, resolución, etc."



  • Ahora, necesitas mover el archivo al directorio de cups para que pueda detectarlo. Si estás en el directorio al que descargaste el PPD, puedes ejecutar el comando:
# mv your_printer.ppd /usr/share/cups/model/


Si no encuentras tu impresora en el sitio web, puedes probar con modelos parecidos o utilizar un driver de impresora general. Tan solo busca en google o pregunta a tu fabricante (que tengas suerte si haces esto).

Configuración de Cups

Opciones

Ahora que cups está instalado, tienes varias opciones para configurarlo. Siempre puedes utilizar la línea de comandos. De la misma manera, varios escritorios como Gnome y KDE tiene útiles programas para administrar tus impresoras. Sin embargo, para hacer este proceso fácil para la mayor cantidad posible de usuarios, vamos a usar la interface web que nos brinda CUPS.

Ten en cuenta que si tienes pensado conectarte a una impresora de red en lugar de una enchufada a tu ordenador directamente, tal vez deberías ir primero a a la sección de impresoras compartidas. La compartición entre impresoras de Linux a Linux es muy fácil de configurar. De Windows a Linux y viceversa requiere más esfuerzo, pero también es faćil.

Módulos del kernel

Antes de poder utilizar la interface web de CUPS, debemos instalar los módulos del kernel apropiados.

Impresoras USB

Si quieres utilizar una impresora USB con un kernel 2.6.x, escribe este comando:

# modprobe usblp

Si es una impresora USB y un kernel 2.4.x kernel, el siguiente:

# modprobe printer

Esto asume que estás utilizando un kernel de los de Arch Linux. Si te has compilado uno a medida necesitarás ejecutar esto antes:

# modprobe usbcore

Cuando hayas cargado los módulos, debes encender la impresora y comprobar si el kernel la detecta ejecutando:

# tail /var/log/messages.log

o

# dmesg | tail


Debe aparecer algo como:

 Feb 19 20:17:11 kernel: printer.c: usblp0: <tooltip>XQXUSBXQX|XQX(Universal Serial Bus) Puerto Serie UniversalXQX</tooltip> Bidirectional
 printer dev 2 if 0 alt 0 proto 2 vid 0x04E8 pid 0x300E
 Feb 19 20:17:11 kernel: usb.c: usblp driver claimed interface cfef3920
 Feb 19 20:17:11 kernel: printer.c: v0.13: <tooltip>XQXUSBXQX|XQX(Universal Serial Bus) Puerto Serie UniversalXQX</tooltip> Printer Device Class driver

Impresoras por puerto paralelo

Si vas a utilizar una impresora por puerto paralelo, la configuración es muy parecida. Para el kernel 2.6.x:

# modprobe lp

Y después, tantosi es un kernel 2.4.x como si es un 2.6.x:

# modprobe parport
# modprobe parport_pc

Una vez más, para comprobar si vamos bien:

# tail /var/log/messages.log

o

# dmesg | tail

Debe aparecer algo como:

# lp0: using parport0 (polling).

Demonio de CUPS

Con el módulo cargado, ya estás listo para iniciar el demonio de CUPS. Para hacerlo, ejecuta:

# /etc/init.d/cups start

Interface Web y tool kit.

Cuando el demonio se esté ejecutando, la interface web estará disponible. Abre tu navegador y ve a:

http://localhost:631

o instala el GUI "Gnome Cups Manager" (lee Apéndice: A.1 Interfaces alternativas para CUPS)

Desde aquí, todo lo que debes hacer es seguir los pasos de los asistentes para añadir una impresora. Para configurar mi impresora Samsung ML-1250, empecé por pulsar sobre Manage Printers, y después en Add Printer. Entonces me preguntó el usuario y la contraseña, y ahí puse el usuario root y su contraseña. Puse 'ml1250' como nombre de la impresora, 'Mi casa' como location y 'Peter's Samsung ML-1250 Laster Printer' en descripción. Después hay que seleccionar el dispositivo. Como mi impresora es una USB, seleccioné USB Printer #1. El nombre de mi impresora se veía también al lado de USB Printer #1, así que míralo. Por último, simplemente elegí el driver apropiado y la instalación se completó.

Una vez hecho esto, puedes comprobar la configuración pulsando el botón 'Print Test Page'.

Compartir impresión

Linux a Linux

Una vez que tengas configurado CUPS en tu servidor de impresión Linux, compartir la impresora con otro Linux es relativamente fácil. Hay muchas formas de configurarlo, pero aquí se describirá la forma manual. En el servidor (la que administra la impresora y que la tiene conectada) simplemente debes editar el archivo /etc/cups/cupsd.conf y permitir el acceso al servidor modificando las líneas pertinentes. Por ejemplo:

<Location />
  Order Deny,Allow
  Deny From All
  Allow From 127.0.0.1
  Allow From 10.0.0.*
</Location>

Así se añade permiso a la IP de la máquina cliente con el 'Allow From ip_cliente'. Después de hacer las modificaciones al archivo, se reinicia el CUPS con:

# /etc/init.d/cups restart

En la máquina cliente, se edita el /etc/cups/client.conf y se indica en la opción ServerName la ip del servidor o su nombre. Por ejemplo, si el nombre del servidor es 'beast' en el client.conf se indica así:

ServerName beast

Después habrá que ejecutar el siguiente comando para actualizar el cliente:

# lpq

La respuesta debe ser algo como esto:

ml1250 is ready
no entries

Hay más formas de configurarlo, incluyendo una configuración automática que se describe detalladamente en http://localhost:631/sam.html#CLIENT_SETUP (este enlace funcionará en el servidor).

Cuando se te pregunte por el nombre de usuario y contraseña utiliza 'root' y su clave y después sigue las instrucciones de http://www.digitalhermit.com/linux/printing/ Si es una impresora TCP/IP usa Jetdirect

Esto servirá para la compartición de impresoras entre máquinas con Linux.

Linux a Windows

Si estás conectado a un servidor de impresión Windows (o cualquier otro servidor de impresión que soporte Samba), puedes saltarte la sección sobre los módulos del kernel. Todo lo que tienes que hacer es iniciar del demonio CUPS y completar la interface web como se describe en la sección 3.3 y 3.4. Antes de esto, necesitas activar el backend de CUPS para Samba. Puedes hacerlo con el siguiente comando:

# ln -s `which smbspool` /usr/lib/cups/backend/smb

Oberva que el carácter de antes es ` (debajo de ~ en los teclados estándar US) y no '. Después de esto, deberás reiniciar CUPS con el comando especificado en la sección anterior. Más tarde, simplemente entra en la interface web de CUPS como root y añade una impresora. En device, debe haber una opción que indique algo de Windows Printer Via Samba. Para device location introduce:

smb://username:password@hostname/printer_name

O sin contraseña:

smb://username@hostname/printer_name

Asegúrate de que el usuario tenga acceso a la impresora en la máquina con Windows. Selecciona el drivers apropiado. Si la máquina está en un dominio, asegúrate de que el nombre de usuario incluye el dominio. (p.e.: DOMAIN\User)

Nota: si tu red tiene muchas impresoras utiliza "lpoptions -d nombre_de_tu_impresora_predeterminada" para seleccionar tu impresora preferida.

Windows a Linux

A veces, puede que quieras dejar que una máquina con Windows se conecte a tu Linux. Hay varias formas de hacerlo y con la que estoy más familiarizado es la que utiliza Samba. Para hacerlo, deberás editar el /etc/samba/smb.conf para permitir el acceso a tus impresoras. Tu smb.conf podría ser algo como esto:

[global]
workgroup = Heroes
server string = Arch Linux Print Server
security = user

[printers]
    comment = All Printers
    path = /var/spool/samba
    browseable = yes
    # to allow user 'guest account' to print.
    guest ok = no
    writable = no
    printable = yes
    create mode = 0700
    write list = @adm root neocephas

Esto debería bastar para compartir tu impresora, pero podrías querer añadir una entrada individual para la impresora:

[ML1250]
    comment = Samsung ML-1250 Laser Printer
    printer=ml1250
    path = /var/spool/samba
    printing = cups
    printable = yes
    printer admin = @admin root neocephas
    user client driver = yes
    # to allow user 'guest account' to print.
    guest ok = no
    writable = no
    write list = @adm root neocephas
    valid users = @adm root neocephas

Observa que en mi configuración hice esto para que los usuarios deban tener una cuenta válida para acceder a la impresora. Para una impresora pública pon el 'guest ok' en 'yes' y quita la línea 'valid users'. Para añadir cuentas tendrás que crear una cuenta normal Linux y después configurar una contraseña Samba en el servidor. Por ejemplo:

# useradd neocephas
# smbpasswd -a neocephas

Después de configurar las cuentas que necesites, tendrás que crear el directorio spool para samba:

# mkdir /var/spool/samba
# chmod 777 /var/spool/samba

Lo siguiente que necesitarás cambiar es /etc/cups/mime.convs y /etc/cups/mime.types:

mime.convs:

# La siguiente línea se encuentra cerca del final del fichero. Quita la almohadilla para descomentarla.
application/octet-stream        application/vnd.cups-raw        0       -

mime.types:

# También cerca del final del fichero.
application/octet-stream

Los cambios en mime.convs y mime.types se necesitan para hacer que CUPS imprima docuemntos de la Microsoft Office. Mucha gente lo necesitará.

Después de esto reinicia el demonio Samba:

# /etc/init.d/samba restart

Como es lógico hay muchos trucos y optimizaciones que se pueden hacer configurando un servidor de impresión Samba, así que te aconsejo mirar la documentación de Samba y CUPS para conseguir más ayuda. El archivo smb.conf.example también tiene algunos buenos ejemplos que puedes querer examinar.

Windows 2000 y Windows XP a Linux

Para las versiones más modernas de Windows una manera alternativa de conectar con tu servidor de impresión Linux es utilizar el protocolo CUPS directamente. El cliente Windows necesitará utilizar Windows 2000 o Windows XP. Debes estar seguro de que has dado permiso a los clientes para acceder al servidor de impresión editando la configuración de la localización según lo especificado en la sección 4.1.

En la máquina Windows, ve al panel de control de la impresora y selecciona 'Añadir una nueva impresora'. Después selecciona dar una url. En la url pon la dirección de tu impresora:

http://dirección_ip_del_host:631/printers/nombre_de_la_impresora

donde dirección_ip_del_host es la dirección del servidor Linux y nombre_de_la_impresora es el nombre de la impresora a la que te quieres conectar. Después de esto, instala los drivers de Windows para la impresora. Si has configurado el servidor CUPS para que utilice sus propios drivers de impresora, entonces sólo debes seleccionar una impresora genérica postscript para el cliente Windows. Una vez hecho esto, puedes probar la impresora imprimiendo una página de prueba.

Cualquier otro a Linux, Linux a cualquier otro

Más imformación sobre trabajar en CUPS con otros sistema de impresión se puede encontrar en la página de manual de CUPS, p.e. en http://localhost:631/sam.html#PRINTING_OTHER

Apéndice

Interfaces alternativas para CUPS

Si estás utilizando GNOME, puedes administrar y configurar tu impresora con gnome-cups-manager.

Este paquete está disponible a través de pacman si tienes el repositorio "community" activado en /etc/pacman.conf

apt-get install  gnome-cups-manager

También está disponible en AUR.

Los usuarios de KDE pueden modificar sus impresoras desde el Centro de Control.

En cualquiera de los dos casos para ampliar información deberás ir a la documentación del escritorio correspondiente.

También existe gtklp. Está en el repositorio "extra".

apt-get install gtklp

Recursos y fuentes

Aquí tienes una lista de webs que te pueden ser útiles: