Anda di halaman 1dari 7

Imprimiendo con CUPS en FreeBSD

Autor: Pedro Moreno


Fecha: 9 de Agosto del 2003.
Por que CUPS
Tenia tiempo que deseaba echar a volar mi impresora en mi Freebsd 4.6, una hp deskjet
695c. Pero no me habia metido mucho con ese aspecto, y viendo como todo lo que me indicaba
el handbook no me llevaba a nada, solo obtenia unas cuantas letras impresas, la impresora se
ponia a sacar hojas en blanco como loca, hacia ruido, etc. Y mejor me dedicaba a realizar otras
tareas mas fructiferas en mi S.O. 4.6
CUPS se basa en dos formas muy estandarizados para llevar a cabo su labor, uno de ellos es el
estilo System V el cual usa el programa lp y el otro es el tipo Berkeley el cual usa el programa
lpr. Creo que muchos hemos pasado por eso, por ello hace poco empeze mi investigacin sobre
el tema y me dije "La echo a volar por que la echo a Volar", con esto me encontre en la Web 2
programas muy usados en el mundo Unix, unos de ellos es CUPS y el otro Apsfilter. En
ambos sitios se encuentra gran informacin sobre su instalacin, configuracin y uso. Y como es
normal los ejemplos mostrados estan montados en Linux(ni modo, el marketing lo pide $$$),
por ello si hacemos todo lo que dicen sus manuales nos vamos a encontrar con muchos
resultados desagradables. Asi es que voy a tratar de aclarar lo mas que se pueda para que se les
haga mas sencillo su implementacin y uso.
Ahora se preguntaran, Cual es mejor de ambos programas :-? Bueno no tengo las pruebas para
esto, eso ustedes lo descubrran en algun momento, lo que si les podra decir que ambos estan en
los ports de Freebsd y que ambos pueden manejar infinidad de impresoras, pero de varios sitios
que he visitado se recomienda usar CUPS , pero aqui le paro para no entrar en detalle. Ahora una
cosa que me hizo elegir CUPS sobre Apsfilter es la documentacin que tiene, me gusto
mucho CUPS por que tiene un manual para el administrador como para el usuario normal. Esto
gano su confianza. Ademas que se puede administrar el servidor desde una navegador web, KDE
lo utiliza como sistema base de impresin. No voy a tomar el tema de como configurar el sistema
de impresion en KDE ya que para empezar yo no lo uso, esta muy bonito pero tuve muchos
problemas con el y opte por uno mas liviano y manejable como es WindowMaker ;-).
Como dije anteriormente este articulo se basa en Freebsd 4.6 Stable el cual tiene conectado
una impresora HP deskjet 695c en el puerto paralelo /dev/lpt0, por ello antes de continuar
me gustaria que le echen in vistazo a el articulo publicado en este mismo sitio titulado
"Impresoras Paralelo Freebsd" y hacer todo lo que dice ahi, si su impresora hace algun ruido o
responde con algo creo que vamos bien. Y la versin de CUPS que viene en mis ports es la
1.1.14 y la instalacion se debe hacer como el usuario que todo lo puede root.
Un punto que me gustaria aclarar y que a mi me trai de cabeza es Que es una impresora
PostScript :-? Bien existen dos tipos de impresoras, las llamadas Line Printers o Impresoras de
Linea, estas solo pueden imprimir arhivos de Texto y las PostScript Printers o impresoras
PostScript son las que ademas de poder imprimir texto pueden tambien imprimir imagenes. Por
lo tanto mi impresora es una PostScript y soporta la version 3 de Postscript.
Bueno creo que ya tecle mucho y no he hecho nada productivo, vamos a entrarle a los trancazos.
Siganme los buenos...
Instalando CUPS
Como puntos importantes aparte de cups, si deseamos poder imprimir archivos de imagenes,
CUPS debe tener los filtros para ello, el no trae todo, si asi fuera perderia rendimiento. Por ello
necesitamos instalar la librerias JPEG, PNG, TIFF y ZLIB, busquenlos en sus ports, ahi vienen
casi todas. Sino, entonces los pueden bajar de los ports de Freebsd, no van a tener problemas.
Entramos como root al sistema y ejecutar la aplicacin que se usa para configurar el sistema o
instalar programas que es la que nos interesa en este momento:
# /stand/sysinstall
Una vez que logramos instalarlo vamos a observar que este mosquetero no viene solo, debemos
confirmar que todos los programas que arrastra se instalaron junto con el, para ello verificamos
usando el programa pkg_info:
# pkg_info
Este nos desplegara todos los programas instalados en nuestro sistema, y si tenemos muchos y no
logramos verlo, utilizaremos el comando GREP para filtrar texo asi:
pkg_info | grep cups
el cual nos debe arrojar lo siguiente:
cups-1.1.14
cups-base-1.1.14
cups-lpr-1.1.14
Si no tenemos estos tres mosqueteros, entonces ahi que buscarlos he instarlos cada uno viene por
separado, se deberian instalar juntos pero "no todo en la vida es color de rosa". Si la tarea
anterior se a completado con exito, entonces pasar a la siguiente fase.
Donde se instalo CUPS?
Ahora una vez que hemos instalado CUPS es conveniente saber donde coloca sus archivos de
configuracin ya que si deseamos modificarlos necesitamos saber donde estan o no :-?. Segun el
handbook el directorio por defecto es /usr/local/ pero este mosquetero no solo tiene archivos de
configuracin sino tambien debe manejar colas, errores y como podran intuirlo no los coloca
donde mismo, Freebsd tiene directorios para ello, por ello para saber donde esta CUPS vamos
a buscarlo ejecutando el programa find asi:
#find -v -option / cups*
Estos son los directorios a los que debemos ponerles atencin:
a) /usr/local/etc/cups/
b) /usr/local/bin/
c) /usr/local/sbin/
d) /var/spool/cups/
e) /var/log/cups/
a)Contiene los archivos de configuracin, si han usado Apache y han visto sus archivos de
configuracin, pues que bien ya que son parecidos, nos se van a sorprender, de lo contrario
tampoco ya que son muy explicativos y faciles de digerir, los principales seran: cupsd.conf,
client.conf, printers.conf, ademas que vienen archivos de ejemplo de cada uno de ellos.
b)Aqui tenemos programas que remplazan a varios de los que se encuentran en /usr/bin como
son: lp, lpoptions, lppasswd, lpq, lpr, lprm, lpstat. Estos son los que debemos
usar en vez de los que tenemos en /usr/bin.
c)Aqui tenemos mas programas para manejar nuestra impresora como: lpadmin, lpc, lprm,
lpq, lpinfo, lpmove, ya saben sin desean mas informacion tenemos man.
d)Archivos para manejar la cola de impresin.
e)Archivos log, como error_log, access_log, page_log, los cuales no les debemos perder la pista
ya que si llenan y no nos damos cuenta no se lo que pasaria :-?.
Y si tenemos problemas con CUPS, el archivo error_log nos seria de gran ayuda. Por el
momento no vamos a entrar en detalles en ellos ya que por defecto esta configurado para poder
trabajar sin problemas, pero seria bueno que les hecharan un ojo para ver si algo les interesa B-).
Ejecutando el bsdemonio cupsd
Como solo hemos instalado el programa, aun no esta corriendo en nuestro sistema, para ello
debemos ejecutarlo, y como este demonio no se instala en los directorios por defecto de los
principales programas debemos buscarlo, y esto se hace de una manera muy facil:
# whereis cupsd
/usr/local/sbin/cupsd
Entonces lo ejecutamos asi:
# /usr/local/sbin/cupsd
No nos debe arrojar ningun mensaje a nuestra pantalla de lo contrario checar y si no les parece
correcto entonces debemos empezar a investigar a que se debe ese mensaje. Una vez que lo
ejecutamos checamos si esta en realidad corriendo asi:
# ps -ax | grep cuspd
PID name prog
140 ?? Ss 0:00.10 /usr/local/sbin/cupsd
Ahora si tenemos a CUPS a toda maquina, si deseamos que se ejecute cada que iniciemos nuestro
sistema, debemos de crear un script, en lo cual yo todavia no tengo experiencia pero si alguien
puede darnos uno y explicarlo se lo agradeceriamos, CUPS trae un ejemplo pero todavia no le
entiendo bien, creo que por ahi podriamos comenzar. Ahora es hora de pasar a la siguiente fase.
Agregando nuestra primera impresora en CUPS
Esta es una de las cosas que me agrado tanto de este mosquetero, como tiene soporte para el
protocolo IPP (Protocolo de Impresin Para Internet), por ello podemos administrar nuestras
impresoras ya sea desde nustra misma red local como desde Internet, este tema no lo tocare ya
que yo solo lo uso en mi casa pero no importa podemos de todos modos usar el navegador que
mas nos agrade para esa tarea a nivel local.
Para entrar al adminstrador de cups debemos usar el puerto por defecto para IPP 631 asi:
http://localhost:631/admin/
En el archivo cupsd.conf podemos indicarle cual puerto deseamos usar para ingresar al sitio del
administrador, ademas de ello podemos usar un sistema de encriptacin para mayor seguridad,
pero esa es otra historia. Una vez que solicitamos la pagina del admistrador nos solicitara la
clave de root y su password, si no se lo damos correcto nos sacara instantaneamente.
La pagina es muy sencilla, no hay nada que no este claro, lo que vamos hacer es dar de alta
nuestra impresora, CUPS tiene infinidad de controladores para un amplio rango de impresoras
desde impresoras de linea como HP, Epson de 9 y 24 pines, Stylus Color, Stylus Photo Color,
etc. Si les interesa crear un controlador personalizado tambien en su sitio encontraran
informacin de como hacerlo.
Estos son los pasos a seguir para agregar su primera impresora, aqui supongo que ya estamos en
la pagina del administrador, entonces:
1; Buscar el Link que dice "Add a New Printer" lo que es igual a Agregar Nueva Impresora. Esto
nos va a pedir los siguientes datos:
Name: --->Nombre, Nick o Apodo que deseamos darle a nuestra impresora. Este nombre debe
ser unico, como "deskjet1".
Location: --->Lugar fisico de la impresora. Ustedes eligan, en mi caso es "Debajo de Mi
Escritorio".
Description: --->Una breve descripcion de la impresora como "HP Deskjet 695c Puerto
Paralelo".
Ya que terminamos este paso, entonces le damos un click en el Link "Continue".
2;Indicar por que medio esta conectado nuestra impresora, las opciones que tenemos son:
Device: USB
HP JetDirect
HTTP o IPP
LPD/LPR
Paralelo
SERIAL
Ya que le decimos por que medio esta conectada entonces de nuevo presionamos el Link
"Continue".
3; Luego debemos indicar que modelo de impresora tenemos, aqui podemos ver los que soporta:
Model/Driver For Your Printer:
Raw
Dymo
Epson
HP
Okidaka
Como lo mia es una HP, ya se imaginaran cual elegi. Y continuamos.
4; Ahora dependiendo lo que elegimos en paso 3, el nos mostrara los controladores que tiene
para ese tipo de modelo. Para HP muestra los siguientes:
Model: HP Deskjet Series CUPS v1.1(en)
HP Laserjet Series CUPS v1.1(en)
HP New Deskjet Series CUPS v1.1(en)
Yo elegi el nuevo, la opcion 3 que es el nuevo controlador, pero de todos modos probe el
primero y me funciono.
Continuamos y nos debe informar que todo se hizo con exito. Buscamos un link por abajo que
dice "Printer", este enlace nos lleva a una pagina que nos muestra la informacin de la o las
impresoras que tenemos dadas de alta en el servidor CUPS. Nos dice el nombre, descripcion en
fin toda la informacin que hemos dado de alta. Ahora vamos a imprimir nuestra rigorosa pagina
de prueba, buscar el link que dice "Print Test Page". Para este entonces su impresora ya debe
estar haciendo algo de ruido y su impresora ya debe estar hechandole tinta a la hoja.
Empiezen a jugar con las opciones que tienen en el navegador para que le pierdan el miedo.
Agregando la impresora como variable del sistema
Esto nos facilitara mucho el trabajo desde shell con la impresora , yo uso csh su archivo de
configuracin se encuentra en / y se llama .cshrc, lo editamos con su editor favorito, que en mi
caso es ee, y agregamos esta linea:
setenv PRINTER deskjet1
Recuerden el nombre o "Name" que le dimos a la impresora.
Salvamos el archivo y reiniciamos el shell para que vuelva a leer el archivo de configuracin asi:
# kill -s HUP PID_Del_Shell
Probamos la variable:
# echo $PRINTER
deskjet1
Listo, mas adelante van a ver como nos vamos a ahorrar teclasos desde el shell.
Imprimiendo desde el Shell
Muchas veces lo visual no nos permite sacarle el maximo a las aplicaciones por ello es necesario
usar el shell. Por ello tambien CUPS tiene varios comandos que le ayudan, los mas importantes
son lpr o lp, pero no vamos a usar los del kernel sino los que instalo CUPS, puedes retornar
atras al subtema que dice "Donde se instalo CUPS", para que entiendan lo que les digo. Para
imprimir una pagina usando uno de estos dos comandos se hace asi:
# /usr/local/bin/lpr Nombre_Del_Archivo
o
# /usr/local/bin/lp Nombre_Del_Archivo
Si no creamos la variable del sistema PRINTER entonces estos comandos nos van a marcar
errores, ya que por default la impresora se llama lp y nos diria algo asi cuando los ejecutemos:
/dev/lp not created
Por ello es bueno hacerlo, pero si les gusta teclear de mas adelante.
Ahora si deseamos ver una lista de nuestras impresoras disponibles:
# lpstat -p -d
Si deseamos imprimir a una impresora en especial con lpr o lp:
# /usr/local/bin/lpr -p Nombre_de_Impresora Nombre_del_Archivo
o
# /usr/local/bin/lp -d Nombre_de_Impresora Nombre_de_archivo
Para imprimir varias hojas de un archivo:
# /usr/local/bin/lpr -#NumerodeCopias Nombre_del_archivo
o
# /usr/local/bin/lp -n NumeroDeCopias NombredelArchivo
Cuando quieran ver la actividad o Status de la impresora:
# lpstat
deskjet1 paisano 2048
Nos da todos los que estan en la cola. Si queremos ver el que se esta imprimiendo en especial:
# lpstat -p
Si usamos al opcion -o -p veremos los de la cola y el actual.
# lpstat -o -p
Todo esto lo podemos hacer desde el navegador, pero no tenemos todo el poder de estos
comandos como con el shell. Ahora si deseamos cancelar algun trabajo en especial o hasta el que
se esta imprimiendo, podemos usar los comandos cancel(1) o lprm(1) y se hace asi:
# cancel Id_Del_Trabajo
o
# lprm Id_Del_Trabajo
Los Id de los trabajos a cancelar nos lo dan los comandos lp o lpstat.
Imprimiendo desde el Modo Grafico
Como punto final en cuanto a comandos, si ustedes desean imprimir desde algun programa en
modo grafico como Nedit o Xpdf cuando estos programas nos abren la famosa ventana de
impresin, por defecto traen el comando lpr, o lp y alguna opcin de ellos y si nosotros por
defecto suponemos que va a imprimir, nos vamos a llevar un buen chasco. Por ello debemos
cambiar el comando por el nuevo comando, por ejemplo:
# lpr -r
por
# /usr/local/bin/lpr
o
# /usr/local/bin/lp
Nos Vemos
Creo que es todo lo que yo he hecho para poder imprimir con mi impresora, CUPS me tiene
contento. Hay algunos puntos que todavia no me quedan claros, por ejemplo como ejecutar el
demonio cupsd desde el arranque del sistema, algunas otras opciones no he tenido necesidad de
utilizar, otro punto es como imprimir los archivos .bmp, pero espero pronto llenar esos huecos y
si alguien nos puede hechar la mano seria muy bueno. Seria tambien productivo hacer unas
pruebas con Apsfilter y ver un tutorial por aca, no les parece :-?. Cualquier error que ustedes
encuentren o algo concepto o comando mal usado, me gustaria me lo hicieran saber para pronto
corregirlo, actualizarlo y asi crear un documento completo. Espero les sirva tanto como a mi me
ha servido.