Está en la página 1de 87

055_CharlyLinux14 05.01.

2006 13:06 Uhr Página 55

La Columna de Charly • ADMINISTRACIÓN

El Día a Día del Administrador de Sistemas: Sarg

LAS HERRAMIENTAS
DE PEDRO
Un servidor proxy ocupado es algo que ningún administrador debería permitir. El analizador de los ficheros de

registro del Squid, denominado Sarg por su autor, le ayuda a mantener su servidor Squid actualizado.

POR CHARLY KÜHNAST

L
o pasé bien navegando en sitios El código fuente de Sarg y los paque- de nombres, ya que el análisis le llevará
como Sourceforge o Freshmeat tes binarios para varias distribuciones todo el día. Aparte de esto, la mayoría
buscando paquetes de software Linux, *BSD, MacOS e incluso OS/2 de los administradores de DNS no
interesantes. Desde luego, los paquetes están disponibles en [1]. Sarg toma los estarían demasiado contentos con el
con nombres sugerentes me llaman ficheros de registro de Squid y utiliza los estrés involuntario al que serían someti-
más la atención. No pude evitar datos para generar un resumen estadís- dos sus servidores.
fijarme en la herramienta del desarrol- tico muy útil, como el mostrado en la Otra característica útil es el poder
lador de software brasileño, Pedro Figura 1. Pero al contrario que la utili- restringir el análisis a un período de
Orso. Estoy seguro que Pedro no era dad Calamaris de Squid, Sarg genera tiempo específico, para ello utilice la
consciente de las connotaciones de su una estadística específica de usuario. opción -d TT/MM/YYYY-TT/MM/YYYY.
Generador de Informes de Análisis de Puede pasar los parámetros más El tiempo ha sido siempre un problema
Squid (Squid Analysis Report Genera- importantes para Sarg en la línea de para Squid, que lo almacena en segun-
tor, Sarg) para los usuarios alemanes comandos; el fichero de configuración dos a partir de la era en su archivo
de Linux. (Sarg en alemán significa sarg.conf, (Sarg trae un ejemplo), le pro- access.log, con una resolución de una
ataúd). Pero esto no me desanimó en porciona más opciones, como modificar milésima de segundo. Aunque puede
lo más mínimo, y menos mal, porque el diseño de la salida. Obviamente Pedro evitarse que Squid haga esto indicándole
Sarg es exactamente la clase de her- piensa en lo que la mayoría de los que utilice el formato del fichero de re-
ramienta que me gusta: eficiente y ráp- usuarios esperan de la herramienta Sarg gistros común, si bien se perderá alguna
ida. Realiza de manera muy eficiente la y ha proporcionado los ajustes por información en el proceso. Sarg puede
tarea para la que fue ideado: crear defecto necesarios. Esto significa que ser de gran ayuda aquí. Introduciendo:
informes basados en los ficheros de para generar un informe, simplemente
registro de Squid. se especifica el archivo de origen, es sarg -convert U
decir, el fichero access.log de Squid y el /var/log/squid/access.log
directorio objetivo donde le gustaría que
SYSADMIN
Sarg pusiera los resultados. se mostrará el fichero de registro en STD-
OUT y lo proporciona en un formato le-
El Taller del Administrador: NTP.......66
sarg -l U gible con fecha.
El Network Time Protocol (NTP) pro-
/var/log/squid/access.log U Un valor como 1126705707.537 se
porciona la hora exacta a través de la
-o /www/sarg/ transforma en 09/14/2005 14:48:27. La
red.
pérdida del milisegundo no es en abso-
Programación Segura………..…..... 69
luto preocupante.
Asegure su servidor aprendiendo a Sarg y DNS Gracias por la aplicación, Pedro, hacía
pensar como un atacante. Para mayor conveniencia, Sarg tiene la tiempo que no me divertía tanto, pero
El Taller del Administrador: NTP.......66 opción de la línea de comandos -n que debería replantearse las siglas en benefi-
El Network Time Protocol (NTP) pro- permite al DNS resolver las direcciones. cio de todos aquellos hackers alemanes
porciona la hora exacta a través de la Esto está bien para un Squid pequeño de Linux. ■
red. que cuente sólo con unos cuantos
Programación Segura………..…..... 69 usuarios, pero si tiene una gran caché RECURSOS
Asegure su servidor aprendiendo a que procesa miles de millones de
[1] Sarg: http://sarg.sourceforge.net/sarg.
pensar como un atacante. respuestas al día, no es conveniente
php
dejar que Sarg lleve a cabo la resolución

WWW.LINUX-MAGAZINE.ES Número 14 55
010-010_Correo_14 05.01.2006 12:40 Uhr Página 10

LINUX
CORREOUSER Schlagwort sollte hier stehen

Correo del Lector

ACCESO DE ESCRITURA

www.almogon.de
Errare en humanum est la revista… que contenían información distributions/suse/pub/suse/i386/
Soy un subscriptor vuestro y en el incorrecta en lo que se refería al DVD. 9.3
número 12 de Linux Magazine venía de Desde aquí vaya nuestra más sincera dis- Directorio de 64 bits: pub/linux/
regalo el DVD SUSE 10.0. culpa. distributions/suse/pub/suse/
Como llevo usando Suse desde la ver- Sin embargo, no hace falta, como pro- x86_64/9.3
sión 6.1 y tenía instalado la 9.3, el otro pone Antonio, descargarse toda una iso
día me decidí a actualizar a la 10 con del DVD para actualizar el sistema. Con Protocolo: FTP
vuestro DVD, y me ha sorprendido ver la utilidad de administración de Yast, bas- Servidor: ftp.gwdg.de
que faltan paquetes básicos, como por tará. Pulsamos en el botón de “K-menu” Directorio: pub/linux/misc/suser-
ejemplo gcc , synaptic o en el ángulo inferior izquierdo de la pan- drcux/100
kdegraphics3-extra, glibc-devel, etc. talla y escogemos “Sistema” > “Centro
de Control (YaST)”. Una vez en YaST, Protocolo: FTP
Sinceramente entiendo que otros
escogemos “Software” y pulsamos en Servidor: ftp.suse.com
paquetes que estén sujetos a licencias y
Directorio 32 bits:pub/suse/i386/
otras cortapisas no se incluyan, pero “Fuente de Instalación”. A continuación
supplementary/KDE/
otros tan esenciales como estos y que son pulsamos en “Añadir” para… pues eso,
update_for_10.0/yast-source
GPL, pues como que no se comprende. añadir las fuentes de instalación citadas a
Directorio 64 bits: pub/suse/
Al final tendré que descargar la iso del continuación:
x86_64/supplementary/KDE/
DVD completa para terminar la actualiza-
update_for_10.0/yast-source
ción. Les invito a que los DVD que rega- Protocolo: HTTP
len, o bien estén completos o que avisen Servidor: packman.iu-bremen.de Con eso deberíamos disponer de todo
de sus limitaciones. Directorio: suse/10.0 el software que se pueda necesitar. Se
pueden añadir también repositorios de
Saludos Protocolo: FTP OpenSuse y de otras fuentes y YaST los
Antonio Servidor: ftp.suse.com integrará con el repositorio existente. Hay
Directorio 32 bits: pub/suse/ que evitar las barras tanto al principio
LM Efectivamente, la imagen iso que i386/9.3 como al final de los directorios y trans-
Directorio 64 bits: pub/suse/
nos hicieron llegar la gente de Suse, no cribir las direcciones tal y como se
x86_64/9.3
sabemos si por error o por la brillante describe en esta sección. De otra manera
idea de alguien del Departamento de YaST lanzará un error.. Para instalar, ya
Protocolo: FTP
Mercadotecnia, estaba tan limitada que sólo hemos de dirigirnos en YaST a “Soft-
Servidor: ftp.suse.com
más parecía una demo que una verdade- ware” > “Administración de Software”
Directorio 32 bits: pub/suse/
ra distribución. No comprendemos exac- (la primera vez que lancemos esta apli-
i386/current/inst-source-extra
tamente a qué ha sido debido y desde cación después de añadir nuevas fuentes
Directorio 64 bits: pub/suse/
luego estudiaremos muy detenidamente de instalación, tardará un poco en
x86_64/current/inst-source-extra
cualquier otra iso que nos envíen los del recabar la lista completa de paquetes
camaleón. Sin embargo, en esta ocasión disponibles) y, para instalar por ejemplo
Protocolo: FTP
no hubo solución, ya que, cuando descu- gcc, escribiremos gcc en el campo
Servidor: ftp.rediris.es
brimos el error, los DVDs ya estaban Directorio 32 bits: pub/linux/
Búsqueda y aparecerán todos los paque-
impresos, al igual que los ejemplares de distributions/suse/pub/suse/i386/ tes que necesitaremos para instalar el
10.0/SUSE-Linux10.0-GM-Extra compilador.. Procederemos de igual ma-
Directorio 64 bits: pub/linux/ nera para los restantes paquetes que nos
distributions/suse/pub/suse/ falten hasta tener el sistema a nuestro
x86_64/10.0/SUSE-Linux10.0-GM- gusto. ■
Extra4

Puedes enviar tus comentarios


Protocolo: FTP
y sugerencias a:
Servidor: ftp.rediris.es
Directorio de 32 bits: pub/linux/
correo@linux-magazine.es

10 Número 14 WWW.LINUX- MAGAZINE.ES


006-007_DVDLinux14 05.01.2006 12:31 Uhr Página 6

DVD LINUX MAGAZINE

Y en el DVD…

JUEGALINEX
utilizara a nivel institucional y
en las pequeñas y medi-
anas empresas de la
región, que se pop-
ulizara a nivel
doméstico. Sólo
Edición Especial Linux Magazine así se con-
seguiría la
masa crítica

M
ucho se ha hablado estos últi- endo hecho sus cuentas (cuadraban), necesaria
mos meses de Munich y sus cogió el toro por los cuernos y migró para que se
muy cacareados planes de todo su parque informático a Linux sin alcanzaran
migrar 14.000 escritorios a Linux. Tam- mirar atrás y sin aceptar presiones de los objetivos
bién, y dentro de las noticias rela- grandes corporaciones. de alfa-
cionadas con el sector, hemos podido oir Al igual que el movimiento se demues- betismo digi-
la propuesta del gobierno de Massachu- tra andando, la experiencia extremeña tal marcados
sets de vetar toda documentación admin- demuestra que las reservas políticas ante por la Junta de
istrativa que no se encuentre en un for- la migración de la administración al soft- Extremadura.
mato abierto. Pero los planes de ware libre están basadas en miedos sin Y no hay mejor
migración previstos en la capital Bávara fundamentar. Y prueba de ello es la cele- manera de popu-
para el 2005 todavía no se han material- bridad que ha alcanzado Extremadura, larizar una tecnología
izado y lo último que sabemos de Massa- haciendo que una región considerada que aplicarla al mercado
chusets es que las presiones de ya-se- hasta ahora una de la más improbables del entretenimiento. Con ese
sabe-quién han llevado a la dimisión del como referente tecnológico, se consti- fin nació en el 2005 la derivada
principal impulsor del proyecto, Peter tuya en la autonomía hacia la que se JuegaLinEx, una distro con, no sólo los
Quinn. vuelven todas las miradas cuando se clásicos juegos de Linux (Frozen Bubble,
De manera similar, en nuestro propio plantea una migración. Tux Racer y GNU Board), sino con fabu-
país existen prudentes planes, estudi- losos juegos de estrategia, simulación y
adas estrategias y advertidos anteproyec- Las Caras de LinEx arcade.
tos para implantar software y formatos El equipo al cargo de la producción de
libres a diversos niveles en las adminis- LinEx es consciente desde hace tiempo Edición especial Linux
traciones públicas. Estos estupendos de que no se puede crear una distribu- Magazine
propósitos, tal y como viene siendo ción que sea todo para todo el mundo. La versión especial Linux Magazine, creada
habitual, puede que acaben en agua de Por ello, aparte de su producto paraguas, por Dario Rapisardi, incluye, además de un
borrajas ¿Por qué? No son lo suficiente- LinEx [1], el equipo de desarrollo ha ido mayor número de juegos a cada cual más
mente atrevidos. No le echan el sufi- creando desde distribuciones derivadas espectacular, actualizaciones y correc-
ciente valor. especializadas para satisfacer las necesi- ciones de drivers de vídeo y sonido para
Sin embargo, en España sabemos que dades de las empresas extremeñas con ofrecer al jugador la mejor experiencia de
hay una administración que, al modo de LinEx Empresas [2], hasta infraestruc- juego posible en un sistema Linux.
cierto poblado galo de comic, se ha des- turas para fines
marcado de la “prudencia” y de los pon- específicos
derados estudios interminables y, habi- basadas en
plataformas
JuegaLinex Edición libres, como es
Especial Linux Magazine el caso del
proyecto Jara
Base: gnuLinEx 2004r1 que sirve de
Kernel: 2.6.7 parcheado con drivers base a todo la
actualizados de video (ATI y Nvidia) y red sanitaria
sonido, cámaras web y discos Serial extremeña [3].
ATA. Sin embargo,
Escritorio: Gnome 2.8 con menú supe- si algo tenían
rior para acceso más cómodo a juegos. claro los impul-
Instalación: Gráfica con Anaconda. sores de LinEx
Sistema gráfico: Free86 4.3.0 de Debian aparte de la
Sarge. propia necesi- Figura 1: JuegaLinEx ibcluye una gran variedad de software educativo,
dad, era que se como, por ejemplo, el entorno de desarrollo para niños Squeak.

6 Número 14 WWW.LINUX- MAGAZINE.ES


006-007_DVDLinux14 05.01.2006 12:31 Uhr Página 7

DVD LINUX MAGAZINE

JuegaLinEx cuenta con cias en el aula.


dos modalidades de Por ejemplo: Junto con juegos de car-
instalación: una espe- reras y shooters en primera persona,
cial para niños, podemos encontrar el potente entorno
donde se omiten de desarrollo Squeak, diseñado por el
los juegos más equipo de Alan Kay y remodelado por
violentos y ingenieros extremaños para adecuarlo a
otra dirigida las necesidades educativas y domésti-
a adultos cas españolas, que se utiliza para
que gusten enseñar a los más jóvenes los
de las emo- conocimientos básicos para la creación
ciones de aplicaciones multimedia y conceptos Figura 2: Shooter en 1ª persona Nexuiz, que
fuertes. como la programación orientada a obje- utiliza el motor Quake.
Otro tos. GCompris, otro de los paquetes
punto fuerte incluidos, es una suite de juegos educa-
de Juega- tivos facilmente expandible que cuenta
LinEx es la con un número cada vez mayor de apli-
inclusión de caciones y actividades y que abarca la
juegos y utili- enseñanza de matemáticas, vocabu-
dades educativas. lario, conocimiento del medio, física y
La distribución se ha un largo etcétera.
creado trabajando muy Por todo ello, JuegaLinEx es la dis-
estrechamente con la Con- tribución ideal para el entretenimiento
sejería de Educación de la Junta y educación familiar.
Extremadura y los especialistas de la
región han asesorado a los creadores Instalación
sobre la inclusión de los mejore progra- Para empezar la instalación, habremos Figura 3: En Simutrans has de crear un
mas didácticos en base a sus experien- de configurar la BIOS para arrancar imperio de transporte y comunicación.
desde el DVD. Rearrancaremos el orde-
Los Juegos nador con el DVD insertado en el lector y
empezará el proceso de instalación.
Más de 150 juegos divididos en las sigu- JuegaLinEx viene con el avanzado sis-
ientes categorías: tema de instalación, heredado de Red
Arcade Hat, Anaconda. El interfaz gráfica guía al
glTron, Neverball, Nexuiz, Trackballs, usuario a través de la elección de
etc. idioma, teclado, particionamiento, selec-
Estrategia ción de paquetes y configuración del
Battle for Wesnoth, Glest, SimuTrans, gestor de arranque.
Egoboo, etc. El avanzado sistema de detección de
Misceláneo hardware configurará automáticamente
tarjetas de vídeo y de sonido, conexiones
Squeak, GCompris, etc.
a red y dispositivos como impresora y
Naipes
acceso a Internet, haciendo que incluso Figura 4 y 5: Velocidad a tope con Torcs
Blackjack, Poker, Solitarios, etc. el más inexperto no tenga ningún prob- (arriba) y GLTron (abajo).
Plataforma lema para tener en poco tiempo el sis-
Amphetamine, Supertux, Aquatic Bub- tema listo para funcionar.
ble, etc. ¡Instálalo ya!
Rompecabezas
Xwelltriss, MirrorMagic, Frozen Bubble,
Recursos
etc.
[1] Página principal de LinEx: http://www.
Simuladores
linex.org/
BilliardGL, Bzflag, Gl-117, FlightGear,
[2] LinEx Empresas: http://www.gnulinex.
etc.
net/distribucion/
Tablero
[3] Proyecto Jara: http://www.juntaex.es/
KMahJongg, Atlantik, Go, Reversi, etc. consejerias/syc/ses/jara/jara.html

WWW.LINUX- MAGAZINE.ES Número 14 7


003-003_editorial_14 05.01.2006 12:27 Uhr Página 3

EDITORIAL

2005 Estimado Lector de Linux Magazine Nos sentimos orgullosos de nuestros


orígenes como publicación, que se

P
ara del proyecto SAMBA metiera el remonta a los primero días de la revo-
cuando remo y precipitase los aconte- lución Linux. Nuestra revista hermana,
la publicación alemana Linux Maga-
esto se cimientos) y la relación se
zin, fundada en 1994, fue la primera
publique, las rompió. La subsiguiente crisis revista dedicada a Linux en Europa.
Navidades, el fin se resolvió bien gracias a los Desde aquellas tempranas fechas
de año y los reflejos de Linus y su equipo, y hasta hoy, nuestra red y experiencia
Reyes probable- el desarrollo del kernel sigue han crecido y se han expandido a la
par que la comunidad Linux a lo ancho
mente no sean adelante a todo tren con la y largo del mundo. Como lector de
más que un vago recuerdo en la mente ayuda de GIT, una herramienta Linux Magazine, te unes a una red de
del lector. Pero “ahora”, cuando libre y de la comunidad. Un 1 información dedicada a la distribución
escribo esto, es el 31 de diciembre y en la quiniela. del conocimiento y experiencia téc-
nica. No nos limitamos a informar
me parece un momento oportunísimo Julio, en el Parlamento
sobre el movimiento Linux y de Soft-
para repasar lo que nos ha deparado el Europeo: Patentes contra ware Libre, sino que somos parte
año que hoy acaba. Software Libre (julio 2005): Y integral de él.
Sé que lo del repaso anual es un se celebró la votación sobre
recurso socorridísimo, pero, por un patentes de software que nos
lado, Linux Magazine cumplió doce quisieron colar por la puerta de atrás das? Las de siempre: que si el software
números con el año y es buen ejerci- las megacorporaciones productoras de libre es inseguro (= es anti-ameri-
cio echar cuentas. Y por otro, ya se pleitos… digo… de software ameri- cano) por que se le conocen sus tri-
sabe que el pueblo que olvida su his- canas (y alguna que otra díscola euro- pas; que si mina la libre competencia
toria se condena a repetirla y en este pea que también se subió al carro) (= es anti-americano) por su modelo
pasado año hubieron algunos ver- que mantuvo en vilo al mundillo del de negocio; tendría efectos negativos
daderos momentos oscuros que no SL durante unos cuantos meses. Al en las inversiones I+D+i (= es anti-
desearía para nada reviviese el final la cosa quedó en empate: la americano). Esta última razón tiene
“pueblo” del Software Libre. directiva que hubiera destruido el especial guasa, siendo, como es
Visto como una liguilla, un recuento tejido industrial del desarrollo España, el farolillo rojo en el ranking
resumido de los partidos más europeo no se aprobó, pero tampoco de países por inversión en investi-
emblemáticos de la temporada se ha hecho por aclarar las procelosas gación. Pero, volviendo al tema: todos
quedaría como sigue: aguas de las patentes europeas, donde estos motivos al lector familiarizado
Abril 2005, en la red: BitKeeper la ley dice que no se puede, pero las con el mundillo del mercadeo del soft-
contra GIT: a pesar de que vino prece- agencias de patentes, lo que se dice ware le resultarán curiosamente fami-
dido de disputas internas y de que patentar, patentan. Resultado: una X, liares. Exacto: están calcados (¡oh,
asistimos (al nada raro, todo hay que empate. coincidencia!) de las campañas pu-
decirlo) espectáculo de los dioses del Diciembre, en el Congreso de los blicitarias anti-software libre de cier-
Olimpo del Software Libre lanzándose Diputados: Software de “Patente” tas empresas que todos conocemos
rayos y centellas, el cambio de una contra Software Libre: A pesar de las bien y que una y otra vez se han refu-
aplicación propietaria (BitKeeper) a numerosas iniciativas regionales y las tado de manera categórica.
otra libre (GIT) para el control del obvias y comprobables ventajas que De momento, poco importa. Lo
desarrollo del kernel de Linux, es algo ha supuesto la implementación de único que importa es el rotundo 1 en
sin duda positivo para la comunidad. soluciones libres en ciertas la quiniela a favor de los de siempre.
Muchos desarrolladores se encon- autonomías, parece ser que muchos Habrá revancha.
traban incómodos con una situación políticos en Madrid no lo ven claro.
en la que la piedra angular del más Las proposiciones de Ley referentes
popular de los sistemas operativos a la implantación del software libre en
libres estuviera a merced de los capri- la Administración y que presentaron
chos de una tercera empresa y no bajo tanto ERC como IU en el Congreso de
el control de sus artífices. A pesar del los Diputados el pasado 14 de diciem-
“trato entre caballeros” establecido bre del 2005 sufrieron una seria der-
entre Torvalds y Larry McVoy, CEO de rota a manos de los dos partidos ma-
BitMover, ocurrió lo que tenía que yoritarios: 290 votos en contra y sólo Paul C. Brown
ocurrir (aún sin que Andrew Tridgell 15 votos a favor. ¿Las razones esgrimi- Director

WWW.LINUX- MAGAZINE.ES Número 14 3


085-088_Edu_L14 05.01.2006 13:15 Uhr Página 82

LINUX USER • Educación

La
La plataforma
plataforma educativa
educativa Moodle
Moodle

CLASES VIRTUALES,
CLASES REALES
En nuestra segunda entrega sobre moodle, vamos a aprender a uti-

lizar la plataforma como profesores y alumnos; examinaremos tam-

bién varios ejemplos prácticos de explotación en el entorno de

clases presenciales. POR JUAN RAFAEL FERNÁNDEZ GARCÍA

E
n el número anterior hicimos una Aristóteles y Kant y Euclides y Newton. cipal baza en un aula. Saber sacarle par-
primera presentación de la La informática globalizada que nos ha tido a nuestro LMS, con recursos adapta-
plataforma educativa libre moo- traído internet tiene sus orígenes en lo dos a los nuevos medios y en contacto
dle, de su historia y de las teorías cons- militar y ha sido invadida por los mer- con una comunidad de usuarios que
tructivistas sobre el aprendizaje en las caderes, pero tiene consecuencias socio- comparten sus aportaciones, será un
que se fundamenta. Expusimos también lógicas imprevistas. Por lo que respecta a gran paso adelante en una nueva forma
que nuestro modelo de enseñanza es el la escuela, rompe de nuevo sus límites; de enfocar la enseñanza y la educación.
presencial y que abogamos por el uso de que sepamos sacar partido de una Es sorprendentemente fácil hablar de
las aulas virtuales como si fueran aulas escuela que está inmersa en el mundo es usos reales. Debo reconocer humilde-
reales y no al contrario (si la de una tarea que nos corresponde a mente lo evidente, esta sección ya ha
enseñanza/aprendizaje es siempre una nosotros los educadores. La tecnología sido esbozada de forma magistral y sen-
relación personal, la herramienta que cambia la forma en que vivimos la reali- cilla por amigos como Joan Queralt Gil
nos interesa estará enfocada a favorecer dad, pero no lleva inherente una dimen- (que publicó en [1] Los diez deseos) o
esta relación y a crear conocimiento, sión ética: somos nosotros como ciu- Aníbal de la Torre (en diversos fragmen-
individual y colectivo, no a comparti- dadanos libres, como sujetos tos de su blog [2] y de sus participa-
mentarlo; ver el cuadro). autónomos, los que debemos ciones en numerosas listas de distribu-
Es verdad, la escritura se inventó para plantearnos un uso ético y educativo. ción). Como me han permitido amable-
romper las limitaciones de la memoria ¿Qué queremos hacer con esta tec- mente reproducirlos, me limito a
(¿alguien recuerda la cita de Platón del nología que introducimos en nuestras enriquecer mi modesto artículo con sus
artículo del número 6 sobre accesibili- aulas? Intentar dar una respuesta puede citas. Sigo el hilo de los diez deseos de
dad?), para que los dueños pudieran ser muy bien el hilo conductor de nues- Joan Queralt, aunque no su orden.
recordar el número de sus ovejas y de tros artículos. Empezaremos por las herramientas más
sus sacos de trigo, pero permitió a constructivas: foros y wikis.
Sócrates examinar y criticar las teorías Usos en una clase real 1.- El tercer deseo de Joan Queralt era:
de Anaxágoras (Fedón, 97c ss.). Y es que constructiva Quiero que los estudiantes discutan
podemos decir que la tecnología tiene ¿Hasta qué punto es útil una plataforma [por escrito] sobre un tema propuesto.
efectos colaterales inesperados: la conse- en un centro educativo? Lo diré pronto y Su solución: «Tienes que montar un foro
cuencia secundaria de la escritura fue de manera directa: más allá que de discusión. Puedes hacer que sólo el
que se creó un mundo humano intempo- cualquier herramienta especializada, al profe pueda plantear temas y los estudi-
ral, en el que era y es posible el diálogo mismo nivel que el editor de textos y el antes los contesten, o que cada estudian-
con los sabios de todos los tiempos, con navegador, la plataforma es nuestra prin- te inicie un tema y los conteste quien

82 Número 14 WWW.LINUX- MAGAZINE.ES


085-088_Edu_L14 05.01.2006 13:15 Uhr Página 83

Educación • LINUX USER

quiera o, el de las páginas principales de cada curso,


caso más la presencia de un bloque cursos que
común, que lista los cursos en los que el usuario está
todo el mundo inscrito pero que presenta además un Figura 3: Autoinscripción en un curso
pueda iniciar y enlace a Todos los cursos (figura 1). Pul- abierto.
contestar samos en él y nos aparecerá el listado
temas. Hay la completo (figura 2). Seleccionamos el desde un foro moodle. ¿Que para qué
posibilidad de curso de nuestro interés y si es una sirve esto? Para no tener que ir sitio por
adjuntar actividad abierta, (señalada por la sitio buscando las noticias (o artículos de
archivos a las ausencia de una llave), nos pedirá blog…) que nos interesen: ahora las
aportaciones (figura 3) que confirmemos nuestro podemos recoger (agregar) en una
(los archivos deseo de darnos de alta. página.
de imagen se ¿Cómo se crea un foro de discusión? ¿Cómo se participa? Como si par-
muestran, los Muy sencillo, si estamos dados de alta ticipáramos en una conversación escrita,
de texto como profesores de la actividad, nos se pueden crear nuevos debates o
quedan indica- aparecerá en la página principal el botón responder a los mensajes ya enviados
dos con un «Activar edición». Lo pulsamos y la (figura 6). También tenemos un tiempo
icono). Los apariencia de la página cambia por com- para modificar un mensaje que hemos
foros también pleto: podemos añadir bloques, recursos creado (normalmente una media hora) y
se pueden usar (páginas de texto y html, ficheros o podremos borrar nuestros mensajes si
para hacer pre- enlaces a otras páginas o a directorios) y nadie ha respondido a ellos. ¿Quiénes
sentaciones actividades (wikis, foros, consultas, participan? Aquellos que puedan acceder
personales, cuestionarios…), cambiarlos de sitio, al servidor de la plataforma (todo el
Figura 1: Cómo encontrar opiniones borrarlos, etc. Para añadir un foro pul- mundo, si está en internet) y estén dados
más cursos alojados. sobre un samos en agregar actividad y selec- de alta en la actividad. Es decir, no tiene
tema, para cionamos «Foro». Nos aparecerá la que ser una discusión en el interior de
exponer trabajos, etc.» página de configuración del foro (figura una clase que se está viendo presencial-
¿Y cómo se hace esto? ¿nos ponemos 4), con ayuda contextual para cada mente, sino que puede tratarse de una
manos a la obra? Dejábamos en el punto. Como estamos haciendo un puesta en común entre dos grupos de
artículo primero de esta serie nuestra artículo práctico daremos algunos conse- centros diferentes que han hecho una
exploración de moodle cuando nos jos prácticos. En un curso es conveniente investigación común, o intercambios
habían inscrito en una actividad (ya tener un foro de inscripción obligatoria entre alumnos de distintos países que
sabemos que aunque se llamen cursos para noticias y novedades y al menos practican un idioma.
por su origen puede tratarse de cualquier otro (más tiene que estar justificado En la solución propuesta por Joan se
porque es fácil caer en la dispersión) de está enfatizando el momento de la dis-
debate abierto; en el primero sólo los cusión; si lo que se busca es que se
profesores podrán crear nuevos hilos llegue a conclusiones, se puede acom-
(«debates» en la terminología de moo- pañar de un wiki; los veremos en un
dle), en el abierto todo el mundo podrá momento.
crearlos, pero es conveniente enfatizar 2.- (Quinto deseo de Joan) Quiero que
que el exceso de hilos lleva también a la los estudiantes trabajen en grupo
dispersión, y de ahí a la muerte del foro, pequeño y acaben haciendo un docu-
sólo hay un paso; «inscripción obligato- mento común.
ria» se refiere a si los mensajes van a ir Su solución: «Tienes que montar tan-
acompañados de una copia de correo a tos foros como equipos quieras [foros por
Figura 2: Listado completo de cursos. los inscritos, lo que tiene sentido si el grupos]. Vale la pena asignar a qué grupo
tráfico no es excesivo y queremos estar va cada participante y aclararles mucho
tipo de actividad: grupos de trabajo o seguros de que los participantes reciben qué trabajo tienen que hacer y qué pro-
discusión, etc.). Aquí se produce una la información y las nuevas aporta- ceso tienen que seguir. Por ejemplo, cinco
curiosa paradoja: un invitado ve el lis- ciones. estudiantes tienen que recoger informa-
tado completo de cursos, pero cuando ción sobre las temperaturas máximas y
nos identificamos, el sistema nos pre- Otro detalle interesante es el de los mínimas de treinta ciudades europeas
senta únicamente las actividades en las canales RSS (para saber más sobre este durante una semana y hacer un gráfico.
que estamos inscritos. La plataforma estándar cada vez más utilizado leer Se le asignan seis ciudades a cada uno y,
puede alojar actividades de libre acceso, [3]). Nos permite generar noticias que cuando tienen los datos, los cuelgan en el
en las que podemos autoinscribirnos. podrán ser leídas desde cualquier agre- foro de su grupo. Entonces, con todas los
¿Cómo se encuentran? Existe, y se gador; en la figura 5 vemos cómo liferea datos a la vista, cada estudiante hace su
encuentra frecuentemente en el diseño nos presenta las noticias generadas gráfico en una hoja de cálculo y lo mues-

WWW.LINUX- MAGAZINE.ES Número 14 83


085-088_Edu_L14 05.01.2006 13:15 Uhr Página 84

LINUX USER • Educación

moodle el diario se ha convertido en una No creo que los lectores de nuestra


modalidad de la tarea, como Tarea de revista tengan necesidad de que se les
texto en línea]. Se podrán hacer tantos explique qué es un wiki (se ha tratado en
diarios como queramos, pero cada uno varios de los números). Recordaremos
de ellos tiene que pedir sólo una cosa que es un recurso que permite crear do-
(p.ej.: explica qué es la fotosíntesis, di cumentos de forma cooperativa, es decir,
qué te parece nuestro sistema parlamen- que todos tienen permiso para modificar
tario, haz una redacción con el tema: un texto que se ha creado en la
«Recuerdos de la niñez»). El estudiante plataforma. La documentación de moo-
escribirá en una pantalla y sólo con un dle, [5], nos lista otros posibles usos de
clic lo dejará en el sistema a disposición un wiki en una clase (toma colectiva de
del profesor/a que se lo leerá, le hará apuntes, tormenta de ideas…).
Figura 4: Configuración de un foro de dis- comentarios (no una corrección esmer- Un wiki se crea del mismo modo que
cusión. ada) y lo puntuará (8/10). Aquí sólo el se creaba un foro. Se usa (figura 7) pul-
estudiante ve la corrección, pero no puede
tra. El grupo puede escoger el mejor de ver los trabajos de los compañeros ni las
todos y presentarlo al profe.» otras correcciones.»
Quizás tenga sentido el foro como Joan destaca correctamente una carac-
momento de la discusión, pero posterior- terística de estas tareas de texto en línea:
mente debe crearse el documento, o bien cada tarea sólo es vista por el autor y el
como wiki o bien como taller. profesor. Por el contrario es posible
3.- (deseo séptimo) Quiero que los realizarla de forma abierta mediante uno
estudiantes creen un vocabulario/ de los tipos de wiki. Aníbal [4] profun-
fichero de conceptos específico del diza en el tema del cuaderno personal
tema. del alumno y expone el siguiente ejem-
Solución de Joan: «Tienes que montar plo de uso del wiki de estudiantes:
un glosario. En un glosario los estudian- «(…) durante todo el curso, mis alumnos Figura 5: Un agregador recoge las noticias
tes podrán escribir definiciones que el y alumnas han estado usando un wiki, de las plataformas.
profe puede (o no) revisar y publicar. pero de forma personal, como cuadernos
Después las «fichas» quedan a la vista de de clase o portfolios:
todo el mundo para ser consultadas y se • Cada alumno ha tenido en Moodle un sando en la pestaña «Edición» y uti-
podrán adjuntar ficheros de imágenes. wiki de acceso personal y restringido. lizando el editor integrado para añadir,
Por ejemplo, queremos reunir biografías • Moodle les incorpora un editor HTML modificar o borrar partes del documento.
de poetas de la generación del 56: cada por lo que no se deben preocupar dema- La pestaña «Historial» nos muestra quién
estudiante busca información sobre un/a siado por la sintaxis wiki [ni html]. ha participado en la creación y qué ha
poeta y lo escribe en una entrada del • La única sintaxis específica que hecho.
glosario y añade una foto digital (encon- aprendieron en un ratito fue la de crear Una opción adicional (y ya van tres)
trada en internet), el profe las revisa y, si nuevas páginas dentro del wiki. Es decir, sería crear un taller, para que tanto la
son correctos, acepta la publicación. Los desde el primer día ya crearon una página redacción como los comentarios sobre
estudiantes pueden consultarlas por inicial desde donde iban creando y ella fueran compartidos (ver [6]). Por
orden de creación, por orden alfabético y enlazando otras nuevas. cierto, además (cuatro) moodle 1.6
por categorías.» • A partir de ahí, durante todo el curso, incluirá un nuevo módulo blogs, con dos
La creatividad de los alumnos hace cada vez que les planteaba una nueva ventajas importantes: la experiencia dice
que un glosario pocas veces sea un actividad individual, ellos ya sabían que que los usuarios disfrutan de disponer de
glosario. Puede ser desde un diccionario debían crear una nueva página en el wiki un espacio «de su propiedad», donde
inglés-español hasta un embrión de donde escribirían los resultados pueden escribir de forma libre; estos
wikipedia. ¿Por qué no? obtenidos. blogs son otra interesante posibilidad a
• Lo mejor de todo este experimento es que la hora de plantearnos el desarrollo de
El cuaderno del estudiante yo he podido realizar un seguimiento un portfolio electrónico.
Un segundo uso se centra en el continuo de su actividad sin más que ir 5.- (el segundo deseo) Quiero que los
seguimiento del trabajo individual de los revisando el wiki de cada alumno. Y ellos estudiantes hagan un documento (de
alumnos. tienen también centralizado todo su tra- texto con un editor, o un gráfico en
4.- (Era el primer deseo de Joan) bajo; incluso desde la página principal de hoja de cálculo, o un dibujo, etc.) y me
Quiero que los estudiantes hagan una su wiki han podido en cada momento lo envíen para que sólo yo lo mire y lo
redacción sobre un tema que les pro- saber qué tienen hecho y qué no. puntúe. No habrá ningún otro retorno.
pongo, que me la envíen y yo voy a • Además he escrito anotaciones de correc- Solución de Joan: «Tienes que crear
devolverles un comentario. ción en alguna página de actividad una tarea. El estudiante sabe las tareas
Su solución: «Tienes que hacer un creadas por ellos, usando un color dis- que tiene pendientes, tiene las instruc-
diario [Nota: en las nuevas versiones de tinto para resaltar mi aportación.» ciones por hacer el trabajo y la hace con

84 Número 14 WWW.LINUX- MAGAZINE.ES


085-088_Edu_L14 05.01.2006 13:15 Uhr Página 85

Educación • LINUX USER

Pizarra, periódico y libro bles ejemplos de uso pedagógico de la


Otro tipo de recursos tiene que ver con plataforma hasta el siguiente número;
la posibilidad de presentar a los en él exploraremos el estado de moo-
alumnos materiales o apuntes, textos, dle con respecto a los recursos multi-
gráficos, etc. media, o cómo se integran varias he-
rramientas de trabajo (por ejemplo el
7.- (deseo noveno) Quiero que los módulo para HotPotatoes o para
estudiantes lean un texto [o vean un Webquest) y de seguimiento del pro-
video, escuchen una grabación…] greso de los alumnos (hablaremos de
que les he preparado.
Solución de Joan: «Ante todo tienes
que subir el fichero al sistema,
Figura 6: Escribiendo en un wiki. (preferible en formato PDF [se refiere a
un formato que pueda ser reconocido
un programa aparte (OOWriter, OOCalc, por cualquier sistema operativo y que
Gimp, etc.) y la guarda en su ordenador. garantice la estabilidad del con-
Cuando considera que la tiene acabada tenido]), a través de la opción
sólo tiene que pulsar el botón «Explorar» «Ficheros» (…) Cuando clicas verás
para localizarla en su disco duro y con el qué ficheros o archivos tienes guarda-
botón «Enviar» dejarla en el sistema a dos en el sistema dentro de tu curso; si
disposición del profe. Éste la abre, la no hay ningún fichero puedes subirlos
mira y la valora (correcto, bien, 7, etc.). pulsando el botón «Enviar un fichero»
Esta valoración es el único retorno que que abre un cuadro para localizarlo en Figura 7: Ejemplo de debate en un foro.
encuentra el estudiante. Hay la posibili- tu ordenador. Cuando lo tengas a la
dad, aun así, de enviarle un email.» vista selecciónalo con un clic y pulsa la integración con LAMS). También
Bueno, como moodle avanza, ha «Abrir», aparecerá el nombre y la ruta nos falta ver cómo se importan nuevos
surgido un nuevo medio de comuni- en pantalla, si es correcto pulsa cursos de otros gestores de contenidos
cación: ahora es posible enviar mensajes «Enviar» y se enviará al sistema. Una educativos (el módulo scorms). Estos
de persona a persona (figura 8) sin salir vez esté en moodle ya podrás crear un dos últimos items nos llevarán a
de la plataforma. recurso de tipo fichero que, te permi- analizar hasta qué punto avanza moo-
6.- (cuarto deseo) Quiero que los tirá escoger entre los diferentes ficheros dle en el cumplimiento de los están-
estudiantes hagan un documento (de de tu curso. Cuando esté preparado el dares educativos. Creo que los temas
texto, o un gráfico en hoja de cálculo, estudiante, haciendo un clic sobre este son interesantes, nos vemos el mes
o un dibujo, etc) y lo muestren a todo recurso, accederá al contenido en la que viene. ■
el mundo (a los otros estudiantes y al parte inferior de la ventana del curso,
profe) para poderlo mirar y puntuar de manera que sin salir de él podrá
(los otros estudiantes también). leer tu texto. Recuerda, no obstante,
RECURSOS
Solución de Joan: «Tienes que mon- que los humanos sólo retenemos en la
tar un foro. Los foros permiten adjun- memoria un 10% de lo que leemos
tar ficheros, de tal modo que un frente al 90% de lo que hacemos (si lo
[1] Los diez deseos de Joan Queralt Gil:
estudiante hace el trabajo encomen- habías leído antes es probable que ya http://moodle.org/mod/forum/
dado con un programa aparte lo hubieras olvidado, verdad? =:-)» discuss.php?d=6699
(OOWriter, OOCalc, Gimp, etc) y lo Una alternativa sería crear los docu-
[2] Blog de Aníbal de la Torre: http://
guarda en su ordenador. Cuando lo mentos en formato html directamente www.adelat.org
tiene hecho va al foro y hace una inter- con el editor integrado. Mucho más
[3] Formatos de canales RSS: http://es.
vención del tipo: «este es mi trabajo, a elaborado sería el uso de los módulos
wikipedia.org/wiki/RSS_(formato)
ver qué os parece» y adjunta su fichero lección (una lección se compone de
[4] Aníbal de la Torre y el cuaderno per-
sólo pulsando los botones «Explorar» y un número de páginas y, opcional-
sonal del alumno: http://www.adelat.
«Enviar». Este archivo adjunto queda a mente, tablas de rama o de con-
org/index.
la vista de todos los participantes que tenidos, cada página contiene algún php?title=el_wikicuaderno&more=1&
le podrán responder con críticas o tipo de contenido y, por lo general, ter- c=1&tb=1&pb=1
ideas. El profe, si así lo desea, le puede mina con una pregunta, los alumnos
[5] Otros usos de un wiki: http://moodle.
devolver el archivo totalmente co- acceden a las diferentes páginas de la org/mod/wiki/view.
rregido adjuntándolo también en su lección sólo cuando han contestando a php?id=4628&page=Wiki
respuesta.» las preguntas previas) y libro. [6] Taller compartido moodle: http://
Una alternativa es que los estudian- moodle.org/mod/wiki/view.
tes envíen sus tareas y el profesor las En el próximo número… php?id=4628&page=Taller
cuelgue en una carpeta como El espacio nos ha obligado a posponer
recursos. O bien crear un taller. la conclusión de este repaso a los posi-

WWW.LINUX- MAGAZINE.ES Número 14 85


ADMINISTRACIÓN • DM-Crypt

Encriptación del Disco Duro con DM-Crypt, LUKS y Crypsetup

MENSAJES
SECRETOS
Si se toma en serio la seguridad, pruebe la encriptación del

disco duro con DM-Crypt y LUKS. POR CLEMENS FRUH-

WIRTH Y MARKUS SCHUSTER

L
a encriptación de ficheros es un será capaz de leer los ficheros privados cualquier rastro dejado, los usuarios de
medio popular para asegurarse la si están encriptados, ¿cierto? Linux pueden elegir encriptar los datos
privacidad y la seguridad de los En realidad, la encriptación selectiva a un mayor nivel usando DM-Crypt. El
datos a nivel de ficheros. Un intruso que de ficheros proporcionada por utili- módulo del kernel dm-crypt trabaja al
logre colarse a través del cortafuegos no dades tales como GnuPG cubre alguna nivel del dispositivo de bloques, permi-
de sus huellas, pero no todas. Un intru- tiendo a los usuarios encriptar parti-
Clemens Fruhwirth es el autor so puede aún aprender sobre su sis- ciones completas. El proceso es trans-
de LUKS y del papel blanco titu- tema… y quizás incluso reconstruir parente a la aplicación, permitiendo el
lado “New Methods in Hard Disk algunos de los ficheros de datos fis- acceso al usuario que haya sido valida-
Encryption”, que definen la goneando los ficheros secretos, los tem- do en el sistema. DM-Crypt encripta el
teoría subyacente. Clemens tam- porales, los datos de configuración y el denominado dispositivo de respaldo (el
LOS AUTORES

bién es el inventor de ESSIV y el historial de comandos. El directorio disco físico) y hace uso de un dispositi-
implementador de LRW-AES y /var/spool/cups, por ejemplo, podría vo de bloque virtual para proporcionar
EME para Linux. Markus Schus- proporcionar datos de ficheros que se acceso al contenido en claro bajo
ter es un integrador de sistemas
hayan imprimido anteriormente y he- /dev/mapper. Los usuarios pueden
con Bits & Bytes (un proveedor
rramientas como Gnome Thumbnail acceder a este dispositivo de bloques
de servicios IT de Bavaria); se
Factory podrían estar almacenando una para configurar y montar el sistema de
define a sí mismo como un
fanático del software libre. Ha copia desencriptada de las imágenes ficheros. Este artículo examina la tec-
estado usando LUKS desde su encriptadas. nología subyacente a DM-Crypt y la
creación. En vez de seguir cada acción realiza- nueva herramienta de gestión LUKS
da sobre cada fichero para eliminar (Linux Unified Key Setup).

68 Número 14 W WWWW. LWI N


. LUI N
XU-M
XA-M
GA G
Z IANZEI .NEES. E S
DM-Crypt • ADMINISTRACIÓN

La Configuración Se pueden parametrizar dos caracterís- particiones encriptadas. Si se pierden


DM-Crypt se instala en una capa flexible ticas importantes de cryptsetup: la ge- estos ficheros o no puede recordar la
conocida como dispositivo mapper. Los neración de claves y la encriptación. La configuración de un disco portable, se
módulos del dispositivo mapper se con- primera especifica cómo generará crypt- perderá el acceso a los datos encripta-
figuran a través de las denominadas setup las claves desde una contraseña dos. LUKS (Linux Unified Key Setup)
tablas DM, ficheros de texto simples que proporcionada por el usuario. Por defec- elimina esta segregación.
especifican cómo debe manejar el dis- to usa un algoritmo hash, que propor- LUKS es un estándar formal [3], imple-
positivo mapper los accesos a las zonas ciona al usuario la libertad de selec- mentado por la herramienta cryptsetup-
del disco virtual. El programa dmsetup cionar una contraseña de cualquier lon- LUKS [4] (Figura 2). Este último es una
procesa estos ficheros de texto y utiliza gitud. El código hash comprimirá la versión del cryptsetup original. LUKS
las llamadas a ioctl() para pasar los información para proporcionar un define una cabecera para las particiones
detalles al kernel. número fijo de bytes. La Figura 1 mues- DM-Crypt (Figura 3); la cabecera incluye
El formato de las tablas DM para DM- tra a cryptsetup usando los valores por toda la información para la generación
Crypt es muy pesado para usarlo a defecto: el hash Ripemd-160 genera una segura de la clave. Como es parte de la
diario. El software espera que la clave clave de 256 bits. partición encriptada, la configuración
sea una cadena hexadecimal de tamaño Hay que seleccionar dos parámetros está siempre disponible justo allí donde
fijo. El módulo utiliza la clave para para el proceso de encriptación: el algo- se necesita.
encriptar los datos del dispositivo de blo- ritmo y el modo. Cryptsetup pasa estos Cryptsetup-LUKS y el cryptsetup origi-
ques. Sin embargo, almacenar la clave parámetros y la clave obtenida al kernel nal también difieren con respecto a la
de forma permanente en los ficheros de y el módulo DM-Crypt coordina el pro- forma en la que generan las claves desde
las tablas DM es como dejar la llave col- cedimiento, usando el API Crypto para una frase de paso (Figura 2). La gestión
gando del pomo de la puerta. Por ello, la manejar la encriptación. de claves de LUKS está basada en tres
clave hay que introducirla en el momen- conceptos: jerarquía de claves, PBDKDF2
to de montar el dispositivo. Utiliza la Fuerza, LUKS y almacenamiento de información anti-
Teclear hasta 32 caracteres hexadeci- Desafortunadamente, cryptsetup tiene forense.
males de memoria puede que no sea un lado negativo. Separa los detalles de
fácil, pero cryptsetup puede ayudar. lo que hay que hacer con un conjunto de Gestión de Contraseñas
cryptsetup es una herramienta que ge- información encriptada de la informa- Seguras
nera una clave criptográfica desde (más ción encriptada. La mayoría de los La aplicación cryptsetup pasa la clave,
simple) una fase de paso, y luego le pasa parámetros de cryptsetup se encuentran que se genera desde la contraseña, direc-
la clave al kernel. La Figura 1 muestra el en scripts o en ficheros de configuración tamente al kernel. La mayor pega a esta
entorno cryptsetup. que, obviamente, no pueden estar en las solución es que el software necesita

Figura 1: cryptsetup (arriba) pide al usuario una contraseña y utiliza una Figura 2: cryptsetup-LUKS almacena los parámetros de la partición
función hash para crear una clave de longitud fija, que es pasada al kernel encriptada en la cabecera de la partición del dispositivo de bloques
(centro). DM-crypt (abajo) utiliza la clave para encriptar y desencriptar de respaldo (arriba a la izquierda). La clave obtenida protege la clave
los datos del disco duro (o los dispositivos de bloques de respaldo). maestra que encripta los datos en la partición.

WWW.LINUX-MAGAZINE.ES Número 14 69
ADMINISTRACIÓN • DM-Crypt

reencriptar todos los datos cada vez que una contraseña de contingencia o pro- de la contraseña y no proporcionaría la
la contraseña se modifica. Cryptsetup- porcionar múltiples credenciales dife- suficiente entropía. Un atacante podría
LUKS presenta una capa de gestión de rentes a los usuarios. LUKS reserva hasta simplemente ejecutar un ataque basado
contraseñas adicional para eliminar este ocho huecos para contraseñas en la en diccionario en vez de intentar las
problema. La jerarquía de claves inserta cabecera (Figura 3). 2128 claves posibles que proporciona
una capa de encriptación extra entre la una clave de 128 bits. Un diccionario
clave derivada y la clave usada por el Mejor que un Hash inglés, por ejemplo, podría tener menos
kernel para proteger los datos de la parti- Como cryptsetup, LUKS necesita un de 220 entradas. 220 es una potencia 108
ción. Además, la clave derivada tan sólo algoritmo hash para convertir una con- veces menor que el espacio de la clave
protege la denominada clave maestra, traseña de longitud arbitraria en un completo; una reducción fatal, ya que
que encripta los datos de la partición número fijo de bytes. Para ello, utiliza la casi cualquiera podría atacar una clave
(Figura 2). solución genérica PBKDF2 (Password- de 20 bits.
Para cambiar la contraseña, cryptset- Based Key Derive Function, Version 2). Para salvar este problema, PBKDF2
up-LUKS desencripta la clave maestra PBKDF2 es un componente PKCS#5 utiliza deliberadamente una función
usando la contraseña antigua, reencripta (Public Key Cryptography Standard 5). compleja para derivar una clave a partir
la clave usando la nueva contraseña y PKCS#5 fue especificado en RFC 2898 de la contraseña. Aunque esto tarda un
sobrescribe la copia de la antigua clave [5]. Entre otras cosas, PBKDF2 hace uso poco, el usuario no lo apreciará, ya que
maestra con el valor nuevo. Como los del estiramiento y la dispersión para la operación sólo se realiza una vez. Un
datos no se ven afectados por la clave impedir los ataques basados en dic- atacante tendría que intentar 220 frases.
maestra, la partición encriptada per- cionarios. Si cada una puede consumir un segundo,
manece segura. Esto podría ahorrarle Los usuarios prefieren usar con- le llevaría 12 días (220 segundos). Si el
medio día de trabajo duro en el caso de traseñas cortas y fácilmente recordables. usuario combina dos palabras para for-
que tenga que desencriptar 120GBytes; Fechas de nacimiento y nombres de mas- mar una contraseña, el ataque podría lle-
la jerarquía de claves reduce el tiempo cotas son mucho más comunes que var 30.000 años (240 segundos). Esta
necesario para cambiar una contraseña a cadenas aleatorias de 22 caracteres. barrera artificial se conoce como esti-
unos pocos segundos. Desafortunadamente, se necesitan al ramiento. PBKDF2 usa una función de
LUKS almacena la clave maestra menos 22 caracteres para representar estiramiento que implica un esfuerzo
encriptada en la cabecera de la partición una clave de 128-bits. Pero no hay computacional infinitamente variable.
sin imponer una restricción de copia mucha gente que tenga la capacidad de
simple. Para soportar múltiples con- recordar o incluso teclear Dispersión y Estiramientos
traseñas para una misma partición, Sq5woq7501VUE5irAXau.a cada día. Una Pero esto no es suficiente para frenar a
LUKS puede almacenar múltiples copias función de derivación satisface ambos un hacker determinado. Un atacante
equivalentes de la clave maestra y requerimientos: el usuario puede teclear podría crear una tabla enorme que con-
encriptar cada una de ellas con una una contraseña fácilmente recordable y tuviera las entradas y las salidas de la
cadena diferente. Cada una de estas con- la función genera una clave más comple- función de estiramiento para eliminar la
traseñas proporciona al usuario acceso al ja. necesidad de repetir entradas en ataques
contenido del disco en claro. Esto es par- Un algoritmo que genera una clave de futuros. Para impedir que pueda suceder
ticularmente útil si se desea almacenar 128 bits a partir de una contraseña más esto, PBKDF2 añade una cadena selec-
corta tiene que re- cionada aleatoriamente a la contraseña
llenar el espacio antes de generar la clave. LUKS almace-
entrópico, es decir, na la versión en claro en la cabecera de
el espacio entre el la partición.
grado de aleato- Ahora, el atacante necesita añadir el
riedad en el domino valor hash PBKDF2 para cada palabra
de la contraseña y el del diccionario. De hecho, el atacante
dominio de la clave. necesitaría los valores hash de cada pa-
Un simple rellenado labra del diccionario junto con cada
produciría una clave combinación de posibles cadenas añadi-
mayor, pero no sería das. Cuanto mayor sea la dispersión,
más aleatorio que la mayor tendría que ser la tabla que nece-
propia contraseña y sitaría. PBKDF2 aumenta el tamaño de la
sería fácilmente tabla a una escala inimaginable. El uni-
adivinable. verso tiene menos átomos que el número
Imaginemos que de entradas que debería contener un dic-
Figura 3: LUKS añade los parámetros que necesita cryptsetup- un usuario introdu- cionario universal para contener cada
LUKS para generar la clave desde una contraseña introducida por el jera solamente pa- combinación PBKDF2.
usuario a la cabecera de la partición encriptada. Cada clave con- labras inglesas; esto Los atacantes se ven forzados a
tiene una copia encriptada de la clave maestra que DM-Crypt utiliza restringiría el reducir el número de intentos con espe-
para proteger los datos. alcance del dominio ranza de acertar. El mecanismo de con-

70 Número 14 WWW.LINUX-MAGAZINE.ES
DM-Crypt • ADMINISTRACIÓN

traseñas de UNIX utiliza una solución


parecida: sin embargo, la dispersión es
mucho menor en este caso (12 bits alma-
cenados en los dos primeros dígitos).

Triturando
Como se mencionó antes, es muy difí-
cil deshacerse de los datos en un dis-
positivo de almacenamiento magnético
[2]. Para cambiar efectivamente o bor-
rar la contraseña de la jerarquía de Figura 4: El modo de encriptación ECB (Elec- Figura 5: En el modo de encriptación CBC
claves, es de vital importancia destruir tronic Code Book) encripta cada bloque de (Cipher Block Chaining) realiza la operación de
completamente la copia antigua de la texto en claro independientemente de cada XOR con los resultados de una vuelta de
clave maestra. Con un poco de suerte, bloque. Esto significa que la misma entrada encriptación XOR con el siguiente bloque. Esto
un usuario podría escribir el sector co- Pi a la función de encriptación E resultará asegura que los bloques idénticos de texto en
rrecto del disco duro después de unos idéntica a la salida Ci. claro producirán distintos textos cifrados.
pocos intentos y sobrescribir física-
mente la antigua clave maestra. Pero la
suerte es algo en lo que los usuarios y Neutralización de Expertos una gestión de claves con calidad para
los criptógrafos raramente confían. en Recuperación de Datos las particiones encriptadas con DM-
El firmware del disco duro está con- El autor de LUKS introdujo fragmentos Crypt.
tinuamente combatiendo la destruc- de información antiforense (AF Splitter)
ción de datos, ya que lo que intenta para confundir a los expertos en recu- Salvando el Medio de
por todos los medios es justo lo con- peración. Para reducir la probabilidad Almacenamiento
trario, salvarlos. Una de las formas en estadística de seguirle la traza a los Lo que los usuarios principalmente
las que el disco duro proporciona ficheros borrados que hayan sobrevivido esperan de un disco encriptado es la
mayor seguridad es reasignando los en el medio de almacenamiento magnéti- encriptación. DM-Crypt proporciona dos
bloques dañados, una técnica simple co, AF Splitter expande los datos en un modos de cifrado: ECB (Electronic Code
para detectar sectores que son difíciles factor de cuatro mil. Los datos expandi- Book) y CBC (Cipher Block Chaining).
de leer. El firmware automáticamente dos no son redundantes; el registro com- Ambos modos están sujetos a unas
copia estos sectores a un área del disco pleto es siempre necesario para recupe- pocas vulnerabilides, todas ellas se
especialmente reservada para este rar la clave maestra. La operación con- resuelven por el candidato más promete-
propósito y redirecciona cualquier traria consiste en reunir de nuevo en dor del momento LRW-AES [6][7] (LRW:
operación de lectura o escritura poste- memoria estos datos para borrarlos fácil- Liskov, Rivest, Wagner; AES: Advanced
rior del sector original a la copia. mente. Encryption Standard).
El sector original no puede ser borra- AF Splitter distribuye los datos origi- ECB (Figura 4) no se merece realmente
do desde este punto en adelante, ya nales (Variable x) basado en la fórmula el nombre de Modo de Cifrado:
que el firmware redireccionará x= a1 + a2 + a3 + … + a4000. El Almacena cada bloque individual cifrado
cualquier intento de escritura a la zona algoritmo genera las variables a1 hasta resultante sin realizar ningún cálculo
reservada. Desafortunadamente, esto a3999 aleatoriamente y calcula a4000 adicional. Esto significa que para cada
podría dejar fragmentos de la clave en para balancear la ecuación. El combi- clave, el texto en claro siempre se con-
el disco duro, lo que implicaría que un nador suma los elementos ai y para ello vertirá en el mismo texto cifrado.
experto en recuperación de datos o un precisa cada uno de ellos individual- Expresado matemáticamente, ECB es
hacker determinado, podría aún acce- mente, no hay redundancia. Si desa- una función biyectiva de texto en claro a
der y recuperar los fragmentos usando parece un elemento, la ecuación no se texto cifrado. Esto es peligroso si el ata-
un firmware modificado. puede resolver y no se puede calcular x. cante conoce el texto en claro de un
Esto es un problema grave para las Para destruir los datos, tan sólo hay bloque encriptado, lo que puede
claves maestras de LUKS, que son muy que borrar alguno de los 4000 sectores averiguar a partir de las cabeceras
pequeñas en comparación con el implicados en el proceso, ya que la estandarizadas del sistema de ficheros,
tamaño de los sectores (128, 192 o 256 operación de combinación necesita el por ejemplo.
bits para AES) y por ello es fácil que se registro completo. Desde luego, es Si el atacante sabe que el primer sector
encuentren dentro de un sector. Todo mucho más fácil sobrescribir uno de los de la partición encriptada empieza con
ello si sucediera que el firmware deci- 4000 sectores. Las estadísticas muestran una serie de ceros, sabrá cómo se encrip-
diera mover el sector en cuestión a la que esto funciona bastante bien, tal y tan los ceros. No necesita una clave para
zona reservada cuando la contraseña como se puede leer en [1]. Gracias a AF ello, y simplemente puede comparar
antigua aún siguiera activa. Ni los dis- Splitter, las contraseñas pueden ser cam- todos los bloques de texto cifrado con el
cos SCSI ni IDE disponen de comandos biadas sin dejar ningún rastro detrás. En comienzo de la partición. Si el atacante
que proporcionen acceso al sector ori- combinación con la jerarquía de claves y descubre bloques idénticos, sabrá que la
ginal. PBKDF2, esto proporciona al usuario desencriptación de estos bloques se co-
rresponde con ceros. El mismo principio

WWW.LINUX-MAGAZINE.ES Número 14 71
ADMINISTRACIÓN • DM-Crypt

ESSIV

Para generar una marca de agua, el tra en la Figura 6a. Las marcas de puede ser compensado restando 1 de
atacante necesita crear dos sectores agua abren una brecha aplicando P i - P 1 (Figura 6b). Si el atacante con-
idénticos en el figura todas las sub-
disco. El objetivo secuencias Pi como el
es manipular el primer sector, los tex-
mecanismo de tos cifrados son idén-
encriptación de ticos. ESSIV
forma que propor- (Encrypted Salt Sector
cione dos resulta- IV) resuelve este
dos idénticos para Figura 6a: El tradi- Figura 6b: Las mar- Figura 6c: ESSIV impide que problema. Pasa el
encriptar dos sec- cional CBC cas de agua compen- el posible atacante calcule el número del sector a
tores en el disco. comienza encrip- san el cambio de IV IV porque no conoce la clave una función, el resul-
En la Figura 5 se tando mediante por el inverso del secreta K. tado de ello depende
puede ver que el XOR-ing la IV con cambio en P1. de la clave secreta
atacante puede el primer bloque de (Figura 6c). El ata-
identificar todos texto en claro. cante no puede
los valores de manipular P 1 en el
entrada para Pi, pero no el IV. Éste es 1 en vez de Pi al segundo sector. El IV sector dos para compensar por la
el valor usado para modificar el para el sector dos es algo mayor que diferencia IV. Tampoco tiene la clave
primer texto en claro, como se mues- el IV del sector uno. Este incremento necesaria para calcular los IVs.

se puede aplicar a cualquier bloque de dos de texto cifrado. subsecuentes rondas. Esto no es útil para
texto en claro. la encriptación de los discos duros,
Efecto de Bola de Nieve donde toda la partición tendría que ser
Ocultar y Buscar Una de las características de esta clase reencriptada si el contenido del primer
Hay dos formas básicas de ocultar esta de recursión es que la primera ronda de sector se ve modificado. La respuesta
redundancia del texto en claro. Una solu- encriptación produce un efecto en las típica aquí es que hay que ver cada sec-
ción es añadir otro componente al proce- tor como el resultado de una función
so de encriptación; este componente recursiva y hay que procesar cada sector
necesita ser único para cada localización independientemente del resto.
del disco, por ejemplo la posición en el Esto lleva a un problema familiar: dos
disco duro. Esto significaría que bloques sectores con idéntico texto en claro dan
idénticos de texto en claro en posiciones como resultado el mismo texto cifrado.
diferentes proporcionarían resultados Aunque los sectores son mucho mayores
diferentes tras su encriptación. que los bloques, en un cifrado de blo-
La segunda solución utiliza un modo ques, el contenido aun podría per-
de encriptación que tiene en cuenta los manecer idéntico: imagínese un usuario
bloques ya encriptados. La forma más creando múltiples copias de un mismo
sencilla de implementarlo es haciendo fichero, por ejemplo. Aquí es donde se
uso de la recursión. CBC (Cipher Block aplica el primer truco: el número de sec-
Chaining) puede ser simple, pero pro- tor cambia la encriptación especificando
duce un sistema de encriptación recursi- el vector de inicialización (IV, Figura 5).
va efectiva. Realiza una operación de Dos modificaciones diferentes del primer
XOR entre el texto del bloque cifrado texto en claro dispararán diferentes efec-
anteriormente con el texto en claro ac- tos de bola de nieve y conducirán a difer-
tual. CBC entonces encripta el texto en entes textos cifrados.
claro modificado y aplica el resultado al La variante estándar de DM-Crypt apli-
siguiente bloque de texto en claro. ca el número de sector directamente
Échese un vistazo a la Figura 5 para como en IV. Esto está referido a una gen-
ver cómo funciona CBC. Incluso si varios eración plana IV. Desafortunadamente,
bloques de texto en claro contiguos son Figura 7: El modo de encriptación LRW no uti- esta solución es vulnerable a los ataques
idénticos, la recursión produce un efecto liza recursión. Evitar el tipo de ataque ECB de marcas de agua, donde un atacante
de bola de nieve. Esto significa que blo- (Figura 4) añadiendo blancos. El factor de blan- introduce datos para que posteriormente
ques de texto en claro idénticos son queo se calcula haciendo referencia a la posi- pueda redescubrir dichos datos sin tener
modificados usando diferentes resulta- ción en el disco duro de n y a la clave secreta K. que conocer la clave.

72 Número 14 WWW.LINUX-MAGAZINE.ES
DM-Crypt • ADMINISTRACIÓN

en el número de bloque. Luego añade el ciones actuales a dos áreas de memoria,


factor de blancura al texto en claro y una implementación genérica no con-
encripta la suma, antes de añadir el fac- seguiría lo que el autor pretende y esto lo
tor de blancura de nuevo (Figura 7). habría llevado a abandonarlo por
Estos dos pasos son conocidos como pre- frustación [8].
blanqueado y postblanqueado. Ligan el Por ahora, DM-Crypt es el modo de
texto cifrado con su posición en el disco cifrado más seguro implementado de
duro para obtener resultados de CBC-ESSIV, al menos hasta que alguien
encriptación diferentes para textos en que no le interese en exceso las inter-
Figura 8: El dispositivo mapper se localiza claro idénticos almacenados en difer- minables e inútiles discusiones de la lista
bajo Device Drivers | Multi-device support entes partes del disco. de correo del kernel [9] avance y desa-
(RAID and LVM) | Device mapper support en LRW elimina las vulnerabilidades rrolle una variante adecuada de
la configuración del kernel. Para DM-Crypt conocidas asociadas con CBC mientras Scatterwalk. Los autores de este artículo
se requiere crypt. mejora el rendimiento. Como CBC no se estarán encantados de verlo. Los traba-
adapta bien en entornos multiproce- jos matemáticos para LRW han sido
Las marcas de agua pueden contener sadores, ya que cada paso recursivo está completados e implementados para ajus-
hasta 5 bits de información [1]. Un ata- basado en los resultados de paso previo, tarse a los estándares.
cante podría añadir marcas de agua a un LRW no puede utilizar múltiples proce-
correo electrónico, que posteriormente sadores paralelos. El autor de LUKS, que La Instalación
se lo enviaría a la víctima para averiguar también es el coautor de este artículo, Para utilizar DM-Crypt, cryptsetup y
dónde almacena los mensajes. Las mar- Clemens Fruhwirth, ha implementado y LUKS se necesitan unos cuantos módu-
cas de agua también podrían ser añadi- comprobado LRW para DM-Crypt, y su los del kernel y algunas herramientas.
das a ficheros MP3, imágenes u otros publicación es inminente. Las opciones para DM-Crypt están ocul-
ficheros que podrían enviarse a los tas en Device Drivers | Multi-device sup-
miembros de una empresa. Esto haría Frustrado por el Kernel port | Device mapper support en la con-
posible atacar la privacidad de un Actualmente, LRW no está disponible figuración del kernel y bajo Crypt target
usuario. Sin tener que desencriptar, el para DM-Crypt. El diseño de gestión de support (Figura 8) en la misma sección.
espía podría acceder a la información del la memoria alta/baja de Linux hace que Téngase en cuenta que es necesario
disco de la víctima. el módulo del kernel procese más de dos seleccionar Prompt for development and/
El generador ESSIV (Encripted Salt- áreas altas de memoria. La imple- or incomplete code/drivers bajo Code
Sector IV) IV impide esto. Las marcas de mentación LRW está basada en un inten- maturity level options, de otro modo
agua suponen una relación simple entre to genérico de reimplementación de Crypt-Target permanecerá oculto.
los IVs de dos sectores contiguos. Esto es Scatterwalk (parte de la Crypto-API), Como DM-Crypt se basa en las fun-
verdad en el caso simple; el IV para el que sería capaz de acceder a un número ciones de Crypto-API, hay que selec-
sector n es seguido por el IV n + 1 para arbitrario de áreas de la memoria alta cionar al menos un algoritmo en
el siguiente sector. ESSIV añade comple- simultáneamente. Debido a las restric- Cryptographic options | Cryptographic
jidad a la secuencia, haciendo imposible
para un atacante calcular la secuencia Listado 1: cryptsetup-LUKS
sin saber al menos parte de la clave se- 01 $ dd if=/dev/zero
/dev/loop0 verysecret
creta (véase el cuadro “ESSIV”). of=verysecret.loop bs=52428800
15 Enter LUKS passphrase: ******
count=1
16 key slot 0 unlocked.
Blanqueo de Datos 02 1+0 records in
17 $ mkfs.xfs /dev/mapper/
Seguro que se estará preguntando por 03 1+0 records out
18 verysecret
qué MD-Crypt utiliza una mezcla de 04 $ losetup /dev/loop0
19 amount /dev/mapper/verysecret
recursión y manipulación basada en la verysecret.loop
/mnt
posición del disco duro, cuando ésta últi- 05 $ cryptsetup -c aes-cbc-essiv:
20 $ umount /mnt
ma sería suficiente por sí misma. Hay sha256 -y -s 256 luksFormat
21 $ cryptsetup luksClose
una razón histórica para utilizar CBC: es /dev/loop0
verysecret
una solución probada y comprobada y 06
22 $ cryptsetup luksAddKey
sus propiedades han sido investigadas 07 WARNING!
/dev/loop0
por muchísima gente. Las alternativas, 08 ========
23 Enter any LUKS
que recaen por completo en el número 09 This will overwrite data on
passphrase:******
de bloque, son jóvenes en términos crip- /dev/loop0 irrevocably.
24 key slot 0 unlocked.
tográficos. 10
25 Enter new passphrase for key
LRW es un modo de encriptación que 11 Are you sure? (Type uppercase<
slot: ******
integra el número de bloque en una ruti- yes): YES
26 $ cryptsetup luksDelKey
na de encriptación de un modo sencillo y 12 Enter LUKS passphrase: ******
/dev/loop0 0
eficaz. Primero, LRW calcula un factor 13 Verify passphrase: ******
27 losetup -d /dev/loop0
de blancura basado en la clave secreta y 14 $ cryptsetup luksOpen

WWW.LINUX-MAGAZINE.ES Número 14 73
ADMINISTRACIÓN • DM-Crypt

algoritmo de encriptación en concreto. Como se mencionó anteriormente,


Para realizar el formateo es necesario el cryptsetup-LUKS puede manipular múlti-
dispositivo de bloques y opcionalmente ples contraseñas por dispositivo de blo-
un fichero, cuyo contenido se usará como ques. Esto facilita el cambio de una con-
contraseña. LUKS hace referencia a este traseña comprometida sin tener que
fichero como el fichero de clave. Los si- reencriptar los datos. La luksAdd Key
guientes parámetros son útiles: espera el dispositivo físico de bloques
• -c especifica el algoritmo y para las como parámetro (Listado 1, línea 22).
versiones recientes del kernel, el Tras teclear cualquier contraseña actual,
Figura 9: Como DM-Crypt se basa en Crypto- modo de encadenamiento y el gene- la herramienta solicita una nueva con-
API para la encriptación, necesita selec- rador IV. Estos tres parámetros deben traseña adicional. También se puede
cionar al menos un algoritmo en Crypto- ser separados por guiones (por defec- especificar un fichero de claves.
graphic options | Cryptographic API. La to: aes-cbc-plain). La variante más La acción luksDelKey (línea 26) elimi-
mejor opción por ahora es el algoritmo AES. segura actualmente es aes-cbc- na una contraseña existente. Espera
essiv:sha256. como parámetros el dispositivo físico de
API (Figura 9). Los autores recomiendan • -y le indica a cryptsetup que pida dos bloques y la posición de la clave que va a
AES. Lo único que se necesita es un algo- veces la contraseña para evitar errores ser eliminada. Esta última es donde se
ritmo de encriptación; la herramienta tipográficos. Este parámetro no tiene encuentra almacenada la clave. Como
cryptsetup-LUKS maneja las operaciones, sentido con un fichero de claves. cryptsetup-LUKS gestiona hasta ocho
como el código hash para generar la clave • -s especifica la longitud del la clave de contraseñas por defecto, las posiciones
a partir de la contraseña. encriptación. de las claves van desde 0 hasta 7. El pro-
La mayoría de las distribuciones Linux En la línea 5 del Listado 1, se puede grama solicitará la posición donde se va
establecen estas opciones por defecto. Se observar la llamada completa. Tecleando a almacenar la contraseña cuando se
puede introducir modprobe dm-crypt para YES en la línea 11, el usuario confirma invoque a luksOpen (línea 16) o
probar. El comando debería funcionar que los datos existentes podrían perderse. luksAddKey (línea 24). ■
bien. DM-Crypt será un componente ofi- Luego tendrá que establecer la primera
cial de Linux con el kernel 2.6.4; el gene- contraseña (línea 12).
rador ESSIV IV necesita al menos la ver- RECURSOS
sión del kernel 2.6.10. Correspondencias con el
Los componentes de LUKS están Sistema de Ficheros [1] Clemens Fruhwirth, “New Methods in
disponibles para descargarse desde [4]. Para usar el sistemas de ficheros que se Hard Disk Encryption”: http://clemens.
Hay paquetes para Debian, Gentoo, Suse acaba de preparar, cryptsetup-LUKS endorphin.org/publications
y Red Hat; cryptsetup-luks es un compo- tiene que establecer una corresponden- [2] Peter Gutmann, “Secure Deletion of
nente estándar de Fedora 4. Los usuarios cia entre el dispositivo físico de bloques Data from Magnetic and Solid-State
Memory”: http://www.cs.auckland.ac.
con otras distribuciones pueden seguir el y el dispositivo virtual de bloques. La
nz/~pgut001/pubs/secure_del.html
procedimiento estándar, ./configure && acción luksOpen se encarga de esto
make && make install para compilarlo e (línea 14). Si la contraseña está almace- [3] Clemens Fruhwirth, “LUKS On-Disk
Format Specification”: http://luks.
instalarlo, suponiendo que Libpopt, nada en un fichero (véase luksformat),
endorphin.org/LUKS-on-disk-format.
Libgcrypt (Versión 1.1.42 o posterior) y cryptsetup necesita el parámetro -d
pdf
Libdevmapper estén instaladas. seguido del nombre del fichero de la
[4] Software LUKS: http://luks.endorphin.
clave. En nuestro ejemplo, el usuario
cryptsetup-LUKS teclea una contraseña (línea 15).
org

cryptsetup soporta varias acciones. Cryptsetup-LUKS crea automática- [5] RFC 2898, “PKCS #5: Password-Based
Cryptography Specification Version
Corresponde al tipo de herramientas que mente el dispositivo de bloques con el
2.0”: http://rfc.net/rfc2898.html
permiten a los administradores de Linux nombre específico de verysecret en
asignar sistemas de ficheros a dispositivos /dev/mapper/. La llamada a mkfs.xfs en [6] Moses Liskov, Ronald L. Rivest y
David Wagner, “Tweakable Block
de bloques y montar estos sistemas de la línea 17 pone un sistema de ficheros
Ciphers”: http://www.cs.berkeley.edu/
ficheros. El Listado 1 muestra un ejemplo. XFS en el dispositivo. El resultado puede
~daw/papers/tweak-crypto02.pdf
Para mantenerlo lo menos invasivo que ser montado como se muestra en la línea
[7] IEEE, “Draft Proposal for Tweakable
sea posible, la llamada a dd en la línea 1 19. No hay que olvidarse de desmontar
Narrow-block Encryption”: http://
crea un contenedor de 50 MByte, que se la partición antes de aplicar los cambios
www.siswg.org/docs/
habilita como un dispositivo de bloques (línea 20). LRW-AES-10-19-2004.pdf
usando el bucle de la línea 4.
Inicialmente, la acción más importante Limpiando [8] Clemens Fruhwirth, “LRW for Linux is
dead”: http://grouper.ieee.org/groups/
de cryptsetup es luksFormat, que prepara Después de concluir el trabajo, habría 1619/email/msg00253.html
el dispositivo de bloques (en nuestro caso que deshacer la correspondencia para
[9] Discusión de ls lista de correo del ker-
el dispositivo loopback) para ser usado evitar tener abierta una puerta a los ata-
nel sobre los cambios de Scatterwalk:
para la encriptación. Este es también el cantes y espías. La acción luksClose se http://lkml.org/lkml/2005/1/24/54
paso donde hay que decidirse por un encarga de esto.

74 Número 14 WWW.LINUX-MAGAZINE.ES
080-081_Linuxuser_evince 05.01.2006 13:14 Uhr Página 80

LINUX USER • Evince

El Visor de Documentos Evince

VISOR VERSÁTIL

Evince se está convirtiendo en el visor estándar de GNOME para PDFs y otros formatos de documentos.

POR MATTHIAS WARKUS

D
e todas las visiones de futuro, la documentos entre diversas
de una oficina en la que cada vez plataformas.
haya menos papeles es la que más En el mundo de Linux y
está tardando en llegar. Los montones de Unix, otros formatos tales
papeles sobre los escritorios de los despa- como PostScript y DVI jue-
chos no parece que vayan a disminuir. Sin gan papeles importantes.
embargo, queda aún alguna esperanza: Existen un determinado
determinados libros, especialmente docu- número de visores de docu-
mentación técnica, se encuentran actual- mentos basados en Linux.
mente disponibles en formato electrónico, Gnome incluye actual-
alternativamente o exclusivamente, según mente como visor estándar
sea el caso. Documentos en Portable Doc- para esos ficheros Evince
ument Format (PDF)[2], un formato (Figura 1) [3], una com- Figura 1: El GUI de Evince presenta las necesidades más
desarrollado por Adobe [1], tienen el pleta utilidad. También básicas.
mismo aspecto, sin importar el sistema puede manejar formatos
operativo que se use, y esto implica una gráficos tales como TIFF y DjVu, los Evince implementa características de
verdadera compatibilidad de diseño de cuales típicamente son el resultado de usabilidad realizando sus tareas de ma-
documentos de texto escaneados. nera conveniente y eficiente, en vez de
Después de trabajar como tra- confundir al usuario con una sobredosis
ductor en varios proyectos, El Programa de opciones. En la ventana del programa
Matthias Markus encontró su Si se usa Evince como visor, lo más hay una caja de herramientas junto al
lugar como relaciones públicas
EL AUTOR

común es arrancar el programa en el menú con botones, permitiendo al


en Gnome. También escribió el contexto de un fichero que se necesita usuario desplazarse a través del fichero o
manual de desarrollo de Gnome
visionar. Lo habitual es arrancar aumentar la presentación. El documento
2. Durante los dos últimos años
Evince mediante clicks en un admin- ocupa la mayor parte de la ventana del
ha estado explorando los efec-
istrador de ficheros, antes que intro- programa. Una columna en el margen
tos del cambio de personalidad
que se producen al estudiar duciendo evince, seguido por el nom- izquierdo de la pantalla ofrece una pers-
filosofía. bre del fichero, desde la línea de pectiva basada en miniaturas de las pági-
comando. nas en el documento (Figura 2).

80 Número 14 WWW.LINUX- MAGAZINE.ES


080-081_Linuxuser_evince 05.01.2006 13:14 Uhr Página 81

Evince • LINUX USER

Figura 2: Evince presenta miniaturas para las páginas del Figura 4: Evince soporta características PDF tales como protección
documento. con contraseña.

Si es necesario, la barra de tareas puede orientados gráficamente de muy rápida- Conclusiones


presentar la estructura del documento mente. La calidad de la presentación es Con Evince, Gnome dispone de un
como un árbol expandible. Ambas comparable a la herramienta propietaria de visor de documentos útil integrado
opciones suponen que el documento con- Adobe, el Adobe Reader. Evince usa el totalmente con el escritorio. Evince es
tiene de hecho esta información. interfaz de impresión Gnome estándar el sucesor designado para Ggv (Gnome
Puede deshabilitarse la vista para tener para copias impresas, lo cual significa que Ghostview) para PostScript, Gpdf para
más espacio para la ventana principal. Esto pueden usarse las configuraciones y fun- ficheros con formato PDF y Eog (Eye of
es especialmente útil si se está presen- ciones de impresión (tales como el modo Gnome) para imágenes.
tando una página doble. Adicionalmente, dúplex) sin ningún problema. Sin Posee un buen número de ventajas
el modo de pantalla completa ofrece un embargo, no ofrece una visión previa de la en comparación con Adobe Reader:
juego completo de controles, a excepción impresión que muestre tal y como debería arranca más rápidamente y es más
de los cuadros de desplazamento. Las ayu- ser exactamente la salida por impresora. intuitivo. Al mismo tiempo, necesita 5
das a la navegación se encuentran ocultas Mbytes de memoria (compárese con la
completamente en el modo presentación, Herramientas masiva cantidad de 100 MBytes que
donde las páginas aparecen sobre un Aunque la mayoría de los ficheros PDF precisa Adobe Reader). Los programas
fondo negro y solamente permanecen los están orientados a texto, la presentación están a la par cuando tienen que pre-
controles de teclado. basada en pixel complica la busqueda para sentar documentos, sin embargo, si se
Evince ha introducido recientemente la palabras y cadenas. En vez de esto, Evince necesitan especialmente funciones
posibilidad de representar presentaciones tiene una función de búsqueda compara- PDF, tales como anotaciones editables,
simples en el formato Power Point. ble a la función que posee Adobe Reader. no hay más alternativa que optar por el
No importa el modo en el que se esté El diálogo “Search” no presenta una ven- complicado Adobe Reader.
trabajando, ya que Evince permite tana, sino un cuadro en la parte inferior de Se ha creado algún debate sobre el
desplazar y aumentar incluso documentos la pantalla, de un modo similar a como papel que Evince jugará en el futuro.
ocurre en Firefox Browser (Figura 3). Esta Algunos desarrolladores desearían
variante está en la línea de las directivas de verlo presentando ficheros MS Word y
usabilidad de Gnome, a las cuales se OpenOffice Writer, eliminando así la
espera se adhieran todas las aplicaciones necesidad que tiene el usuario de
Gnome en un futuro próximo. arrancar una gran suite de oficina para
La caja de herramientas es otro buen poder ver un simple documento. ■
ejemplo de amigabilidad para el usuario.
El editor presenta todos los iconos que
pueden añadirse a la caja de herramientas
usando arrastrar y soltar. Para deshacerse RECURSOS
de un botón, se arrastra fuera de la caja de [1] Adobe: http://www.adobe.com
herramientas con el ratón. De nuevo, la
[2] PDF: http://en.wikipedia.org/wiki/PDF
Figura 3: Al igual que Firefox, Evince tiene manipulación directa, así como el tipo de
un cuadro de búsqueda integrado en la [3] Evince: http://www.gnome.org/
característica a la que se refiere. es parte
projects/evince/
parte inferior de la pantalla. integrante de las directivas de Gnome.

WWW.LINUX- MAGAZINE.ES Número 14 81


024-026_Exif 05.01.2006 12:49 Uhr Página 24

PORTADA • Proceso de imágenes con EXIF

Renombrado de JPEGs y tratamientos sin pérdidas

LA MAGIA EXIF

Es posible renombrar y modificar archivos JPEG sin alterar los gráficos modificando las cabeceras del

archivo. Veamos cómo. POR MARTIN STEIGERWALD

E
l formato Exchange Image File en la cabecera de la imagen puede pudiera ocurrir en el tratamiento de la
(EXIF) es un estándar incluir aspectos como la fecha y hora de imagen. Este artículo describe algunas
desarrollado por el Japan creación, tiempo de exposición, técnicas para usar los metadatos EXIF
Electronic Industry Development apertura, programa de exposición, para renombrar y tratar imágenes JPEG.
Association (JEIDA) que permite a las tamaño, resolución y orientación de la
cámaras digitales guardar meta- imagen. Uso de Datos EXIF
información en la cabecera de un Linux proporciona diversas Muchos visualizadores gráficos y editores
archivo de imagen. Los datos EXIF se herramientas para tratar los datos EXIF proporcionan el acceso a la información
incluyen con los formatos de archivo directamente. El tratamiento directo de EXIF (véase Tabla 1). Incluso puede verse
como JPEG y TIFF, así como con los los metadatos asociados con los archivos la configuración EXIF desde Konqueror.
formatos de audio como RIFF. En de imágenes ahorra tiempo, fomenta la Para verla desde este explorador, se pulsa
función de la marca y modelo de nuestra automatización, y en algunos casos, el botón derecho del ratón sobre una
cámara, la meta-información guardada evita la pérdida de información que imagen en la ventana de Konqueror y se

Tabla 1: Niveles de Permisos de Ficheros Recomendados


Aplicación Soporte EXIF Rotación y simetría sin pérdidas
Digikam 0.7.2, Tratamiento de fotos Cargar, visualizar, pero no guardar En el menú desplegable de la imagen, también automáti
camente en función de la información EXIF
Eye of Gnome 2.8.2, Visor de imágenes Cargar, visualizar y guardar No
Feh 1.3.4, Visor de imágenes No Vía File | Edit en Place. La información EXIF se pierde
Gimp 2.2.7, Tratamiento de imágenes Guardar No
Gqview 2.0.1, Visor de imágenes Cargar y visualizar Vía Edit | Rotate
Gwenview 1.2.0, Visor de imágenes Cargar, visualizar y guardar. Vía Edit y Plugins / Images, basada automáticamente en
Rotación automática en el visor la información EXIF
Kpaint 0.6.2, Programa de dibujo No No
Kolourpaint 1.4.1, Programa de dibujo No No
Kuickshow 0.8.7, Visor de imágenes Cargar, visualizar, rotación automática No
en la visualización, pero no en guardar

24 Número 14 WWW.LINUX-MAGAZINE.ES
024-026_Exif 05.01.2006 12:49 Uhr Página 25

Proceso de imágenes con EXIF • PORTADA

Figura 1: Konqueror muestra la información Figura 2: Krename permite renombrar fotos en función de la fecha de su toma. La ayuda del
EXIF de las fotos. programa explica las complicadas plantillas.

selecciona Properties. La información EXIF intuitivos a sus imágenes. Al editar los Se situan los archivos en la ventana del
se ubica bajo Meta Info (véase Figura 1). datos EXIF, es posible añadir programa y se teclea
Puede añadirse un comentario a la información de fecha y hora al nombre $-[jpgCreationDate]-[jpgCreationTime],
imagen, que será guardada con la de archivo. El programa Jhead [3] ayuda por ejemplo. También pueden usarse
información EXIF en la cabecera del a hacerlo: jhead otras informaciones EXIF y JPEG, como
archivo. La orientación de la imagen se -n%Y-%m-%d_%H-%M-%S *.jpg los comentarios y la calidad del JPEG. Al
recoge en Orientation como un valor renombra las imágenes JPEG del pulsar sobre Functions en la pestaña
numérico (véase la Tabla 2). Los directorio actual. El formato es flexible y Filename muestra los campos. Krename
visualizadores basados en KDE Gwenview fácil de modificar, pero hay que utiliza por defecto el formato de fecha y
y Kuickshow también soportan este asegurarse de no incluir un espacio en hora definido en el KDE Control Center.
cuadro de diálogo estándar. blanco tras la opción -n. Una plantilla como
Si preferimos Nautilus, de nuevo se La opción -nf permite dar a la imagen $-[7-{[jpgCreationDate]}]-[4-5{[jpgCreati
selecciona Properties en el menú. Nautilus un nombre que no esté compuesto onDate]}]-[1-2{[jpgCreationDate]}]-[jpg
muestra los valores EXIF en Image, fundamentalmente por números. Las CreationTime] fija el formato a
aunque la orientación de la imagen no cámaras digitales usan generalmente un YYYY-MM-DD para optimizar las
está incluida. Puede añadirse un formato compuesto por cifras. Esta es la búsquedas (véase Figura 2).
comentario, pero Nautilus lo guarda en manera que tiene
~/.nautilus/metafiles/ en lugar de Jhead de evitar
guardarlo en la imagen. que el usuario use
Linux también proporciona utilidades -n para renombrar
en línea de comandos para tratar los datos archivos que ya
EXIF. Dos de estas había renombrado
herramientas,exiftags[1] y metacam[2] a mano. La opción
ofrecen un amplio abanico de opciones en -ft fija la fecha del
línea de comandos. Algunas distros no archivo con la
incluyen estas utilidades, aunque está fecha en la que se
disponible un paquete RPM para exiftags. tomó la foto.
Como se verá a lo largo de este artículo, La herramienta
otras utilidades para EXIF, como Jhead, Krename de KDE
Krename y Jpegtran son también útiles [4] proporciona
para cierto tipo de tareas. también la
posibilidad de
Renombrado Automático de renombrar
Archivos archivos en Figura 3: Jpegtran permite recortar imágenes sin pérdidas. Si la selec-
Las cámaras digitales son reconocidas función de la ción a recortar no se ajusta completamente a un bloque JPEG, Jpeg-
por proporcionar nombres para nada información EXIF. tran escala la selección hasta alcanzar el número de píxeles necesario.

WWW.LINUX-MAGAZINE.ES Número 14 25
024-026_Exif 05.01.2006 12:49 Uhr Página 26

PORTADA • Proceso de imágenes con EXIF

Tabla 2: Orientación de la Imagen Interfaz Gráfica


Valor EXIF 1ª fila en la imagen 1ª columna en la imagen Ejemplo La rotación manual sin pérdidas y la
imagen simétrica también está soportada
1 superior izquierda por los visores Gwenview, Gqview (en
2 superior derecha ambos casos siempre que se tenga
instalado Jpegtran) y Feh. Por ejemplo,
3 inferior derecha pueden rotarse imágenes mientras se ve
un pase de diapositivas. Digikam usa el
4 inferior izquierda
plugin Kipi para conseguir una mayor
5 izquierda superior funcionalidad. Si el plugin Kipi para
tratamiento sin pérdidas de imágenes
6 derecha superior
JPEG está instalado y habilitado, el menú
7 derecha inferior desplegable de una imagen tendrá las
opciones Automatic Rotation and
8 izquierda inferior Mirroring based on EXIF Information,
Rotate, Mirror y Convert to Monochrome.
Sin Pérdidas rotación, imagen simétrica, recortar o
Otro ejemplo de solución sencilla a convertir a monocromo (está última Recortar
través de tratamiento de datos EXIF es el desecha la información del color). Jpegtran también permite recortar una
problema de la orientación de las Si la cámara posee sensor, la imagen sin pérdidas. Por ejemplo, el
imágenes. Si se tiene una cámara con información EXIF puede ayudar a rotar comando jpegtran -copy all -crop
sensor de orientación, generalmente se las imágenes automáticamente. Por 904x904+1192+200 image.jpg >
deseará ver las fotos en la posición ejemplo, jhead -auto-rot *.jpg rota todas image_new.jpg permite centrar la imagen
adecuada. Mientras que el visor las imágenes JPEG del directorio en mostrada en la Figura 3. Esta foto usa un
Kuickshow analiza la orientación para función de su información EXIF. Para tamaño de bloque de 16 y, como las
mostrar las imágenes automáticamente ello, el valor de la orientación se fija coordenadas de comienzo 1192,200 no
en la posición correcta, Gwenview carga automáticamente a 1 (orientación son divisibles entre 16, Jpegtran mueve
primero y muestra la imagen antes de normal) tras la rotación. las coordenadas de comienzo hacia arriba
rotarla. Kview, Eye of Gnome (EOG), Afortunadamente, Jhead sólo hace esto a la izquierda los ocho píxeles requeridos.
Gqview, Feh, Display (ImageMagick) y para fotos que realmente necesitan rotar, Si se modifica una imagen JPEG usando
Showfoto (Digikam) no rotan al contrario que Exiftran. una herramienta de tratamiento y se
automáticamente las imágenes. Se puede usar Exiftran para rotar guarda en formato JPEG, se debería
Esto significa que habrá que rotarlas a imágenes manualmente. exiftran -i -9 intentar usar un programa que conserve
mano, o usar una herramienta para image.jpg rota la imagen 90 grados. Con la información EXIF. The GIMP tiene una
hacerlo. Desafortunadamente este paso -1 rotamos 180 grados, y con -2 la opción Save EXIF Data en el cuadro de
introduce una potencial fuente de giramos 270 grados. La opción -f realiza opciones JPEG. La opción está habilitada
perdida de información. El formato JPEG simetría horizontal a la imagen, y -F por defecto. Por contra, tanto Kolourpaint
es un formato con pérdidas, y puede vertical. como Kpaint desechan la información
ayudar a ahorrar espacio, pero se puede El programa Jpegtran puede EXIF al guardar. ■
perder información cada vez que se proporcionar tratamiento sin pérdidas en
carga, manipula y guarda una imagen imágenes con tamaño que no es múltiplo RECURSOS
JPEG. En función del nivel de calidad, de los bloques JPEG, pero lo hace
[1] Exiftags: http://johnst.org/sw/exiftags/
esta pérdida derivará tarde o temprano ignorando los bordes, lo cual deja una
en zonas degradadas. franja negra en el filo de la imagen. Si se [2] Metacam: http://www.cheeseplant.
org/~daniel/pages/metacam.html
A un nivel superior, algunos programas fija la opción -trim al ejecutar Jpegtran,
soportan tratamiento de imágenes JPEG el programa elimina el borde, pero este [3] Jhead: http://www.sentex.net/
sin pérdidas. Estas herramientas usan la paso no es “sin pérdidas”. ~mwandel/jhead/
estructura interna del formato JPEG para Si se indica la opción -perfect, Jpegtran [4] Krename: http://www.krename.net/
hacerlo. Un paso en el proceso JPEG es muestra un mensaje de error si se intenta
dividir la imagen en bloques de 8 por 8, transformar una imagen que no es
16 por 8 ó 16 por 16 píxeles. Esto divisible entre el tamaño de bloque Martin Steigerwald trabaja
como administrador de sis-
EL AUTOR

significa que los programas sólo pueden JPEG. Por ejemplo, jpegtran -perfect
temas en team(ix) GmbH en
efectuar tratamiento sin pérdidas en -rotate 90 image.jpg > image_new.jpg ||
Nuremberg, Alemania. Ya
imágenes de tamaño múltiplo de 8 por 8, djpeg image .jpg | pnmflip -r90 | cjpeg >
instaló Linux en su Amiga 4000
16 por 8 ó 16 por 16 (esto es, 1600x1200 image_new.jpg consigue una imagen sin hace años y usa Linux, prefe-
ó 3072x2048). pérdidas si el tamaño es adecuado, pero rentemente Debian Linux, en su
Ciertos tratamientos de la imagen son en caso contrario, es mejor usar Djpeg y portátil IBM Thinkpad.
siempre sin pérdidas: por ejemplo Cjpeg, los cuales son “con pérdidas”.

26 Número 14 WWW.LINUX-MAGAZINE.ES
LINUX USER • Línea de Comandos

gzip, bzip2 y tar

PAQUE-EXPRESS
Un escueto comando es todo lo

que se necesita para empaque-

tar los datos o extraerlos de un

archivo. POR HEIKE JURZIK

Empaquetado fino con

E
l empaquetar y comprimir ficheros los ficheros comprimidos que usan for-
reporta numerosos beneficios. El
“gzip” matos comprimidos para el original,
empaquetado y la compresión de El programa gzip (GNU Zip) es el como es el caso de MP3 o JPEG. La lista 1
ficheros ocupa menos espacio en el disco empaquetador por defecto de Linux. muestra la diferencia en la compresión
y requiere menos ancho de banda de Comprime ficheros simples, pero no crea entre un fichero bitmap y un fichero
Internet. Linux posee programas a tal directorios de archivos completos. En su JPEG.
efecto basados en GUI, como son File forma más simple, el comando gzip tiene Adicionalmente puede especificarse
Roller o Ark, así como herramientas de la el siguiente aspecto: un factor de compresión entre 1 y 9 para
línea de comandos para crear y empaque- influenciar la compresión: gzip -1 es
tar varios tipos de archivo. Este artículo gzip fichero rápido y gzip -9 es lento pero tiene un
examina algunas herramientas de la shell índice de compresión superior. El prede-
para el archivado de ficheros y demuestra gzip sustituye el fichero original con una terminado es -6. Si se quiere cambiar
el tipo de empaquetado experto que las versión comprimida añadiendo la exten-
inteligentes combinaciones de los coman- sión .gz. Las propiedades del fichero, Listado 1: Compresión
dos de Linux ofrecen al usuario de la línea como el acceso y la marca del tiempo de Comparada
de comandos. modificación se guardan en el proceso de
01 $ <B>ls -l<B>
empaquetado. Si se prefiere usar una
extensión diferente, puede establecerse el 02 -rw-r--r-- 1 daisy daisy
Línea de Comandos 2313894 Sep 3 22:47
parámetro -S (sufijo) para especificarlo.
A pesar de que los GUIs como KDE y Por ejemplo, el comando screenie.bmp
GNOME son útiles para muchas tareas, 03 -rw-r--r-- 1 daisy daisy
si quieres sacar el máximo partido de tu gzip -S .z imagen.bmp 169862 Sep 5 12:41
instalación Linux, tendrás que volver a screenie.jpg
la vieja y fiable línea de comandos de crea un fichero comprimido llamado 04 $ <B>gzip screenie*<B>
vez en cuando. Además, habrá oca-
image.bmp.z
siones cuando te enfrentes a situa- 05 $ <B>ls -l<B>
El tamaño del fichero comprimido
ciones en las que un conocimiento prác- 06 -rw-r--r-- 1 daisy daisy 9547
depende de la distribución de entradas
tico de las instrucciones del shell puede
idénticas en el fichero original. gzip com- Sep 3 22:47 screenie.bmp.gz
ahorrarte tiempo o sacarte de un apuro.
Esta sección pretende ser tu guía en la primirá un fichero de manera más efi- 07 -rw-r--r-- 1 daisy daisy
jungla de instrucciones de los termi- ciente si contiene patrones que se repiten 130524 Sep 5 12:41
nales de texto. frecuentemente. No funciona bien para screenie.jpg.gz

86 Número 14 WWW.LINUX- MAGAZINE.ES


Línea de Comandos • LINUX USER

este último puede hacerse configurando peración. En la compresión, la he-


Listado 2: gzip y bzip2
la variable de entorno gzip en el fichero rramienta divide los ficheros en bloques
~/.bashrc individuales. Si un fichero está dañado,
Comparados
puede ser posible rescatar los otros 01 $ <B>ls -l bild.bmp*<B>
export GZIP="-9" ficheros no dañados. Para hacerlo, hay 02 -rw-r--r-- 1 daisy daisy
que correr bzip2recover para desempa- 2313894 Sep 5 13:35 image.bmp
Un fichero puede desempaquetarse quetar los elementos no dañados.
03 -rw-r--r-- 1 daisy daisy 2534
usando bien gunzip o bien gzip -d. Si la Aparte de estas pocas diferencias
Sep 5 13:35 image.bmp.bz2
herramienta descubre un fichero del menores, la mayoría de las opciones
mismo nombre en el directorio de tra- bzip2 son como las de su equivalente 04 -rw-r--r-- 1 daisy daisy 9547
bajo, informa al usuario para asegurarse gzip. De nuevo, hay que especificar sim- Sep 5 13:35 image.bmp.gz
de que se sepa que se está sobreescri- plemente el nombre del fichero para
biendo este fichero: comprimirlo: Para cambiar el predeterminado, se con-
figura nuevamente la variable de
gunzip screenie.jpg.gz bzip2 fichero entorno BZIP2 añadiendo a ~/.bashrc
gunzip: screenie.jpg U lo siguiente
already exists: do you wishU El fichero comprimido tendrá después
to overwrite (y or n)? del evento una extensión .bz2 y guarda export BZIP2="-6"
las propiedades del fichero original, al
Si se dice [n], gzip aborta la operación. igual que en la compresión con gzip. En Para desempaquetar un fichero com-
Si no interesa el chequeo de seguridad, contraste con gzip, bzip2 tiene una primido, hay que establecer el
puede deshabilitarse configurando la opción para crear una copia del original. parámetro -d de bzip2 o usar la her-
opción -f (por “force”). El parámetro Para hacerlo, simplemente se especifica ramienta especial de desempaquetado
tiene un efecto colateral adicional: por el parámetro -k (por “keep” – guardar): bunzip2. Al igual que gzip, bzip2 ofrece
defecto, gzip se niega a comprimir alguna protección contra la sobreescri-
enlaces simbólicos. Pero si se configura bzip2 -k file tura que inadvertidamente se produce
el parámetro -f antes de apuntar gzip al en los ficheros existentes, pero en con-
symlink, la herramienta comprimirá el Para hacer lo mismo con gzip, se ten- traposición con gzip, esta herramienta
fichero al cual apunta el enlace y asigna dría que sacar el fichero comprimido a no ofrece libertad de elección. En su
el nombre del symlink (más la extensión una salida estándar, para redireccionar lugar, presenta el siguiente mensaje y
normal). Cuando se desempaqueta el luego la salida a un nuevo fichero: gzip sale de la operación:
fichero, no ofrece un symlink sino un -c file > file.gz. Sin embargo, la versión
fichero normal (Figura 1). comprimida del fichero no guardará en $ bunzip2 peggy.jpg.bz2
No es necesario desempaquetar este caso las propiedades del fichero bunzip2: Output fileU
ficheros de texto comprimidos, tales original. peggy.jpg already exists.
como los HOWTOs localizados en /usr/ Al igual que con gzip,los parámetros -
share/doc/, antes de usar los pagi- 1 a -9 (valor por defecto) le dicen a El parámetro -f deshabilita este compor-
nadores less o more para verlos. Co- bzip2 el nivel de compresión a usar. tamiento.
rriendo gzip con la opción -c (que da
una salida a stdout) y redireccionando
la salida a un paginador es mucho más
rápido, por ejemplo:

gzip -dc /usr/share/doc/U


iptables/README:Debian.gz | less

Puede abreviarse, aún más usando zless


file.gz. Este comando, de hecho, es un
pequeño script que ofrece un resultado
similar pero con menos tecleos.

Nuevo, Rápido, Mejor:


bzip2
La herramienta bzip2 emplea un algorito
de compresión diferente, lo que hace
que comprima los ficheros más efectiva-
mente. El listado 2 muestra una compa- Figura 1:Hay que tener cuidado cuando se comprimen enlaces simbólicos. Puede usarse el
rativa entre gzip y bzip2. Adicional- parámetro -f para forzar esta operación, pero desempaquetando el fichero, no se obtendrá un
mente, bzip2 posee un modo de recu- enlace simbólico.

WWW.LINUX- MAGAZINE.ES Número 14 87


LINUX USER • Línea de Comandos

Cuando tar incluye el nombre de la car- backup_2005_10_05.tar). Este backup


peta, pueden manejarse directorios y sub- incluirá todos los directorios desde el root/
directorios completos de la misma mane- , pero sin el directorio /proc, el cual no
ra, en lugar de especificar contiene ningún dato real.

¡Todos Juntos!
Como se ha mencionado previamente, tar
dispone de un número de parámetros para
crear archivos comprimidos gzip o bzip2
de una vez. La sintaxis para la
variante del comando tar es:

tar -cvzf archive.tar.gzU


fichero(s)
En el Archivo
El programa tar almacena Si se prefiere usar
múltiples ficheros en un archivo. bzip2 en lugar
El nombre del programa (tar es la de gzip
forma reducida para “tape archiver”) con tar,
indica su original uso para la adminis- reem-
tración de archivos de grabación. Pero tar plazar
puede hacer más que concatenar ficheros; la
tiene opciones para comprimir archivos opción
directamente usando gzip o bzip2 y esto -z en el
es lo que ofrece los nombres de los nombres de ficheros individuales: comando
archivos tar.gz y tar.bz2. precedente
Para colocar múltiples ficheros en un $ tar -cvf archivo.tar carpeta/ con -j:
archivo, escribimos test/
test/screenie.bmp tar -cvjf U
tar -cvf archivo.tar fichero1U test/link.bmp archive.tar.bz2 fichero(s)
fichero2 test/new/
test/new/screenie.jpg Pueden establecerse los parámetros -z y
por ejemplo. Las opciones -c, -v y -f, las test/new/new/ -j apropiadamente cuando se desempa-
cuales se encuentran en su forma corta en ... queta el archivo para evitar un paso
este comando, le dicen a tar que cree el extra. Por ejemplo, en lugar de
archivo (“c” por “crear”), que informe de Puede tener sentido excluir algunos
lo que está ocurriendo por detrás (“v” por directorios del archivo, especialmente si bunzip2 archive.tar.bz2
“verboso”) y que interprete el primer se está usando tar para backups. El tar -xvf archive.tar
argumento (archive.tar) como el nombre parámetro --exclude ofrece esta posibili-
del archivo (“f” por “fichero”). dad. El parámetro --rsh-command tam- se puede escribir
Si se nos ha olvidado de incluir algún bién resulta útil en este contexto, ya que
fichero, no es necesrio rehacer el archivo sirve para decirle a tar que use SSH para tar -xvjf archive.tar.bz2
completo. Se puede simplemente concate- enviar el backup a otra máquina. El
nar al fichero usando la opción -r. comando completo podría ser algo para invocar la opción -j para desempa-
como: quetar un archivo bzip2. ■
tar -rf archivo.tar file
tar -cvf user@host:/scratchU Heike Jurzik
PAaa desempaquetar un archivo, se rea- /tmp/backup_$U estudió alemán,
liza con la opción -x (“x” por “extraer”): (date '+%Y_%m_%d').tar U inglés y Ciencia
--rsh-command=/usr/bin/ssh U Informática en
LA AUTORA

tar -xvf archivo.tar --exclude=/proc / la Universidad


de Colonia,
Alemania.
Para asegurarse de que tar no sobreescriba Este extenso comando da las siguientes
Descubrió Linux en 1996 y desde
ficheros existentes con contenido desde el instrucciones: usar SSH para crear una entonces ha estado fascinada
archivo, es una buena idea desempaque- copia de backup en el directorio /scratch/ con la línea de comando de
tar el archivo en un directorio temporal, o tmp/ en la máquina host, basando el Linux. En su tiempo libre se le
usar -t en vez de -x para ver el proceso de nombre del archivo en el prefijo del puede encontrar en sesiones de
prueba (“t” por “trial”) y ver los ficheros y backup, la fecha actual y en la extensión folk irlandés o visitando Irlanda.
directorios que contiene el archivo. .tar (por ejemplo,

88 Número 14 WWW.LINUX- MAGAZINE.ES


015-017_imgSeek 09.01.2006 11:09 Uhr Página 15

imgSeek • PORTADA

El visor de imágenes imgSeek

BUSCAR LA FORMA
El visor de imágenes imgSeek ofrece una alternativa única a la correspondientes paquetes de desarrollo
para permitir a imgSeek que trate los
búsqueda tradicional por nombre de archivo: se puede buscar una foto numerosos formatos gráficos soportados
por esta librería gráfica. Si además se
basándose en formas de la imagen. POR CARSTEN SCHNOBER instala el paquete Python-Imaging,
imgSeek también podrá tratar y editar los

L
a mente humana es capaz de recor- que la versión disponible presenta diver- metadatos de varios formatos gráficos.
dar imágenes más fácilmente que sos problemas que lo hacen casi inutili-
hechos y cifras. Ésta fue la idea zable. ¡Adelante!
básica que originó el programa imgSeek imgSeek es un programa en Python, por Tras completar la instalación, sólo será
(http://imgseek.python-hosting.com), el lo que no es necesario compilarlo después necesario teclear el comando imgSeek
cual agrupa las imágenes de acuerdo a su de instalarlo desde el código fuente. Puede para arrancar el programa. ¡Ojo con la S
motivo. Por ejemplo, imaginemos que se obtenerse el código fuente en la página mayúscula! La primera vez que
están buscando todas las imágenes de Web de imgSeek: http://imgseek. arrancamos el programa, no se verá
nuestra colección que muestren una python-hosting.com. Se requieren privile- ninguna imagen. Si se tiene la colección
palmera. Simplemente se puede intro- gios de root para instalar los archivos del de imágenes en el disco duro, se deseará
ducir la imagen de una palmera a paquete imgSeek-0.8.5.tar.bz2. En primer que la analice justo en este momento.
imgSeek, y el programa encontrará todas lugar es preciso descomprimirlo con tar Para ello, se pulsa en la pestaña Add de la
las que sean similares. Alternativamente, -xjf imgSeek-0.8.5.tar.bz2 y posteriormente ventana principal (véase Figura 1).
se podría hacer un esbozo de lo que se se teclea el comando ./install. imgSeek subdivide la base de datos de
está buscando con la herramienta de imgSeek requiere el lenguaje de script las imágenes en volúmenes. El volumen
dibujo integrada, e imgSeek mostrará Python y los paquetes de desarrollo, que estándar incluye cualquier archivo que se
todo lo que recuerde a nuestro boceto. llevan el nombre de python-dev o haya añadido en el sistema de archivos
Por supuesto que imgSeek también python-devel, en función de la distribu- Local filesystem. Si se añaden imágenes
dispon de la funcionalidad que permite ción, así como de
agrupar las imágenes por nombre de PyQt, también con
archivo y directorio, fecha de creación o los paquetes de
entradas de metadatos. Además puede desarrollo (deben lla-
exportar colecciones de imágenes a marse algo como
archivos HTML para ayudarnos a configu- pyqt o python-qt con
rar una página Web, o puede llenar un CD la extensión dev o
para poderlo visualizar fácilmente con un devel). Por último, es
navegador. imprescindible el
paquete de desa-
Instalación rrollo de Qt, libqt-dev
Tanto Suse como Debian incluyen o qt-devel, en función
imgSeek, y puede ejecutarse Yast o apt-get de nuestra distribu-
install imgseek para instalar el programa. ción.
El paquete está también en el repositorio Puede ser una
universe de Ubuntu, aunque pueden que buena idea instalar Figura 1: imgSeek clasifica grandes colecciones de imágenes en
se prefiera instalarlo manualmente, ya ImageMagick y los función de criterios como la fecha, nombre de fichero y el motivo.

WWW.LINUX- MAGAZINE.ES Número 14 15


015-017_imgSeek 09.01.2006 11:09 Uhr Página 16

PORTADA • imgSeek

Con Groups también se que aparecerán en la pestaña Groups,


verá una disposición en desde donde podremos administrarlos.
forma de árbol, pero se
permite una agrupación Busca y Captura
configurable por grupos. La pestaña Search es el lugar en el que se
La configuración por encuentra la característica más excitante
defecto tiene un grupo de imgSeek. La pestaña by Image content
por cada fecha de imagen tiene dos secciones, Import y Draw. La
añadida a la colección, y primera nos permite cargar una imagen
existe un grupo Orphan cualquiera. Tras esto, podemos pulsar
para las imágenes no sobre el botón Start Search para localizar
asignadas a ningún cualquier imagen de la base de datos que
Figura 2: La búsqueda por contenido de la imagen es muy útil, grupo, por ejemplo tenga un motivo parecido, según el crite-
pero a veces genera resultados sin demasiadas similitudes. debido a que se haya bo- rio de imgSeek. El programa, de hecho,
rrado el grupo al que muestra un porcentaje para indicar el
de un CD, por ejemplo, puede que que- pertenecían. grado de similitud calculado para la ima-
ramos añadir un nuevo volumen usando Al pulsar con el botón derecho en la gen (véase Figura 2).
el nombre del CD para mantener estas ventana de grupos aparece un menú con El algoritmo de búsqueda evalúa las
colecciones en bases de datos separadas. la opción New group, la cual permite crear formas y figuras para tomar una decisión.
Esto permite trabajar con las imágenes en un nuevo grupo al que asignar cualquier Esto significa que el programa puede des-
nuestro sistema de archivos local sin que nombre. Se puede arrastrar y soltar para cubrir similitudes entre imágenes que se
imgSeek esté intentado acceder a las imá- mover o copiar imágenes o directorios le escapan al ojo humano. Por ejemplo,
genes del CD que puede no estar mon- completos atrás y adelante a través de los podría identificar fondos con colores simi-
tado en ese momento. grupos. lares que no son relevantes para la ima-
Después de decidirnos por un volu- La pestaña System muestra el clásico gen en su conjunto.
men, se teclea la ruta (Path:) hasta el sistema de archivos sin aplicar ningún cri- Pero independientemente de los
directorio. Se pulsa el botón Add! para terio de clasificación. Puede navegarse por numerosos falsos positivos que puedan
indicarle a imgSeek que busque las imá- el sistema de archivos a través de la vista aparecer, imgSeek suele encontrar la ima-
genes de esa ruta. Si se marca recursively, en árbol del mismo modo que con gen que estábamos buscando, ahorrán-
imgSeek también añadirá los archivos de cualquier administrador de archivos y donos una buena parte de trabajo, ya que
los subdirectorios a la colección. explorar sus ramas. es mucho más rápido descartar los resul-
La pestaña Browse de la ventana prin- Con Similarity dentro del área Browse se tados falsos que buscar manualmente en
cipal tiene un administrador de archivos clasifican las imágenes por nombre de toda la base de datos.
que permite navegar entre las entradas archivo o fecha. El cuadro de selección By: El programa de dibujo de imgSeek está
de la colección de imágenes. Hay cuatro permite definir el criterio: Date o ubicado en la pestaña de búsqueda Draw.
pestañas adicionales con las que se apli- Filename. Al pulsar sobre Group se orde- Las únicas opciones que disponemos son
can diferentes criterios de organización. nan las imágenes en la base de datos y se las de grosor del pincel y el color. Es posi-
La pestaña Files usa una disposición en muestra un ejemplo de cada grupo a la
árbol con los volúmenes en la zona izquierda de la ventana imgSeek. Al pul-
superior. Puede expandirse el árbol por sar en la imagen de ejemplo se nos
debajo de ese nivel, y se verán las imá- mostrarán las miniaturas del resto de imá-
genes individuales que se muestran genes del grupo.
como entradas. Al pulsar en un directo- El campo Threshold define un valor
rio se presentan las miniaturas de los umbral. Cuanto mayor sea el número,
archivos de ese directorio en la parte más tolerante será imgSeek a las diferen-
superior derecha de la ventana de cias a la hora de agrupar imágenes: esto
imgSeek, y si se pulsa en la miniatura se es, el grupo crecerá en tamaño. El cuadro
muestra la imagen original en la parte de herramientas junto al botón Group! Figura 3: imgSeek localiza las imágenes que
inferior derecha. convierte los grupos en grupos lógicos se parecen al boceto dibujado por el usuario.

16 Número 14 WWW.LINUX- MAGAZINE.ES


015-017_imgSeek 09.01.2006 11:09 Uhr Página 17

imgSeek • PORTADA

ble dibujar un rápido esbozo y pulsar en


Start search para indicar a imgSeek que El menú desplegable Batch name da soporta la administración de la base de
comience la comparación en la base de acceso a varias cachés. La caché por datos de imgSeek sin necesidad de una
datos y encuentre imágenes con motivos defecto se llama Temporary work batch y interfaz gráfica y es útil para hacer scripts.
similares (véase Figura 3). puede pulsarse el botón Create a new batch imgSeekCmd add añade imágenes
para crear una nueva caché. Por ejemplo, nuevas o directorios a la base de datos. El
Imágenes Batch podría crearse una caché para las imá- comando imgSeekCmd browse -F muestra
Al pulsar con el botón derecho en una genes que serán exportadas a un álbum un lista de registros. Los parámetros -G y
miniatura en cualquier modo de vista HTML en una etapa posterior. -V muestran los grupos o volúmenes,
aparece un menú. Este menú tiene una Tras seleccionar la caché, se observa que respectivamente.
entrada llamada Add to batch que coloca el menú desplegable Action: tiene unas La lista de imágenes contiene la ID
la imagen seleccionada en una memoria cuantas opciones. Extract image metadata interna de cada imagen. Se puede usar el
caché. Esto permite aplicar las herramien- from file lee los metadatos guardados con comando imgSeekCmd info -m -i ID para
tas del menú Tools al mismo tiempo a va- el archivo, como la fecha de creación, re- solicitar los metadatos de la imagen. La
rios archivos. solución o tamaño del archivo. Sin línea de comandos soporta e incluso
embargo, la función sólo transfiere esta mejora la búsqueda por contenido: el
información a la base de datos interna. En comando imgSeek-Cmd query -i ID muestra
una próxima versión del programa, será las IDs internas de las imágenes similares a
capaz de exportar estos metadatos para la especificada con ID. El parámetro -r
usarlos con otros programas. seguido por un valor numérico restringe el
Con Slideshow se ejecuta un pase de dia- número de eventos en la búsqueda.
Figura 4: Situar imágenes en una memoria positivas de las imágenes de la caché. Para
caché nos permite exportar imágenes, ello, el programa pasa a tamaño de pan- Conclusión
tratarlas o arrancar un pase de diapositivas. talla completa y muestra las imágenes en imgSeek supera con facilidad a muchos
un bucle infinito. Se pulsa [ESC] para salir otros visores de imágenes. A pesar de ser
La entrada de menú Tools | Work batch del pase de diapositivas. conceptualmente brillante, la búsqueda
editor abre un cuadro desde donde puede Create HTML album usa la caché para basada en el motivo no es del todo fiable
editarse la memoria caché (véase la crear una álbum de imágenes que puede debido a la complejidad de la tarea. Los
Figura 4). Si se pulsa con el botón dere- visualizarse en un navegador Web (véase resultados, sin embargo, se pueden uti-
cho se puede desplegar el menú, y selec- la Figura 5). Existen dos diseños, Acqua y lizar. Desafortunadamente, los trabajos de
cionar Remove this item para borrar la Slides, que se diferencian únicamente en desarrollo en esta función especial no pro-
entrada seleccionada. Se selecciona Clear los esquemas de color. La Figura 6 muestra gresan con suficiente rapidez. En los últi-
current batch para borrar toda la pila de un ejemplo del diseño Acqua. mos 12 meses, las nuevas versiones han
imágenes. sido simples correcciones de fallos. Pero
Versátil incluso si los desarrolladores no consiguen
La entrada Edit metadata del menú desple- todo lo que se han propuesto hacer, al
gable le indica a imgSeek que muestre la menos su trabajo de pioneros servirá de
metainformación guardada con la imagen ejemplo para otros programadores. ■
y también proporciona una funcionalidad
de edición. El menú Tools | Transform
images sólo funciona si se tiene instalada
la librería Python-Imaging. En este caso,
soporta un tratamiento simple de las imá-
genes, incluyendo características como
rotación, conversión a otros formatos, o
escalado.
Figura 5: Podemos exportar imágenes a un Si prefiere usarse la línea de comandos Figura 6: imgSeek tiene dos diseños HTML
álbum con formato HTML para poder verlo para algunas tareas, imgSeek puede ser de de momento, pero los diseñadores Web
con un navegador Web. gran ayuda. El comando imgSeekCmd pueden modificar los esquemas.

WWW.LINUX- MAGAZINE.ES Número 14 17


008-009_Inseguridad14 05.01.2006 12:33 Uhr Página 8

LINUX USER
INSEGURIDADES
Schlagwort sollte hier stehen

INSEGURIDADES
■ phpmyadmin permitirían a un atacante provocar la Layer Security (TLS v1), así como una
Se han descubierto algunas vulnera- inclusión de un fichero local arbi- librería criptográfica de propuesta gene-
bilidades de scripting de sitio cruzado trario en phpmyadmin. ral de potencia industrial.
en phpmyadmin, un juego de scripts • CVE-2005-3301 – Tobias Klein des- OpenSSL contiene una solución soft-
PHP para administrar MySQL desde la cubrió vulnerabilidades de sitio ware para un error en la manipulación
web. El Proyecto de Vulnerabilidades y cruzado permitiendo a los atacantes SSL en IE 3.0.2. Dicha solución se
Exposiciones Comunes identifica los inyectar HTML o scripting del lado encuentra disponible en la mayoría de los
siguientes problemas: del cliente.■ servidores que usan OpenSSL para ofre-
• CAN-2005-2869 – Andreas Kerber y Referencia Debian: DSA-880-1 Refer- cer soporte para SSL y TLS. Yutaka Oiwa
Michal Cihar descubrieron algunas encia Gentoo: GLSA 200510-16 Referen- descubrió que la solución podría permitir
vulnerabilidades de sitio cruzado en la cia Mandriva: MDKSA-2005:201 que un atacante actuara como “un hom-
página de error y en el login de cook- bre de en medio” para forzar a una
ies. ■ OpenSSL conexión SSL a usar SSL 2.0 en vez de un
• CVE-2005-3300 – Stefan Esser des- OpenSSL es un juego de herramientas protocolo más fuerte como SSL 3.0 o TLS
cubrió restricciones de seguridad que implementa los protocolos Secure 1.0. El Proyecto de Vulnerabilidades y
perdidas en grap_globals.php que Sockets Layer (SSL v2/v3) y Transport Exposiciones Comunes (Common Vulne-
rabilities and Exposures o CVE – http://
POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS cve.mitre.org) ha asignado a este prob-
lema el nombre CAN-2005-2969.■
Distribuidor Fuente Seguridad Comentario
Referencia Debian: DSA-875-1 Referen-
Debian Info:http://www.debian.org/security/ Los avisos de seguridad actuales se in-
Lista:http://www.debian.org/debian-security-announce/ cluyen en la página de inicio. Los avisos cia Red Hat: RHSA-2005:800-8 Referencia
Referencia:DSA-…1) se proveen como páginas HTML con Slackware: SSA:2005-286-01 Referencia
enlaces a los parches. Los avisos también Suse: SUSE-SA:2005:061.
incluyen una referencia a la lista de
correo.
Gentoo Info:http://www.gentoo.org/security/en/index.xml Los avisos de seguridad actuales para ■Unzip
Foro:http://forums.gentoo.org/ la lista Gentoo en el sitio web de Unzip 5.51 y versiones anteriores no
Lista:http://www.gentoo.org/main/en/lists.xml seguridad de Gentoo enlazan desde la advierten correctamente al usuario
Referencia:GLSA:… 1) página principal. Los avisos se presentan
cuando obtienen ficheros setuid o setgid,
en HTML con códigos para fusionar las
versiones corregidas.
lo cual podría permitir que los usuarios
Mandrake Info:http://www.mandrakesecure.net Mandrakesoft posee su propios sitio web locales obtuvieran privilegios. (CAN-
Lista:http://www.mandrakesecure.net/en/mlist.php que versa sobre temas relacionados con 2005-0602)
Referencia:MDKSA:… 1) la seguridad. Entre otras cosas,incluye Imran Ghory encontró una condición
avisos seguridad y referencias a las
listas de correo. Los avisos son páginas
de carrera en la manipulación de ficheros
HTML,pero no contienen enlaces a los de salida. Mientras se desempaquetaba
parches. un fichero mediante unzip, un atacante
Red Hat Info:http://www.redhat.com/errata/ Red Hat archiva los fallos de seguridad local con permisos de escritura sobre el
Lista:http://www.redhat.com/mailman/listinfo/ bajo lo que denominan erratas. A
directorio objeto podría explotarlo y
Referencia:RHSA-… 1) continuación los problemas para cada
versión de Red Hat se agrupan. Los avisos cambiar los permisos de ficheros arbi-
de seguridad se proveen como una trarios del usuario unzip. Esto afecta a
página HTML con enlaces a los parches. versiones de unzip 5.52 y anteriores
Slackware Info:http://www.slackware.com/security La página de inicio contiene enlaces al
(CAN-2005-2475). Los paquetes actua-
Lista:http://www.slackware.com/lists/(slackware-security) archivo de seguridad de la lista de correo.
Referencia:[slackware-security]… 1) No existe información adicional sobre lizados se han parcheado provisional-
seguridad en Slackware. mente para evitar estos problemas.■
Suse Info:http://www.suse.de/en/private/support/ Ya no existe un enlace a la página de Referencia Mandriva: MDKSA-2005:197
security/index.html seguridad tras un remodelado en el sitio
Parches:http://www.suse.de/en/private/ web de SuSE. Existe información en la
download/updates Lista:suse-security-announce lista de correos y los avisos. Los parches de
■Wget
Referencia:SUSE-SA… 1) seguridad para versiones individuales de GNU Wget es una utilidad de recu-
SuSE Linux se muestran de color rojo en el peración de ficheros que puede usar pro-
sitio de actualizaciones generales. tocolos HTTP o FTP.
Contiene una corta descripción de la
vulnerabilidad que soluciona el parche.
Se encontró un error en el desbor-
1) Todos los distribuidores muestran correos de seguridad en el campo Subject. damiento de búfer basado en pila en la

8 Número 14 WWW.LINUX- MAGAZINE.ES


008-009_Inseguridad14 05.01.2006 12:33 Uhr Página 9

INSEGURIDADES

implementación de la autenticación ciones Comunes (Common Vulnerabili- mitre.org) ha asignado el nombre CAN-
NTLM de wget. Un atacante podría eje- ties and Exposures o CVE – http://cve. 2005-2959 a este problema.■
cutar código arbitrario sobre la máquina mitre.org) ha asignado los nombres CVE- Referencia Debian: DSA-870-1 Referen-
de otros usuarios si el usuario puede ser 2005-3241, CVE-2005-3242, CVE-2005- cia Mandriva: MDKSA-2005:201 Referen-
burlado en la conexión a un servidor 3243, CVE-2005-3244, CVE-2005-3245, cia Red Hat: RHSA-2005:527-16
web malicioso usando autenticación CVE-2005-3246, CVE-2005-3247, CVE-
NTLM. El Proyecto de Vulnerabilidades y 2005-3248, CVE-2005-3249 y CVE-2005- ■Lynx
Exposiciones Comunes (Common Vul- 3184 a estos problemas.■ Lynx es un navegador web basado en
nerabilities and Exposures o CVE – Referencia Gentoo: GLSA 200510-25 Ref- texto.
http://cve.mitre.org) ha asignado el nom- erencia Red Hat: RHSA-2005:809-6 Ulf Harnhammar descubrió un error de
bre CAN-2005-3185 a este problema.■ desbordamiento de pila en la manera en
Referencia Mandriva: ■Sudo que Lynx manipula conexiones a servi-
MDKSA-2005:204 Referencia Red Hat: Sudo (Superuser Do) es un programa dores NNTP (noticias). Un atacante
RHSA-2005:812-5 Referencia Suse: para sistemas basados en Linux y Unix podría crear una página web que redirec-
SUSE-SA:2005:063 que permite a cualquier usuario ejecutar cionara a un servidor de noticias mali-
comandos como superusuario. cioso que podría ejecutar código arbi-
■Ethereal Tavis Omandy descubrió que Sudo no trario como si se tratara del usuario que
El paquete Ethereal es un programa para realiza una limpieza de entorno integral; corre Lynx. El Proyecto de Vulnerabili-
monitorizar el tráfico de la red. las variables SHELLOPTS y PS4 todavía dades y Exposiciones Comunes (Common
Se han descubierto fallos en este pro- se pasan al programa como si se tratara Vulnerabilities and Exposures o CVE –
grama. En un sistema en el que está co- de un usuario alternativo, que en la eje- http://cve.mitre.org) ha asignado el nom-
rriendo Ethereal, un atacante remoto cución de comandos arbitrarios puede bre CAN-2005-3120 a este problema.■
podría enviar paquetes maliciosos para resultar como el usuario alternativo Referencia Debian: DSA-876-1 Referen-
desencadenar dichos fallos y hacer que cuando se ejecuta un script bash. El cia Gentoo: GLSA-200510-15 Referencia
Ethereal se estropeara o que potencial- Proyecto de Vulnerabilidades y Exposi- Mandriva: MDKSA:2005:186 Referencia
mente ejecutara código arbitrario. El ciones Comunes (Common Vulnerabili- Red Hat: RHSA-2005:803-4 Referencia
Proyecto de Vulnerabilidades y Exposi- ties and Exposures o CVE – http://cve. Suse: SUSE-SR:2005:02

WWW.LINUX- MAGAZINE.ES Número 14 9


011-014_introCover_L14 05.01.2006 12:43 Uhr Página 11

Imagen Digital • PORTADA

Tratamiento de imágenes bajo Linux

LA MEJOR IMAGEN
El entorno Linux incluye algunas poderosas herramientas para editar, manipular y escanear imágenes digitales.

POR ACHIM SCHEFCZYK Y JOE CASAD

L
as modernas tecnologías de ima- Introducción estarán familiarizados con estos
gen digital ofrecen hoy día solu- problemas, pero para aquellos que no
Los artículos del tema de portada de este
ciones a algunos problemas estén inmersos en la revolución digital,
mes no requieren ser experto en
históricos que arrastraba la fotografía se empezará con una breve
fotografía digital, pero será útil que se
desde la invención de la cámara. Pero la introducción.
tenga algún conocimiento de los
fotografía digital ha introducido una problemas relacionados con la
nueva serie de problemas, y la gran manipulación de
potencia de los medios técnicos ha prop- imágenes.
iciado nuevas posibilidades para el Muchos
procesamiento de imágenes. lectores
Todas estas nuevas posibilidades han
conducido a una nueva generación de
herramientas. El entorno Linux propor-
ciona numerosas y excelentes utilidades
para el visionado, edición y proce-
samiento de imágenes digitales, y en
el tema de portada de este mes se
examinan algunas de estas her-
ramientas.
Se comenzará echando un vis-
tazo a imgSeek, una herramienta
futurística que permite ordenar
las fotos por la forma de un
objeto de la imagen. También se
examinará Xnview, un visor de
imágenes y editor que es capaz
de leer la increíble cifra de 400
formatos gráficos. También se
aprenderá acerca del front-end
XSane para controlar escáners, y se
verá cómo editar archivos JPEG
desde la línea de comandos.

TEMA DE PORTADA
imgSeek...............................................15
Xnview................................................. 18
Xsane................................................... 21
Exif....................................................... 24

WWW.LINUX- MAGAZINE.ES Número 14 11


011-014_introCover_L14 05.01.2006 12:43 Uhr Página 12

PORTADA • Imagen Digital

Tabla 1: ELEGIR UN TAMAÑO DE IMAGEN


El tamaño de la imagen tiene una gran
influencia en la calidad de la misma
Tamaño de la imagen Mega-pixels Aplicaciones recomendadas (véase la Tabla 1). Las cámaras moder-
640x480 0,3 Sólo útil para Internet nas ofrecen un rango de opciones que
1024x768 0,78 No usar, o sólo para 9 x 13 comienza en 640x480 (0.3 mega-píxeles)
1280x960 1,2 9x13 hasta 10 x 15 hasta lo que hoy día es el estándar, más
1600x1200 2,0 10x15 hasta 13 x 18 o menos, en cuanto a resolución:
2048x1536 3,1 13x18 hasta 20 x 30
2560x1920 (5 mega-píxeles). Desafortu-
2560x1920 5,0 13x18 hasta tamaño poster
nadamente, más grande no siempre es
mejor. Los fabricantes han logrado que
La mayoría de las cámaras guardan las por ejemplo. Será preciso recurrir al ma- los usuarios piensen que la resolución es
imágenes al menos en dos formatos de nual de la cámara para descubrir qué sig- el factor decisivo de calidad, pero esto
archivo usuales (véase el cuadro titulado nifican en realidad estos términos. Depen- deja de lado factores tan importantes
“Formatos Gráficos Comunes”). Además diendo del fabricante, dichos términos como las lentes, el CCD y el software
de proporcionar diferentes calidades de pueden significar cosas bien distintas. interno de la cámara.
imagen, estos formatos ocupan diferentes Habitualmente, JPEG da buenos resul- Antes de intentar modificar las imá-
cantidades de espacio en la tarjeta de tados incluso para calidad de impresión. genes, será buena idea grabar los origi-
memoria. Algunas otras ni siquiera Pero para evitar afectar a la calidad de nales en un CD o DVD. Luego puede bo-
especifican realmente el formato del imagen en demasía, debería elegirse un rrarse cualquiera de ellas que haya
archivo, sino que ofrecen una descripción ratio de compresión dentro del tercio quedado descartada para posterior
genérica, del tipo Extra, Fine o Standard, superior de las opciones disponibles. procesamiento. Esto puede incluir imá-

Formatos Gráficos Comunes

TIFF (Target Image File Format) es el formato introdujo el método estandarizado para la ques, efecto alias y otros problemas (véase la
más importante para el intercambio de infor- compresión con y sin pérdidas en 1992. En el Figura 1).
mación en la fase previa a la impresión. El
formato tiene su origen en el campo de las PNG Portable Network Graphics (PNG) se
publicaciones y se usa generalmente en apli- diseñó como un sustituto libre para el for-
caciones profesionales. Las imágenes TIFF mato GIF, que está protegido por patentes. El
usan un formato de compresión sin pérdi- PNG combina los beneficios de GIF y de
das. El nivel de calidad máxima de muchas JPEG. PNG tiene las mismas características
cámaras digitales usa TIFF, que es perfecta de GIF con algunas excepciones, como las
para imágenes impresas realmente grandes, animaciones, pero con una compresión
debido a que se evita la degradación que mayor. Al igual que GIF, PNG soporta píxeles
puede aparecer con JPEG. de una paleta de 256 colores, así como imá-
genes en escala de grises con 1, 2, 4, 8 ó 16
RAW El formato RAW no es realmente un bits, e imágenes en color (RGB) con 8 ó 16
formato de archivo, sino un tipo de datos. bits por canal. Se utiliza compresión sin pér-
Cada fabricante tiene su estándar propietario, didas para guardar los datos.
y estos estándares generalmente no son
compatibles. Las cámaras suelen guardar la Desafortunadamente, no todos los nave-
información de la imagen en RAW en una gadores soportan las capacidades de este
tarjeta de memoria. Las herramientas que la formato, y ésta es la razón por la cual no se
cámara pueda tener para mejorar la calidad Figura 1: Si el archivo está demasiado com- usa generalmente en fotografía digital. La
de la imagen se deshabilitan. Este formato primido, pueden aparecer zonas degradadas mayoría de las cámaras no soportan el for-
(véanse las nubes de la imagen).
sólo tiene sentido para entornos profesio- mato PNG.
nales. Además, una imagen RAW puede
ocupar el triple de espacio a su equivalente proceso de compresión, una ventana se GIF GIF (Graphics Interchange Format)
en formato JPEG. Si aún así se quiere traba- mueve secuencialmente a lo largo de la ima- puede tratar un máximo de 256 colores dife-
jar con el formato RAW, es preciso asegu- gen y acumula la información en bloques. rentes. Este formato se ha quedado algo
rarse antes de comprar la cámara de que Cuanta más alta sea el ratio de compresión, anticuado hoy día, aunque GIF aún está bas-
existen realmente las herramientas bajo más grande será la ventana de procesado. tante bien para gráficos y dibujos. Debido a
Linux para editar y leer estos archivos RAW. Esto lleva a una cierta pérdida de detalle y de su poca profundidad de color, no es ade-
enfoque si se selecciona un índice demasi- cuado para fotos a color. Las fortalezas de
JPEG JPEG significa Joint Photographic ado alto. En el peor de los casos puede apare- este formato son su habilidad para mostrar
Experts Group, el nombre del comité que cer degradación por compresión como blo- transparencias y gráficos animados.

12 Número 14 WWW.LINUX- MAGAZINE.ES


011-014_introCover_L14 05.01.2006 12:43 Uhr Página 13

Imagen Digital • PORTADA

genes completamente sobrexpuestas o


fotos con demasiado movimiento de
cámara.
El siguiente paso es ver las fotos, asig-
narles nombres fáciles de recordar y
rotar aquellas que no estén correcta-
mente orientadas. Visores como Xnview
(véase el artículo en este mismo
número) son más que suficiente para
ver, archivar y hacer un procesado sim-
ple de las imágenes.
Si se van a ver las imágenes sólo en el
monitor o mandarlas adjuntas por email,
pueden escalarse a un tamaño más
razonable de 640x480 en JPG con una
compresión media (50-60%). El desti-
natario del envío estará agradecido,
especialmente si tiene una conexión
lenta a Internet. Si hay que retocar las
fotos, será necesario asegurarse de hacer
Figura 2: Con un poco de experiencia, se puede pulir una imagen para alcanzar resultados más
los cambios antes de realizar el escalado. satisfactorios.
Cuanto menor sea el tamaño de la ima-
gen y mayor el ratio de compresión, pantalla o impresoras. Un ratio 1:1, Puede usarse la corrección Gamma
menor será la información que se tendrá esto es, que la impresora imprime de para archivo para rectificar problemas
para trabajar. manera fiel lo que se ve en pantalla, es de color causados por el origen de la
Si algunas de las imágenes necesitan un sueño inalcanzable, ya que cada imagen. Muchas cámaras digitales ge-
editarse o un ajuste fino, debería encon- monitor (y cada Sistema Operativo) neran imágenes demasiado oscuras.
trarse en las herramientas que se comen- muestra los colores de manera Cuando una cámara digital calcula los
tan este mes, las cuales son exactamente diferente. valores RGB convirtiendo los valores
las que se necesitan para hacer las co- Los buenos programas de manipu- claros en el momento de capturar la
rrecciones precisas. Las siguientes sec- lación de imágenes proporcionan doble imagen, pueden surgir diferencias. Una
ciones describen algunos problemas corrección Gamma, una básica para el corrección Gamma individual para cada
comunes asociados a las imágenes digi- monitor y, en segundo lugar, unos con- imagen puede ayudar a resolver este
tales. troles más precisos para cada archivo problema.
de manera individual. La primera co-
Gamma rrección alcanza un balance entre los Selección y Orientación
Para estar seguros de que las fotos de valores de color y la manera en que se Los molestos detalles en el borde de
nuestra pantalla concuerdan con las muestran en nuestra pantalla, pero sólo una imagen pueden estropear la impre-
copias en papel, se usará la Corrección dentro de esta herramienta específica sión de una foto. Para evitar que ocurra
Gamma de nuestro software de de manipulación de imágenes, por esto, simplemente se tendrán que
manipulación de imágenes. El valor supuesto. Esto se consigue normal- aplicar nuestras tijeras digitales. De
Gamma de las imágenes es la relación mente comparando plantillas. esta manera se eliminan esa rama que
entre los valores de los gráficos La segunda corrección es parte del cuelga o aquel sufrido corredor de
digitales y los valores mostrados en la proceso de manipulación de imágenes. nuestro maravilloso atardecer. Si se
hace bien, podría incluso potenciarse el
efecto del motivo.
Otra de las típicas imperfecciones es
que la foto esté torcida. La mejor foto
que se tenga de la playa no valdrá si el
horizonte está inclinado. Para arreglar
esto, se puede girar la imagen hasta
que el horizonte este realmente en hori-
zontal. Esto puede dejar zonas en
negro en las esquinas, pero es posible
eliminarlas fácilmente recortando la
imagen. También puede eliminarse la
típica inclinación de edificios con alia-
Figura 3: La mayoría de los programas de retoque fotográfico tienen herramientas de elimi- sing aplicando un giro en sentido
nación de ojos rojos. opuesto.

WWW.LINUX- MAGAZINE.ES Número 14 13


011-014_introCover_L14 05.01.2006 12:43 Uhr Página 14

PORTADA • Imagen Digital

Ojos Rojos
Los ojos rojos son otro problema que es
posible corregir en pocos segundos. Los
ojos rojos aparecen cuando las personas
o animales están en un entorno relativa-
mente oscuro y se fotografían usando
flash. La razón de esto es que la luz del
flash se refleja en la retina. La distancia y
el ángulo entre la cámara y el ojo, así
como el tamaño de la pupila, pueden
valores
contribuir a este indeseable efecto. Puede
de
Contraste saturación.
combatirse en el momento de sacar la
Muchas fotos foto usando un pre-flash antes de sacarla,
También se
carecen con ya que esto causa que la pupila de la per-
pueden cambiar
frecuencia de sona se contraiga.
los valores de color o
contraste o son Casi todas las herramientas de retoque
experimentar con el balance de color.
demasiado fotográfico ofrecen un eliminador de ojos
oscuras. Los rojos, ya sea incorporado o como plugin
colores no Más Nitidez opcional. En la mayoría de los progra-
representan la imagen tal y como se Algunas veces las fotos salen bastante mas, simplemente tendrá que dibujar
recordaba. Si esta carencia no es bien, con colores vivos, buen contraste y una selección alrededor de los ojos y lan-
demasiado extrema, pueden aplicarse las un motivo brillante, pero la cámara se zar la rutina. La herramienta analiza el
herramientas proporcionadas por nuestro movió o se tomó la foto con una ligera brillo de los valores rojos y los sustituye
programa de manipulación de imágenes a sobre-exposición que provocó un cierto con unos valores más oscuros (véase la
la imagen entera. Se puede probar a aplicar desenfoque. Si la imagen tiene un desen- Figura 3). Con un poco de habilidad,
los controles de brillo y contraste en foque ligero, puede aplicars la he- podemos hacer esto de manera manual.
primer lugar. Las fotos en exteriores se rramienta de nitidez (sharpen). Algunos Nuestros resultados mejorarán con la
benefician particularmente del incremento programas de retoque permiten definir práctica.
de contraste (véase Figura 2). Aumentar una máscara donde no se aplica la he-
únicamente el brillo raramente mejora los rramienta, lo que permite aplicarla con Escalado y Formato de
resultados, pero es posible intentar una bastante control. No tiene sentido Imágen
combinación de más contraste y más pasarse con la herramienta de nitidez. Si Es difícil escalar una imagen. Obvia-
brillo. Puede realizarse un ajuste fino del nos excedemos, pueden aparecer arrugas mente no hay restricciones físicas, pero
brillo y contraste aplicando la herramienta o halos semitransparentes. Para acentuar incluso un ligero escalado puede reducir
de mejora del color. O bien si es preciso el motivo principal, es posible suavizar la calidad. Existen varios algoritmos
concentrarse mucho en encontrar los el fondo. Si tanto el primer plano como (véase la Figura 4) que ayudan a alcanzar
valores adecuados, usar las curvas de color el fondo están enfocados, puede con- el mejor resultado posible. Xnview tiene
es la manera adecuada. Ambas opciones seguirse una especie de efecto 3D apli- al menos ocho métodos de escalado,
requieren un programa de retoque de cando un filtro de imagen borrosa. Para aunque algunos de ellos tienen efectos
imágenes medianamente potente, como mantener el control del retoque de la secundarios como un enfoque suavizado
por ejemplo GIMP. imagen, se debería desactivar la función o pixelado.
Si nuestra foto está muy pálida, pueden “pre-sharpening” de nuestra cámara,
conseguirse los valores necesarios de que generalmente está activada por Conclusión
intensidad de color incrementando los defecto. En el tema de portada de este mes se
habla de fotografía digital, pero también
se habla de Linux. En los siguientes
artículos se verá cómo el entorno Linux
se adapta al surgimiento de las nuevas
tecnologías a través del desarrollo de
nuevas herramientas de Software Libre.
La mayoría de los fotógrafos digitales
saben lo fácil que es llenar un disco duro
con imágenes. La pregunta es qué hace-
mos con todas estas imágenes una vez
que las tenemos en nuestro ordenador. El
tema de portada de este mes ayudará a
Figura 4: La imagen de la izquierda fue escalado usando el algoritmo Mitchell. La de la iniciarnos en la edición, retoque y esca-
derecha con el método Nearest Neighbor. neo de imágenes digitales en Linux. ■

14 Número 14 WWW.LINUX- MAGAZINE.ES


089-091_KnopixxL14 05.01.2006 13:20 Uhr Página 89

Entrevista Klaus Knopper • COMUNIDAD

El mundo según el creador de Knoppix, Klaus


Knopper

KLAUS
KNOPPER
Klaus Knopper tiene aún grandes ideas para la pequeña

distribución que ha engendrado numerosos derivados y ha

cambiado la manera de pensar respecto a Linux. Hablamos

con Klaus acerca del pasado, presente y futuro de Knoppix.

POR JOE CASAD

LM Cuéntanos, ¿a qué te dedicas cuando namiento en el trabajo, le llamé Knop- que tiendo a enfrascarme demasiado
no estás trabajando en Knoppix? ¿Y qué pix, a falta de un nombre mejor. Se pu- (soy bastante testarudo) en lo que hago,
era lo qué hacías antes de que todo esto blicó por primera vez en el año 2000 en por lo que no presto demasiada atención
empezara? el Atlanta Linux Showcase como caso de a preguntas no relacionadas o sugeren-
estudio. Más tarde hice de Knoppix un cias. Pero hay de 3 a 5 personas que re-
KK Me gradué como ingeniero eléctrico proyecto público con varios servidores gularmente ayudan a mejorar partes de
en la Universidad de Kaiserslautern, Ale- de descarga para poder sacar un cierto Knoppix, eso sin contar los cientos de
mania, y he trabajado en la adminis- feedback de los entornos hardware y desarrolladores de software libre que
tración de sistemas Unix desde que dejé peticiones de características. crean los paquetes Debian y el software
la escuela. Mientras estudiaba, también de usuario en que está basado Knoppix.
trabajé como consultor independiente. LM ¿Cómo decides qué incluyes en Así mismo, el trabajo de otras distribu-
Fui profesor, desarrollador software y, Knoppix? ciones basadas en Knoppix a menudo
salvo por la parte de administración a la retorna a la edición descargable de ésta,
que ya no me dedico, el resto sigue más KK El contenido está altamente influen- siempre que sea legal y técnicamente
o menos igual. Además de mi trabajo ciado por lo que realmente necesito para posible.
como consultor y los diversos proyectos un trabajo de formación o de consul-
en los que estoy implicado, imparto toría. Incluyo también herramientas que LM La nueva versión DVD de Knoppix

clases de informática (básica y desarrollo encuentro útiles o interesantes. Recibo ofrece mucho mayor espacio. ¿En qué se
de software Linux) en la Universidad de correo a diario de gente pidiendo alguna está usando este espacio adicional?
Ciencias Aplicadas en Zweibrücken. aplicación o característica. Algunas de ¿Cuáles son algunas de las cosas que se
estas sugerencias pueden implementarse incluyen en Knoppix 4 que no cabían en
LM ¿Cómo empezó Knoppix? y asumirse en Knoppix, pero otras no, versiones anteriores?
principalmente por motivos de licencias
KK Knoppix arrancó en torno a 1999, o patentes, o simplemente por falta de KK El espacio era siempre la última fron-

cuando recibí una de esos CD’s de espacio físico. tera de la edición en CD, que trataba de
rescate del tamaño de una tarjeta de mantener desde herramientas de rescate
visita que se regalaban como promoción LM ¿Dispones de un equipo de ayu- en consola de comandos hasta IDEs de
en el CeBit. Por pura curiosidad y si- dantes, como otros proyectos de Soft- desarrollo en un único CD. Con los siem-
guiendo la filosofía del Software Libre, ware Libre? ¿O por el contrario trabajas pre crecientes KDE y Open-Office, la
investigué el sistema de arranque para más bien en solitario? división entre una edición CD “light” y
ver cómo funcionaba. Más tarde creé un una DVD “maxi” tenía que llegar tarde o
CD auto-arrancable con los programas KK Debo admitir que usualmente tra- temprano. Ahora trato de clasificar el
que usaba con frecuencia. A este bajo solo, simplemente debido a mis software en lo mejor del escritorio y he-
proyecto que surgió como un entre- extrañas horas de trabajo y al hecho de rramientas de rescate para el CD, y todo

WWW.LINUX-MAGAZINE.ES Número 14 89
089-091_KnopixxL14 05.01.2006 13:20 Uhr Página 90

COMUNIDAD · Entrevista Klaus Knopper

lo demás para el DVD. Iremos encon- Existe un gran problema, en mi opinión, de Linux sin modificar, directamente al
trando menos software de desarrollo en con las tarjetas gráficas. Por algún lugar donde se compró y pedir que le
el CD en el futuro. El DVD contendrá motivo, se ha convertido en una especie devuelvan el dinero. Si mucha gente
más software de desarrollo por tanto, de deporte para los fabricantes de tarje- reclama su derecho a comprar hardware
además de otros paquetes que se han tas gráficas el lanzar drivers semi-pro- que simplemente funcione sin problemas
vuelto demasiado grandes para el CD, pietarios, con licencias restrictivas en con CUALQUIER sistema operativo, esto
incluyendo material innecesario como mayor o menor medida, pero que no quizás podría cambiar la actitud de
juegos libres. pueden ser consideradas “de libre dis- algunos fabricantes.
Un caso a mencionar es el sistema de tribución”. Tratar de imaginar qué es lo
procesamiento de textos científicos que hace el driver, o incluso mejorarlo o LM ¿A dónde se dirige? Colocar Knoppix

LaTeX. Tuve que quitarlo del CD, pero portarlo, está estrictamente prohibido en en un DVD parece un cambio realmente
ahora ha vuelto al DVD. Aunque per- la mayoría de los casos. Algunos pen- grande. ¿Tiene otros cambios en mente
sonalmente prefiero LaTeX a cualquier sarán que el motivo de estas licencias es para el futuro?
otro procesador de textos basado en ocultar ciertas cosas, como optimiza-
interfaz gráfica, OpenOffice era simple- ciones especiales para benchmarks KK Le estoy dando vueltas a añadir algu-

mente más importante a la hora de específicos que hacen que la gente com- nas herramientas a Knoppix para que
mostrar las cualidades ofimáticas de pre estas tarjetas. Para mí, la mayoría de pueda arrancar desde otros dispositivos,
Knoppix. estas licencias son inaceptables. Son como memory sticks o discos flash. Ya
inseguras porque nunca podrás saber si existen algunos derivados de Knoppix con
LM Knoppix tiene que estar al corriente existe alguna puerta trasera en estos dri- este objetivo, pero pienso que debería ser
de diferentes tipos de hardware. ¿Traba- vers que se ejecutan a nivel de kernel, y posible crearse uno mismo su propia ver-
jas en ocasiones directamente con HP, son incompatibles con la licencia de dis- sión de Knoppix-on-stick desde el menú
Intel y otras grandes compañías? tribución de Knoppix. Por tanto, no las de un Knoppix CD o desde una instalación
incluyo. Uso los drivers libres, aunque en disco duro. Continuar con el desarrollo
KK Me gustaría que fuese así, sin sin aceleración, de estas tarjetas. Otros para el hardware actual y añadir nuevo e
embargo, las grandes compañías no suelen derivados de Knoppix, sin embargo, son interesante software puede ser un trabajo
ser demasiado cooperativas y a veces pare- menos delicados en cuanto a temas de a jornada completa. Pero estoy tratando
cen estar esperando hasta que alguien licencias y a veces incluyen estos drivers de bajar un poco el ritmo de los lanza-
reinventa la rueda y escribe un driver propietarios. mientos debido a que estoy también
mediante ingeniería inversa, o que simple- involucrado en otros proyectos.
mente se comprueba que funciona LM ¿Cuál es la postura de estas grandes

surgiendo de la nada. Hay que añadir a compañías de hardware respecto a tu LM ¿En qué ocupas la mayor parte del

esto la gran cantidad de hardware barato labor? tiempo con Knoppix? ¿Puedes comen-
defectuoso por fallos de diseño que encon- tarnos brevemente un ciclo de actua-
tramos hoy día. Esto hace que el kernel de KK A día de hoy, sólo prestan algo de lización típico? ¿Qué tiene que ocurrir
Linux esté engordando a base de apaños apoyo en el sentido de que algunas usan para que edites una nueva versión de
para BIOS y placas base defectuosas, lo a veces Knoppix (o algún derivado) Knoppix?
cual es muy triste. Sería fantástico tener como una especie de proclama para
estándares de diseño hardware aceptados decir que su hardware es x por ciento KK No se necesita mucho tiempo para

de manera general, pero aparentemente, compatible con Linux. Desafortunada- correcciones menores y actualizaciones
sobre todo cuando se habla de los fabri- mente, a algunos fabricantes les parece de software, debido al sencillo sistema
cantes de tarjetas gráficas, esto no se tiene inaceptable que deban seguir algún de actualización de Debian. A veces,
en cuenta. Parece que ser incompatibles estándar en el desarrollo de su hardware. cuando aparece una nueva versión de
con los productos actuales es la misión de En su lugar, creen que Linux debería KDE o una nueva tecnología como
la compañía según algunos diseñadores. modificarse para poder soportar mejor unionfs, nos ponen las cosas más fáciles
Aún así, uso el kernel básico que se pu- su hardware no-estándar. En mi opinión, (fundamentalmente a mi). Aunque se
blica en kernel.org, y algunos módulos adi- están equivocados. Por supuesto hay necesita un mayor tiempo para alcanzar
cionales para ciertos componentes hard- excepciones. Algunos fabricantes son un estado estable después de una actua-
ware más nuevos que aún no han entrado reconocidos por hacer hardware 100% lización. Siempre que aparece un bug
en la rama principal del kernel. Con esto, soportado por Linux. Sin embargo, muy grave que afecta a la estabilidad, aparece
afortunadamente, mandamos como men- poca gente pregunta por ellos al comprar una nueva versión tan pronto como es
saje a los fabricantes de hardware que hardware nuevo. posible (a veces incluso al día siguiente),
deberían tratar de seguir los estándares La presión del mercado no es todavía pero afortunadamente, esto no ha sido
abiertos y documentar sus productos ade- suficiente para lograr que los fabricantes necesario muchas veces. Para cambios
cuadamente. De manera que podrán estar dejen de hacer hardware que sólo fun- de envergadura, suelo tomarme un
adecuadamente soportados en el siguiente ciona con una arquitectura cerrada tiempo y lanzo la nueva versión cuando
lanzamiento del kernel, en lugar de sacar dependiente de un driver propietario. está completamente lista.
por su cuenta un módulo propietario, inse- Mi consejo es simplemente devolver Cuando tengo encargo de pago para una
guro y no distribuible, para el kernel. hardware que no funcione con el kernel edición especial de Knoppix, puedo

90 Número 14 WWW.LINUX-MAGAZINE.ES
089-091_KnopixxL14 05.01.2006 13:20 Uhr Página 91

Entrevista Klaus Knopper • COMUNIDAD

dedicar más tiempo y esfuerzo para licencias del software que incluyo en en mente que la DCCA no está tratando
sacar la edición dentro de un cierto ca- Knoppix. de cambiar la manera de trabajar o
lendario. En la mayoría de los casos, las desarrollar de Debian. Sólo trata de
funcionalidades especiales programadas LM Knoppix es miembro de la nueva encontrar y establecer una base común
para esta versión específica aparecen Debian Common Core Alliance (DCCA). entre las distribuciones comerciales
más tarde para su descarga pública. ¿Cómo afectará esto a tu trabajo con basadas en Debian que usan el soft-
Knoppix? ¿Asumirá esta alianza algunas ware disponible al público desde
LM Cuéntanos algo más acerca de estas tareas que estás haciendo en la actuali- Debian.
ediciones especiales de pago. ¿Quién dad? Hasta el momento, no existe un sistema
encarga estas ediciones y por qué? de votación o jerarquía estrictos, ya que
KK La alianza está tratando de estable- la mayoría de los asuntos se deciden
KK Como pasa con la mayoría de los cer interoperabilidad y compatibilidad de por consenso o se resuelven fácilmente
proyectos de Software Libre, la mayor paquetes entre varias distribuciones con soluciones técnicas y metapaque-
parte del trabajo de Knoppix lo hago en basadas en Debian, de manera que sin tes. En estos momentos, estamos dis-
mi tiempo libre y fundamentalmente importar qué marca de Debian uses, cutiendo asuntos relacionados con los
para satisfacer mi curiosidad o para puedas actualizar o ampliar una distribu- paquetes del kernel, lo cual no es tan
adquirir experiencia y conocimiento de ción con software de otra. sencillo como las cuestiones de con-
software nuevo. Pero en ocasiones algún Knoppix ya es al 99% compatible con formidad con LSB. En caso de que haya
cliente requiere una versión de Knoppix Linux Standard Base (LSB),sin embargo, recomendaciones de nuevos paquetes o
personalizada para algún propósito espe- al haber sido diseñado históricamente cambios de dependencias, se procederá
cial, y esto por supuesto es trabajo que para ser ejecutado desde un medio de siguiendo los cauces usuales en Debian
ha de pagarse como cualquier otro sólo lectura, hay algunos cambios en la para hacer una propuesta (en forma de
proyecto de software comercial. El tra- rama principal de Debian que deberían, un parche, por ejemplo) a los mantene-
bajo suele licenciarse bajo las condi- a largo plazo, tratarse de manera dife- dores de paquetes.
ciones GNU. (Debe ser así, ya que se rente. Ya es posible instalar Knoppix en
basa en Software Libre). disco duro y actualizarlo desde los repo- LM Con la gran cantidad de distribu-

Los clientes que piden una versión co- sitorios de Debian, pero en algunos ciones live de Linux que existen en el
mercial de Knoppix suelen ser revistas casos, debemos tener cuidado con prob- mundo, ¿qué hace a Knoppix diferente?
de informática que quieren incluir un CD lemas con las versiones de KDE y las Dicho de otra forma, ¿cuál es la razón
o DVD arrancable con un número, o que librerías del sistema, por ejemplo, o con del éxito de Knoppix?
quieren vender algo que aún no está versiones parcheadas del software
disponible todavía. Por ejemplo, un edi- Debian (como sysvinit-knoppix). KK Knoppix se diseñó como un sis-

tor puede pedir un antivirus basado en Al adoptar Knoppix la lista de paquetes tema live (principalmente conmigo
Linux que arranque desde un miniCD, o principal de DCCA e integrar los cambios mismo como usuario destino) para
un servidor SAMBA en CD o tal vez una específicos de Knoppix como paquetes desarrollar trabajo de verdad y produc-
edición especial con juegos. Otros separados, esto ayudará a facilitar las tivo en ordenadores extraños, basado
clientes pueden ser organismos oficiales cosas tras una instalación en disco duro. en sistema Linux pre-instalado con una
que quieren tener una plataforma Knoppix se comportará de manera más rápida auto-configuración y gran facili-
estandarizada para su propio software, parecida a un sistema Debian estándar dad de uso. Knoppix no es un mero
escuelas, entidades de formación o cien- (con extensiones) que ahora. disco de demostración o una he-
tíficas, universidades o incluso proyectos rramienta de hackers. Otras distribu-
internacionales relacionados con la edu- LM ¿Quién está decidiendo esta lista de ciones tienen sus versiones live CD que
cación o la ciencia. Debido a la flexibili- paquetes principal de la DCCA? ¿Eres muestran (de manera simulada) el pro-
dad de GNU/Linux, existen numerosos parte del comité que vota qué incluir en ceso de instalación y parecen, y se
propósitos para Live CD’s especializa- la lista principal? comportan, como una distribución de
dos, y siempre es bueno tener una verdad de las que se venden en una
plataforma que sabemos cómo funciona, KK Al igual que la mayoría de proyec- caja. Pero estos discos de evaluación
independientemente de los diferentes tos de Software Libre, la DCCA ha no están pensados para ejecutarse per-
ordenadores donde se ejecute. puesto en marcha una lista de correo de manentemente. El software incluido en
Por supuesto, Knoppix no es el único desarrolladores donde todo el mundo Knoppix es usualmente utilizado en
live CD apropiado como base de estos puede mandar sus sugerencias y discu- varias distribuciones, aunque he inten-
proyectos, pero es más fácil usar Knop- tir qué paquetes deberían incluirse en tado incluir una mezcla de programas
pix que las distribuciones live que con- el grupo principal de paquetes. De útiles tanto para el novato como para
tienen software propietario o de momento ha habido muy pocas dis- el usuario experto.
demostración que no es “libremente dis- putas al respecto. Probablemente Para el enorme número de descargas
tribuible incluso de forma modificada, debido a que la gente de formación téc- diarias y las 20.000 visitas diarias al
tanto para usos no comerciales como nica tiene bastante claro qué compo- mirror de la página web de Knoppix, la
para comerciales”. Es una de las razones nentes son absolutamente necesarios y verdad es que no tengo una verdadera
por las que soy tan cuidadoso con las cuales son opcionales. Debemos tener explicación. ■

WWW.LINUX-MAGAZINE.ES Número 14 91
098_Proximo_14 05.01.2006 13:24 Uhr Página 98

PRÓXIMO NÚMERO

Abril 2006: Número 15

PRÓXIMO NÚMERO
CAZADORES DE
VIRUS
“Algunos dicen que un ataque es inminente
y otros que no hay de qué preocuparse,
pero… ¿Cuál es la verdad tras los virus en
Linux?” Ésta es la pregunta que se plantea
Tomasz Kojm en nuestro primer artículo de
portada del número 15 de Linux Magazine.
Para todos aquellos que se sentían muy
seguros con Linux, Kojm de inmediato pasa
a explicar cómo crear un hipotético virus en
Linux e ilustra cómo se propagaría por un
sistema. Si esta perspectiva te pone
nervioso/a, siempre puedes echarle un vis-
tazo a nuestros siguientes artículos: en
“Antivirus Linux” evaluamos una buena
selección de los antivirus disponibles en el
mercado para Linux. En “Klamming Up”
echamos un vistazo a la mejor y más
famosa de las soluciones de código abierto:
KlamAV. Y, finalmente, en nuestro artículo
sobre Amavisd-new examinamos cómo
proteger toda una red de spam y virus a
nivel de servidor de correo.

ANIMACIÓN 3D PLAN 9 que


que has
has de
fascinante
de saber
saber de
fascinante sistema
de este
sistema en
este
en el el
En
En “Mundos
“Mundos Virtuales”
Virtuales” Si
Si piensas
piensas que
que “Plan
“Plan 9”9” es
es número
número 15 15 de de Linux
Linux
repasamos
repasamos cómo
cómo está
está elel una
una película
película cutre
cutre dede los
los años
años Magazine.
Magazine.
panorama
panorama del
del software
software para
para cincuenta,
cincuenta, piensa
piensa de de nuevo.
nuevo.
la
la generación
generación de
de imágenes El
El equipo
equipo dede desarrolladores
tridimensionales
tridimensionales
imágenes
con
con que
que creó
creó el
desarrolladores
el primer
primer Unix,
Unix, el
el KONSULTORIO
aplicaciones
aplicaciones de
de código
código sistema
sistema “papá”
“papá” de de Linux,
Linux, no
no
abierto.
abierto. Imprescindible
Imprescindible para
para ha
ha permanecido
permanecido inmóvil inmóvil Estrenamos
Estrenamos sección:
sección: “El
“El
diseñadores
diseñadores yy creadores
creadores de
de todos
todos estos
estos años
años yy haha creado
creado Konsultorio
Konsultorio de de Klaus”.
Klaus”. En
En
juegos.
juegos. “Plan
“Plan 9”, 9”, un un innovador
innovador ella.
ella. Klaus
Klaus Knopper,
Knopper, el el
sistema
sistema operativo
operativo queque poco
poco creador
creador dede Knoppix,
Knoppix, contesta
contesta
tiene
tiene que
que ver
ver con
con Unix
Unix yy que
que aa las
las preguntas
preguntas planteadas
planteadas
recientemente
recientemente se
se ha
ha por
por los
los lectores.Todo
lectores.Todo esto
esto yy
empezado
empezado aa distribuir
distribuir bajo
bajo mucho
mucho másmás en
en el
el número
número 15
15
una
una licencia
licencia libre.
libre. Aprende
Aprende lo lo de
de LINUX
LINUX MAGAZINE
MAGAZINE

A LA VENTA: MARZO 2006


98 Número 14 WWW.LINUX- MAGAZINE.ES
040-042_lmms 05.01.2006 13:00 Uhr Página 40

PRÁCTICO • LMMS

Crear música con Linux Multimedia Studio

EL COMPOSITOR

Linux ha empezado a competir de verdad con Windows y MacOS como plataforma para programas de

sonido profesional. Linux Multimedia Studio (LMMS) es una herramienta de sonido que engloba una gran

variedad de impresionantes características en un estupendo paquete. POR TOBIAS DOERFFEL

H
ace relativamente poco Instalación y Configuración Opciones de Optimización” lista las
tiempo, multimedia y Linux de LMMS opciones más importantes de compi-
eran mundos completamente Los paquetes binarios para las lación para la plataforma Intel.
separados, pero gracias a Dios, la principales distros se encuentran en la Pueden usarse las opciones de con-
situación ha cambiado por completo. página Web de LMMS [1]. Los usuarios figure para deshabilitar algunas carac-
Linux ya no flaquea tras Windows y de otras distros tendrán que compilar terísticas de LMMS y conseguir que
MacOS ni incluso en el mundo de la el código fuente para instalarlo. Puede funcione incluso más rápido. Por ejem-
producción musical: Audacity propor- comenzarse con la descarga del código plo, no tiene mucho sentido compilar
ciona edición de sonido a Linux, fuente desde [1]. sonido envolvente si nuestra tarjeta de
Rosegarden trata los archivos Midi e Debido a que LMMS es un programa sonido no soporta esta opción. Sin
Hydrogen nos permite conjuntar los en tiempo real que necesita bastante sonido envolvente, LMMS sólo necesita
sonidos y los ritmos. Por último, pero potencia de procesador, deberían habil- tratar la mitad del volumen de datos en
no menos importante, Csound propor- itarse todas las opciones de opti- ciertos casos, y esto se traduce en un
ciona software personalizado de sínte- mización. El cuadro “Principales rendimiento mucho mayor.
sis y efectos. Se puede deshabilitar el sonido
Como se habrá dado cuenta, existe envolvente especificando --disable-sur-
una herramienta diferente para cada round ab. Y si se puede vivir sin
tarea, cuando la mayoría de los usuar- tiempo real verdadero, porque no se
ios preferirían un sistema integrado en disponga de un teclado midi, puede
lugar de componentes individuales especificarse --with-latency=VALOR,
para potenciar el trabajo creativo. Esto donde VALOR es una potencia de 2,
ha llevado al lanzamiento de Linux esto es, 64, 128 o 256. El valor por
Multimedia Studio (LMMS) en la pri- defecto es 256, que proporciona un
mavera del año pasado. LMMS com- tiempo de latencia (retraso entre un
bina toda la funcionalidad de los pro- Figura 1: Dentro de LMMS, podemos situar los evento y la salida del sonido) de 6
gramas que acabamos de mencionar beats juntos con unos pocos clics. El programa milisegundos. Cuanto menor es el
con una única interfaz parecida a la de incluye una colección de muestras que valor, menor es la latencia y más cerca
Fruity Loops en Windows. podemos usar con nuestras propias canciones. del tiempo real se estará.

40 Número 14 WWW.LINUX-MAGAZINE.ES
040-042_lmms 05.01.2006 13:00 Uhr Página 41

LMMS • PRÁCTICO

muestra seleccionada. El plug-in Antes de continuar, va a configurarse


AudioFileProcessor, visible desde la una nueva línea de bajos. Para ello, se
misma ventana, se usa para cargar pulsa sobre el botón Add Beat/Bassline
muestras. AudioFileProcessor permite en el cuadro Song Editor, y después abrir
configurar diferentes parámetros de sal- el conjunto de valores prefijados Rough!
ida. para este ejemplo.
Ahora es un buen momento para pro- Como no sólo se crearán beats con
bar el teclado del piano virtual, para ver estos valores, será preciso editar el
si se está consiguiendo buen sonido de patrón en el teclado de piano. Se hace
salida y si LMMS ha cargado satisfactori- doble clic en el patrón (arriba o abajo de
Figura 2: Usamos el Piano Roll para editar amente la muestra. Si es posible los botones de los pasos) en el
líneas de bajos. Pulsamos para añadir, elimi- escuchar unas cuantas percusiones en Beat+Bassline Editor para abrir el
nar o cambiar el valor de las notas. este punto, será señal de que está todo teclado de piano. Una vez en el Piano
correcto y se podrá cerrar la ventana del Roll (Figura 2), simplemente puede pul-
Para especificar todas estas opciones canal. sarse para añadir notas, cambiar sus
para la compilación, puede configurarse A continuación ha llegado el momento posiciones o cambiar su longitud. Se
el código fuente con el siguiente de comenzar con los primeros compases. arrastra el borde de la nota para hacer
comando: ./configure -prefix=/usr Para crear un compás se pulsan los esto. Pulsamos con el botón derecho del
CXXFLAGS="-O2" [--disable-surround] botones grises, según el patrón corre- ratón para eliminar notas individuales.
[--with-latency=VALOR]. A continuación spondiente, en el editor Beat+Bassline. En el Song Editor, ya es posible enlazar
se ejecuta make para compilar un bina- Esto cambia los botones grises a verdes. el nuevo beat y la recién creada línea de
rio LMMS y make install para instalar los Puede pulsarse ahora el botón de repro- bajos. Se pulsa con el botón izquierdo
archivos requeridos en el sistema. ducción situado encima de las pistas para crear una lista de reproducción de
make rpm proporciona un paquete para escuchar los primeros resultados.
RPM, usualmente en /usr/src/. Ya se Claro que el sonido de una sola per-
puede instalar el paquete tecleando rpm cusión puede llegar a ser monótono.
Principales Opciones de
-i FILE.rpm. Sin embargo, esto desha- Puede hacerse doble clic para añadir Compilador
bilita las opciones que se han fijado en el tambores, platillos y demás elementos. • -O2 o -O3: Esta opción especifica el
paso configure. En su lugar, será nece- La Figura 1 muestra un ejemplo de un nivel de optimización que debería
sario habilitar la variable ritmo completo. usar el compilador. Para los nuevos
RPM_OPT_FLAGS. procesadores con mucha caché,
Después de compilar e instalar, se Momentos Melódicos podemos probar a usar -O3.
puede teclear lmms para iniciar el pro- Se desea que LMMS proporcione algo de • -mcpu=IHRECPU: Indica al compilador
grama. Esto arranca un asistente que música real en lugar de simplemente un para qué procesador debería opti-
ayuda en la configuración inicial. par de tambores. Afortunadamente tiene su mizar el código. Los valores posibles
propio software de síntesis, llamado Triple para YOURCPU son: pentium2, pen-
Primeros Pasos Oscillator, que comprende tres osciladores,
tium3, pentium4, k6, k6-2, k6-3, athlon,
athlon-tbird, athlon-4 y athlon-xp. La
La primera vez que se ejecuta el pro- filtros, sobres y osciladores de baja frecuen-
página man de GCC tiene algunas
grama, la interfaz de LMMS aparece con cia (LFO’s). otras opciones. Podemos mirar en
las siguientes áreas y ventanas. La ven- Los principiantes se sienten a menudo /proc/cpuinfo para averiguar qué CPU
tana más importante, el Song Editor, abrumados por esta cantidad de posibili- tenemos.
contiene la lista de reproducción con las dades. Por ello LMMS define algunos val- • -msse, -msse2: Esto le indica al compi-
diferentes pistas y un cuadro de her- ores prefijados. Estos archivos contienen lador que use los comandos SSE para
ramientas. El Beat + Bassline Editor configuraciones específicas para un único operaciones en punto flotante. Las
ayuda a crear beats y líneas de bajos, canal. Guardan información del plug-in en considerables mejoras de
que podrán arrastrarse hasta el editor uso (como Triple Oscillator o Audio File rendimiento en LMMS, sin embargo,
más tarde. La ventana Project Notes es el Processor), la configuración en sí y los fil- sólo se aprecian en los procesadores
lugar donde se pueden añadir las notas tros y envolventes. AMD e Intel (Pentium 3 o superior)
para describir el proyecto. La parte Al cargar unos valores evitamos la que soporten estos comandos.
izquierda es una barra con varias zonas necesidad de lidiar con unos complejos • -mfpmath=sse,387: Si nuestro proce-
de tareas, como el explorador de proyec- parámetros de generación de sonido. Al sador soporta instrucciones SSE,
tos y samples. mismo tiempo, son el punto de comienzo podemos usar esta opción para habili-
tar la unidad SSE y el co-procesador
Se comenzará creando una percusión ideal para nuestros propios sonidos. Es
interno.
simple. Para ello, se abre el Sample posible girar los botones hasta situarlos
Browser (My Samples), así como el direc- adecuadamente. Para acceder al explorador Los lectores más aventurados que
quieran más rendimiento pueden probar
torio drums y se hace doble clic en el de valores prefijados, debe pulsarse sobre
Acovea [2], que usa algoritmos genéti-
archivo kick_hiphop01.ogg. Aparece una el asterisco amarillo en la parte izquierda.
cos para descubrir las opciones de
nueva pista en el Beat+Bassline Editor, Cada plug-in se ubica en su propio directo-
ajuste óptimas.
junto con un canal que contiene la rio.

WWW.LINUX-MAGAZINE.ES Número 14 41
040-042_lmms 05.01.2006 13:00 Uhr Página 42

PRÁCTICO • LMMS

objetos que definen cuándo y durante ciso experimentar con esta tecnología para Grandes Planes
cuánto tiempo se va a reproducir un beat o acostumbrarnos a los efectos que se La hoja de ruta de LMMS está llena de
una línea de bajos. pueden crear. importantes extensiones al programa.
Como se muestra en la Figura 3, la lista La pestaña Arp/Chord ayuda a definir la Por ejemplo, LMMS no proporciona
de reproducción puede comprender tam- configuración para arpegios y acordes ninguna opción para aplicar efectos
bién canales (se muestra en la Figura el automáticos. Si se selecciona un acorde (reverberación, eco, distorsiones,
Triple Oscillator). Esto tiene sentido si mayor y un rango de dos coros, ecualización y
nuestros patrones no contienen líneas de octavas por tono, LMMS filtros, sólo por nom-
bajos que se repiten continuamente, sino puede añadir automática- brar algunos). Las tar-
melodías individuales que se reproducen mente el acorde mayor eas para la adminis-
sólo una vez a lo largo de la canción. coincidente sobre un rango tración de efectos están
Puede pulsarse el botón izquierdo sobre de dos octavas. La función programadas para la
una pista para crear un patrón de este de arpegio permite repro- versión 0.1.0, e
tipo, y luego hacer doble clic para editarlo. ducir las notas individ- incluirán una interfaz
uales del acorde secuen- LADSPA entre otras
Pistas de Muestra cialmente. cosas. LADSPA (Linux
Además de las pistas de canal y de El bloqueo de patrones Audio Developers Sim-
beats/lineas de bajos, LMMS también permite al usuario crear ple Plugin API) propor-
soporta pistas de muestra. Pueden ser complejas canciones ciona a los desarrol-
usadas para crear muestras mayores como polifónicas incluso si nues- ladores de software de
raps o solos de guitarra que se hayan tra CPU no tiene suficiente audio una interfaz
grabado. La tecnología completa de pistas potencia para reproducir- estandarizada para los
de muestra está aún en desarrollo, y su las en vivo. Al pulsar sobre plugins de efectos y sin-
funcionalidad, en el momento de escribir Freeze en el menú de un Figura 4: Cada canal puede tetizadores.
este artículo, está restringida a cargar patrón se indica a LMMS controlarse usando envol- De igual importancia
muestras. Próximamente, LMMS tendrá que reproduzca el patrón ventes, osciladores de baja será un sistema que
funcionalidades de grabación y edición una vez de manera interna frecuencia y filtros. permita a los usuarios
simple. y guarde los resultados en controlar todos los
un búfer. botones y conmutadores de LMMS de
Envolventes, LFO’s, Filtros, Cuando se reproduce la canción en vivo, forma dinámica. Sus desarrolladores
Acordes el programa no intenta recalcular la infor- están buscando en estos momentos el
La ventana Channel (Figura 4) tiene más mación de este patrón. En su lugar simple- modo de proporcionar a los usuarios la
de un solo plug-in: además de la pestaña mente lee el búfer y lo parchea en el búfer capacidad de modificar las frecuencias
Plugin, existen las pestañas de salida. Los cambios en el patrón blo- de corte de un filtro con dibujar una
Envelopes/LFO/Filter y Arp/Chord. queado no se implementan hasta que no curva. Además, debería ser posible
Envelopes/LFO/Filter (Figura 4) nos per- desbloqueen y se vuelvan a bloquear. controlar el desacople periódico de un
mite definir un filtro para un canal activo También es posible contolar LMMS a oscilador con la aplicación de un LFO.
y fijar parámetros como la frecuencia de través de un teclado midi. Al pulsar sobre Como LMMS tiene aún un espectro
corte y la resonancia. Podemos controlar el teclado, se le está indicando que toque la de sonido bastante limitado, se están
estos dos parámetros usando las envol- nota correspondiente en el canal en uso. planeando más plugins para el futuro.
ventes y los osciladores de baja frecuencia Además de esto, puede mapearse cualquier Además del cliente de plugins LADSPA,
(LFO’s). botón de LMMS al control de pitch del se está trabajando en un cliente VST,
Las envolventes representan la progre- teclado con sólo seleccionar Map to MIDI que permitirá usar plugins VST.
sión temporal del valor en cuestión, por device en el menú del botón. Tras esto, el El proyecto de LMMS está aún en
ejemplo, una aparición súbita y un botón responde a las órdenes de la rueda desarrollo, y la hoja de ruta de las car-
decaimiento lento. Cuanto más grande de pitch, pero es necesario asegurarse de acterísticas mencionadas es algo
pongamos el valor del botón Amount, más que el rango de pitch se encuentra al máxi- imprecisa. Por contra, se está progre-
efecto tendrá la envolvente sobre el valor mo en el teclado. sando a buen ritmo en el editor de
original. Un oscilador de baja frecuencia Tras concluir una canción, podemos notas tradicional. LMMS ya es capaz
cambia el valor periódicamente. Será pre- exportar el resultado final a un archivo Wav de importar archivos midi, y parece
u Ogg. Para ello, seleccionamos Project | seguro que será capaz de importar
Export o presionamos [Ctrl]+[E]. Tras otros tipos de archivos en un futuro
introducir un nombre de archivo y especi- inmediato. ■
ficar el formato, aparece una ventana con
opciones para exportar la canción. RECURSOS
Pulsamos en Export para indicarle a LMMS
[1] Página de LMMS: http://lmms.
Figura 3: El Song Editor combina los beats y que guarde la canción al archivo de salida,
sourceforge.net
líneas de bajos para formar una lista de el cual podemos ya grabar en un CD o
[2] Acovea: http://www.coyotegulch.com
reproducción. reproducir un nuestro equipo de sonido.

42 Número 14 WWW.LINUX-MAGAZINE.ES
027-029_Nero 05.01.2006 12:51 Uhr Página 27

Nero • EVALUACIÓN

Examinamos NeroLinux Version 2.0.0.2

DESEOS ARDIENTES
N
ero es un programa comercial
¿Supera Nero en capacidad a los programas nativos de para la grabación de CDs y DVDs
muy popular en el mundo Win-
grabación de CDs de código abierto de Linux? ¿O se le quedan dows. Hoy día muchas grabadoras
vienen con una versión OEM de Nero, lo
las tostadas por hacer? POR HAGEN HÖPFNER
que la ha ayudado a convertirse en la
aplicación estándar para grabación de
CDs y DVDs en Windows. A principios
de 2005 se presentó una versión de Nero
para Linux, NeroLinux. Esta primera ver-
sión no estaba a la altura de la corres-
pondiente para Windows. Pero reciente-
mente hemos probado NeroLinux 2.0.0.2
para ver si se han acortado distancias
entre ambas versiones.

Compra de Combustible
Ya podemos comprar NeroLINUX
(véase Figura 1) sin necesidad de tener
Windows. Por 19.99 dólares USA se
puede conseguir un número de serie
que convierte la versión demo descar-
gable desde [1] en la versión completa.
Esta demo descargable ofrece al
usuario de Linux tiempo suficiente para
probar las capacidades de tostado de
NeroLINUX antes de tomar una
decisión.
Nero no es excesivamente exigente en
el apartado de requisitos del sistema. El
programa funciona en sistemas RPM o
basados en Debian Linux con kernel
2.4.x o superior. La versión 1.2 de la
librería GTK es necesaria, pero está
normalmente incluida en todas las
principales distribuciones de Linux. En
cuanto a hardware, necesitaremos al
menos una CPU a 500 MHz y 64MB de
RAM. El requerimiento depende del
tipo de medio que vayamos a grabar. El
fabricante especifica 9GB para
grabación de DVD. Los 50MB de disco
duro que ocupa propiamente el soft-
ware es algo casi insignificante. Oficial-
mente, Nero soporta las versiones 32-
bit de las siguientes distribuciones
Linux:

WWW.LINUX- MAGAZINE.ES Número 14 27


027-029_Nero 05.01.2006 12:51 Uhr Página 28

EVALUACIÓN • Nero

• Suse Linux Versión 8.0 o superior de prueba con Suse Linux 9.3, que no Además, la nueva versión ofrece al
• Red Hat Linux Versión 7.2 o superior tiene nada SCSI (véase Figura 2). Sin usuario la posibilidad de crear discos DVD
• Fedora Core 1 hasta 4 embargo, este hecho no tiene mayor video y MiniDVD, si los correspondientes
• Debian GNU/Linux Versión 3.0 o supe- efecto en el funcionamiento del programa directorios VIDEO_TS y AUDIO_TS están
rior con kernel versión 2.4.x o 2.6.x y si se marca el cuadro que se nos mues- disponibles. La versión de Linux no tiene
(Debian Woody instala un kernel 2.2.x tra, no volverá a aparecer dicho mensaje la opción de crear discos de video a partir
por defecto). en lo sucesivo. de archivos de video, a diferencia de la
Aunque no está en la lista oficial, Nero Si el programa indica que hay otras apli- versión de Windows. Sin embargo,
también se ejecutará en Mandriva Linux caciones que impiden el proceso de podemos imponer opciones específicas
10.1. Los usuarios de distribuciones grabación, no debemos ignorar el men- ISO, como el tipo de sectores CD, Modo 1
basadas en Debian encontrarán un saje. Como muestra la Figura 3, Nero está o Modo 2/XA, al igual que Joliet (para
paquete en formato Debian en la página disconforme con susewatcher y suseplug- nombres de archivo largos en Windows) y
de descargas. Y hay un paquete RPM para ger de Suse. El primero proporciona men- RockRidge (para nombres de archivo lar-
usuarios de Suse Linux, Fedora y otras dis- sajes de actualizaciones de seguridad, por gos en Linux). Pulsamos en la pestaña ISO
tros basadas en RPM. lo que no parece buena idea deshabili- Options en el cuadro de configuración
Antes de arrancar nuestro software de tarlo. suseplugger monitoriza hardware para habilitarlas.
instalación para instalar Nero, se debería que se conecta en caliente y proporciona Otra característica nueva en esta última
validar el archivo descargado usando la acciones específicas ante eventos específi- versión de Nero es la capacidad de mapear
suma MD5. Para validarlo, en Suse Linux, cos, como ejecutar Konqueror cuando señales de audio a eventos del dispositivo
por ejemplo, se calcula el hash MD5 para insertamos un pendrive USB en el orde- de grabación. Ésta sólo es útil para aque-
el paquete tecleando el comando md5sum nador. En nuestros tests, el auto-montado llos que, o bien usan OSS, o el antiguo
nerolinux-2.0.0.2-x86.rpm y se comparan de la unidad de CD-ROM no funcionó co- demonio de sonido ESD. Si es el KDE Arts
los resultados con el checksum mostrado rrectamente cuando tratamos de ejecutar quien tiene el control de nuestro hardware
en la página de descargas de Nero. Si las Nero con suseplugger habilitado. de audio, Nero es incapaz de usar el dis-
dos cadenas coinciden, será seguro insta- positivo y simplemente se queda callado.
lar el paquete. La rutina de instalación Rellenar el Depósito Para conmutar entre OSS y ESD y para
añade una entrada para Nero en el menú Los últimos cambios en Nero han incluido deshabilitar las señales acústicas, selec-
de KDE. soporte para grabación por capas de DVD- cionamos File | Preferences en la pestaña
R-DL (Doble Capa). Esta característica per- System Configuration. La pestaña Sounds
Fuego Demoníaco mite al usuario la posibilidad de llenar en el mismo cuadro de diálogo nos per-
La primera vez que se ejecuta Nero, DVD-R de doble capa en varias sesiones. mite seleccionar los sonidos a reproducir.
empieza buscando un dispositivo de El programa escribe en ambas capas del La última versión de Nero incluye algunas
grabación. Por algún extraño motivo, el disco alternativamente. Según el fabri- características nuevas, pero el fabricante
programa se quejó de que no podía cante, esto convierte a Nero en el único también ha aprovechado para hacer una
acceder a algunos dispositivos SCSI programa capaz de soportar los todavía buena caza de fallos. Hay un registro de
cuando lo ejecutamos en nuestro portátil poco comunes DVDs de doble capa. cambios detallado en [2].

Resistente al Fuego
No es ningún secreto que Nero para Linux
es mucho menos avanzado que la versión
Nero para Windows. Pero en comparación
con las aplicaciones para Linux como K3b
[3], Nero aún deja bastante que desear. El
programa no tiene un asistente de proyec-
tos, y aunque el “arrastrar y soltar” fun-
ciona en Nero desde y hacia Konqueror,

Figura 2: Nero se queja de no tener acceso a


los sistemas SCSI, aunque el portátil usado
Figura 1: Recabamos los archivos para la grabación en la ventana principal de Nero. en el test no tenía ninguno.

28 Número 14 WWW.LINUX- MAGAZINE.ES


027-029_Nero 05.01.2006 12:51 Uhr Página 29

Nero • EVALUACIÓN

tenemos que asegurarnos bien el destino configuración (Figura 4) tiene una opción con
adecuado. El árbol del sistema de archivos para añadir más herramientas y de esta
en la parte inferior izquierda de la Figura 1 manera ayudar al programa a tratar otros strval(regexp("Total data U
simplemente ignora cualquier intento de formatos. length: ([0-9]*)"))*12.9
soltar archivos y directorios, forzando al Cuando se intentó convertir de MP3 a
usuario a utilizar la lista de archivos a su WAV, Nero creó un cierto número de para indicarle que cree CDs de audio a par-
derecha. archivos que contenían sólo ruido de nues- tir de archivos OggVorbis.
tro sistema. Un ajuste incorrecto del orden
Utilidades Extra de byte interno tuvo la culpa. Conclusiones
Una de las funciones más interesantes de Desafortunadamente, Nero se bloqueó El arreglo de fallos en la versión 2.0.0.2 y el
Nero es la capacidad de convertir formatos esporádicamente cuando tratamos de hecho de que Nero continúa proporcio-
de audio. Para poder hacer uso de esta car- forzar un ordenamiento little-Endian en el nando soporte para Linux son dos pasos
acterística cuando se tenga instalado Suse cuadro de codificación de archivos WAV. dados en la dirección correcta. Sin
Tras varios intentos, fuimos capaces al embargo, la versión Linux del programa se
final de convertir un archivo, y el resultado encuentra todavía en un estado temprano
fue bueno, pero la función es tan inestable de desarrollo y aún le queda un largo
que su uso para producción se puede camino por recorrer para llegar a ser real-
descartar. mente competitiva.
Si hacemos caso al fabricante, el punto
Editor de Pistas fuerte de Nero es la capacidad de grabar
Con Nero se puede usar el editor de pistas discos DVD-R-DL. la desventaja es que los
para quemar CDs de audio. La manera más controles tienen bastantes carencias en
rápida de acceder al editor de pistas es pre- cuanto a su usabilidad, y nadie esperaría
Figura 3: Nero no funciona con algunas de sionar [F4]. Se pueden entonces arrastrar encontrar tantos fallos en un producto
las características de las distribuciones de los archivos de audio necesarios hasta la comercial. Suponiendo que podamos vivir
Linux más recientes. lista y soltarlos en ella. En nuestra prueba, sin necesidad de grabar DVD-R-DL, puede
Nero sólo soportaba archivos MP3. De que queramos usar esos 19.99 dólares en
9.3 tendremos que añadir los cuatro packs hecho, se quejaba de que los archivos WAV otra cosa. ■
multimedia opcionales (disponibles a que creamos eran demasiado largos.
través de una actualización online). Fue incapaz de determinar la longitud de
También se necesitarán estos packs los archivos OggVorbis debido a que no Hagen
opcionales si se desean reproducir tenía acceso al programa Oggtst. Desafortu- Höpfner ter-
archivos de audio haciendo doble clic en el nadamente, la herramienta para desarro- minó su doc-
torado en
icono o arrastrándolo hasta la esquina infe- lladores de OggVorbis ha remplazado
Ciencias de la
rior derecha de la ventana de Nero. Como Oggtst con Ogginfo. Para configurar el pro-
Computación
alternativa, se pueden instalar manual- grama para que use la alternativa Ogginfo, y es ahora
mente las herramientas necesarias: es preciso reemplazar la entrada oggtst profesor de
EL AUTOR

mpg123 y/o ogg123. "$file" con ogginfo "$file" en la línea .ogg Sistemas de
Nero necesita algunas otras herramien- del campo Detect Size del cuadro mostrado Información y Bases de Datos
tas para convertir formatos. Por ejemplo en la Figura 4. Entoces se reemplaza la en la Universidad Internacional
lame para crear archivos MP3, sox para siguiente línea del campo Add File Type: de Bruchsal, Alemania (http://
formatos WAV y oggenc para convertir www.i-u.de). Además de ser
archivos de audio a OggVorbis. strval(regexp("^length=([0-9]U un adorable padre, Hagen es
La pestaña File Types en el cuadro de *)"))*44100*4 co-autor de un libro de texto
acerca de bases de datos para
móviles y Sistemas de Infor-
mación. En su tiempo libre,
toca la guitarra con una banda
de rock llamada “Gute Frage”
(http://www.gutefrage.info).

RECURSOS
[1] NeroLINUX: http://ww2.nero.com/
enu/NeroLINUX.html
[2] Lista de cambios NeroLINUX 2.0.0.2:
http://club.cdfreaks.com/showthread.
php?t=142046
Figura 4: Este desordenado cuadro permite al usuario asociar el conversor de audio de Nero [3] Página de K3b: http://www.k3b.org/
con otros formatos.

WWW.LINUX- MAGAZINE.ES Número 14 29


030-032_OOBase 05.01.2006 12:52 Uhr Página 30

PRÁCTICO • OpenOffice.org Base

Crear
Crear una
una aplicación
aplicación de
de base
base de
de datos
datos con
con OOo
OOo Base
Base

LLEGAR A BASE

Si necesitamos una solución rápida y sencilla, podemos crear nuestra

propia aplicación de base de datos con OpenOffice.org 2.0. POR

DMITRI POPOV

O
penOffice.org 2.0 incluye un de una tabla. Viene a ser algo como la base de datos que lleva la cuenta de los
nuevo módulo de bases de datos, interfaz gráfica de usuario de una base de trabajos, horas trabajadas y clientes para
basado en HyperSonic SQL, un datos. Los reportes se usan para generar un contratista de trabajadores freelance.
motor de bases de datos relacionales resultados con un determinado formato La Figura 1 muestra el modelo de nuestra
escrito en Java. Podemos usar OOo Base desde las tablas, generalmente para aplicación de ejemplo. Como se puede
para construir desde una simple colección imprimirlas. apreciar, la estructura consiste en cuatro
de recetas a una valiosa solución de Como veremos en este artículo, puede pequeñas tablas. Cada tabla consiste a su
management. Base es una herramienta dividirse la tarea de crear una aplicación vez en series de registros que representan
poderosa, pero para aquellos que no estén de base de datos en las subtareas de la compañía, el contacto, trabajo o las
familiarizados con sus características, el configurar tablas, consultas y formularios. horas trabajadas, entre otras. Los registros
simple desarrollo de una base de datos Los reportes son también importantes están enlazados a través de una serie de
puede resultar insufrible. Este artículo nos para algunas aplicaciones, sin embargo no relaciones predefinidas. Las relaciones
guiará a través de los pasos para profundizaremos en ellos en este artículo. permiten a una tabla referenciar la
configurar una simple aplicación de base Antes de ejecutar Base, es una buena información de otra tabla. En la Figura 1,
de datos empresarial con Base. idea crear un modelo de base de datos que por ejemplo, cada trabajo está asociado a
ayude a visualizar la estructura de la una compañía a la cual se le presta el
Planeando la Base de Datos aplicación. Se pueden bien dibujar el servicio. Esta estructura admite
Un Sistema de Gestión de Bases de Datos modelo a mano, o bien usar un programa situaciones en las cuales un contratista
Relacionales (SGBDR) usualmente se como OpenOffice.org Draw. Draw incluye tiene varios contratos (trabajos) para una
compone de cuatro elementos: algunas
*tablas herramientas
*consultas de diagramas
*formularios que son útiles
*reportes para crear esta
La información de la base de datos se clase de
guarda en tablas. Las consultas se usan modelos de
para extraer, ver y tratar los datos. Pueden bases de datos.
recabar los datos de muchas tablas y La aplicación
hacerlos disponibles en forma de de ejemplo
formularios y reportes. Los formularios para el artículo
nos permiten ver y editar la información es una sencilla Figura 1: El modelo de base de datos incluye tablas, campos y relaciones.

30 Número 14 WWW.LINUX-MAGAZINE.ES
030-032_OOBase 05.01.2006 12:52 Uhr Página 31

OpenOffice.org Base • PRÁCTICO

misma compañía, o bien Para fijar el campo se suelta el botón. El siguiente paso es
que tenga varios JobID como clave definir las propiedades de la relación.
contactos dentro de la primaria, se pulsa con el Póngase por caso que se dispone de una
compañía. botón derecho en el compañía en la base de datos que ya no es
A través de una serie de puntero de registros (el cliente. Si se decide borrarla de la base de
relaciones mostradas en triángulo verde) y se datos, el sistema tiene que saber qué
la Figura 1, una compañía selecciona Primary Key hacer con los registros de contacto
puede asociarse con del menú que aparece huérfanos. Lo normal es que se desee
varios trabajos y varios (véase Figura 3). La eliminarlos también.
contactos, y cada trabajo clave primaria tiene que Se hace doble clic en la relación entre
puede tener registros Figura 2: La ventana principal de cumplir dos requisitos: COMPANIES y CONTACTS y en la columna
temporales. Todas las Base es el punto de partida para no debe estar vacía y Delete Options, se selecciona la opción
relaciones de la Figura 1 definir nuestra base de datos. debe tener un valor Delete cascade y se pulsa OK.
son de tipo uno-a-varios. unívoco. Con OOo Base Se usará la misma técnica para definir
Una relación uno-a-varios se señala con es sencillo asignar esta propiedad a la las relaciones entre las tablas COMPANIES
un 1 (uno) al lado del registro que es uno, clave primaria. Se selecciona Yes de la lista y JOBS. Es necesario asegurarse de que la
y con una n (varios) en el otro extremo. AutoValue en el panel Field Properties. Así opción de eliminación de la relación está
Cada tabla debe tener una clave se asegura que cada vez que se cree un fijada a No action. De otra manera, al
primaria (mostrada en amarillo en la nuevo registro, el sistema insertará un borrar un trabajo se borraría la compañía
Figura 1). La clave primaria identifica valor unívoco (en nuestro caso, un relacionada. Por último, se define una
unívocamente al registro. Una tabla puede número) en el campo JobID. relación entre las tablas JOBS y HOURS, en
contener también claves ajenas. En la Se añaden los demás campos restantes la que la opción de eliminación está fijada
Figura 1 las claves ajenas se muestran en a la tabla JOBS, y se fijan sus tipos. Antes a Delete cascade. Esto asegura que si se
cursiva. Nótese que la clave ajena está en de guardar la tabla, es necesario borra un trabajo, no existirán fechas
el lado “varios” de una relación uno-a- asegurarse de que el formato de la fecha huérfanas poblando la base de datos. Una
varios. del campo Deadline está configurado vez que estén definidas las relaciones, se
adecuadamente. Se selecciona el campo guardan y se cierra el cuadro de diseño de
Crear Tablas Deadline, y en el panel Field Properties, se relaciones.
Una vez que se ha esbozado el diseño, pulsa en el botón junto al campo Format
puede empezarse a desarrollar la base de example. Se seleccionan el formato Crear Consultas
datos en sí. Se arranca OpenOffice.org 2.0 requerido y el idioma y se pulsa OK. A Ahora que se tienen las tablas ya pueden
Base y se pulsa sobre File | New | continuación se guarda la tabla (File | ser completadas con información. Para ver
Database. El asistente de bases de datos se Save, o Ctrl+S) y cuando se nos pregunte, y tratar la información es necesario crear
usa para crear y guardar un archivo de se proporciona el nombre JOBS para la crear consultas. OOo Base permite crear
base de datos. Al pulsar en el botón Finish tabla. consultas utilizando bien el asistente de
del asistente, OOo Base abre la ventana Ahora que se sabe cómo crear tablas y consultas o bien la vista de diseño. Los
principal. Ésta es la zona de trabajo donde campos, se pueden añadir las tablas usuarios familiarizados con SQL pueden
se va a crear la base de datos (Figura 2). HOURS, COMPANIES y CONTACTS. Es usar también el editor SQL interno. En la
Lo primero que hay que hacer es crear preciso acordarse de que hay que fijar el mayoría de las ocasiones, no obstante, será
las tablas y rellenarlas con los campos. Se formato adecuado para los campos Date, mejor usar la vista Design View, que
elige Tables en el panel Database, y se TimeUsed y Price de la tabla HOURS. Con permite elaborar consultas usando una
pulsa en la opción Create Table de la vista las herramientas de diseño de relaciones interfaz gráfica de usuario. Pongamos por
diseño. Esta opción creará una tabla incluidas en Base, crear estas relaciones es caso que se desea crear una consulta que
nueva y vacía, que podrá usarse para tan sencillo como dibujar líneas entre las permita extraer información relevante
guardar la información de los trabajos. Se claves primarias y las claves ajenas. Para acerca de un trabajo, como el número de
crea un campo JobID tecleando su nombre definir las relaciones entre las cuatro trabajo, cliente, descripción del trabajo,
en la columna Field Name, y se fija su tipo tablas, se pulsa en Tools | Relationships y estado, tipo y fecha límite. Se pulsa en
a Integer [INTEGER]. usando el cuadro Add Table se añaden las Create Query dentro del enlace Design View
OOo Base ofrece un amplio abanico de tablas. de la sección Tables. Esto abre la ventana
tipos de campo. Los tipos numéricos Para establecer una relación entre las de diseño de consultas y el cuadro para
incluyen INTEGER (para enteros) y FLOAT tablas COMPANIES y CONTACTS, se añadir tablas. Se añaden las tablas JOBS y
(para números en punto flotante). selecciona el campo COMPANIES a la consulta usando el botón
VARCHAR guarda COMPANIES.CompanyID, Add y se cierra pulsando sobre Close.
cadenas de longitud se pulsa y se mantiene Todo lo que hay que hacer es añadir
variable. La longitud pulsado el botón campos a la consulta. Pueden añadirse
puede especificarse en el izquierdo del ratón, se campos bien eligiendo los campos de la
panel Field Properties. arrastra la relación hasta lista desplegable en las celdas Field, o bien
DATE guarda fechas y Figura 3: Cada tabla requiere el campo arrastrando los campos desde las tablas
TIME la hora. una clave primaria. CONTACTS.CompanyID y hasta las celdas Field.

WWW.LINUX-MAGAZINE.ES Número 14 31
030-032_OOBase 05.01.2006 12:52 Uhr Página 32

PRÁCTICO • OpenOffice.org Base

Este nuevo Ya que una fuente de datos con un


formulario formato adecuado puede simplificar
permite añadir, enormemente el proceso de importación,
ver y editar merece la pena perder algo de tiempo en
información en preparar esta tarea. Lo primero que se hace
la tabla JOBS, es modificar la estructura de la hoja de
Figura 4: Definimos las relaciones con OOo Base.
pero puede cálculo para que sea idéntica a la
Por defecto, la consulta usará los incluirse también información de otras estructura de la tabla CONTACTS. Es
nombres de los campos como etiquetas, tablas. Por ejemplo, se podría querer ver y preciso asegurarse que la primera fila
pero pueden cambiarse para hacer la registrar el tiempo empleado en el trabajo contiene los mismos nombres de campo
consulta más legible. Por ejemplo, se que se está realizando. Puede hacerse que los de la tabla de la base de datos.
puede mostrar el campo JobID con el esto con un subformulario. Como su Idealmente, deberían estar también en el
nombre Job no con sólo teclear esto nombre indica, un subformulario no es mismo orden. Hay que asegurase de que
último en la celda Alias. Para guardar la otra cosa sino un formulario insertado todos los bloques de datos están colocados
consulta, se pulsa sobre File Save y se le dentro de otro formulario principal. en las columnas adecuadas.
da un nombre a la consulta. La nueva En la ventana Form Navigator, se pulsa A continuación se seleccionan los datos
consulta aparece en la sección Query, y sobre Job y se selecciona New | Form. Se de la hoja de cálculo y se copian al
puede ser ejecutada haciendo doble clic le da al formulario un nombre descriptivo portapapeles (Edit | Copy o Ctrl+C). Se
sobre ella (por ejemplo, Hours), se hace doble clic abre la base de datos, se pulsa en el botón
sobre él y se selecciona Properties. Bajo Tables, y se selecciona la tabla CONTACTS.
Fabricar Formularios la pestaña Data, se selecciona Table de la Se pulsa con el botón derecho sobre ella y
Para completar la aplicación, se lista de tipos de contenido, y HOURS de se selecciona “Paste”. En el cuadro Copy,
necesita construir una interfaz basada la lista de contenido. Pueden añadirse se teclea exactamente el nombre de la
en formularios. Si se quiere crear un ahora controles al subformulario. Como tabla objetivo en el campo Table name, y
formulario que pueda ser usado para existen varios registros en la tabla HOURS se selecciona la opción Attach data.
mostrar, editar y añadir registros de que está enlazada a un trabajo particular, En el cuadro de asignación de columnas,
trabajos. Se cambia a la sección Forms puede que se desee verlo como una tabla se verifica que todos los campos de la
con pulsar el botón Forms, y luego se en el formulario Job. Con este propósito, ventana de tabla origen están
pulsa en Create Form dentro de la vista OOo Base proporciona el Table Control. seleccionados y alineados con los campos
diseño. Al hacer esto se abre una Hay que asegurarse de que el respectivos de la ventana de tabla destino.
ventana vacía. Se Pulsa sobre el botón subformulario Hours está seleccionado Para alinear los campos, se usan las flechas
Form Navigator en la barra de en el Form Navigator, se pulsa en el azules. Por último, se pulsa en Create para
herramientas Form Design. En el Form botón Table Control y se dibuja una importar los datos.
Navigator, se pulsa con el botón tabla. Cuando aparece el asistente Table
derecho del ratón en el directorio Forms Element, se seleccionan los campos
y se selecciona New | Form. Se le da al deseados y se pulsa Finish.
formulario un nombre suficientemente Cuando se haya terminado de crear el
descriptivo (por ejemplo, Job), se pulsa formulario, se guarda y se cierra el Form
con el botón derecho y se selecciona Designer. Se hace doble clic en el
Properties. Bajo la pestaña Data, se formulario para abrirlo y usarlo. Para
selecciona Table de la lista Content Type explorar, añadir y editar registros, se usa
y JOBS de la lista Content. la barra de herramientas Form
Para añadir el campo de texto Navigation (View | Toolbars | Form
Description (que contiene la descripción Navigation). Tabién puede usarse
del trabajo), se pulsa en el botón con un también para ordenar y filtrar los
cuadro de texto en la barra de registros.
herramientas Form Controls, y se dibuja
un cuadro de texto en el formulario. A Importar Información Figura 5: Base proporciona una interfaz grá-
continuación se hace doble clic en el Con el uso de los formularios, pueden fica para crear consultas.
cuadro de texto. Bajo la pestaña Data, crearse fácilmente nuevos trabajos y
se selecciona Description from the Data clientes, y añadir contactos. ¿Y si ya se
field list. De la misma manera, pueden tiene la información en una hoja de Conclusión
añadirse otros campos como Status, cálculo? En muchas ocasiones, Este artículo debería servir para iniciarnos
Type y Deadline. Mediante la ventana simplemente se desea importar la en el nuevo módulo de base de datos
Properties, se pueden añadir pequeños información existente en la base de OpenOffice.org Base. Una vez que nos
textos de ayuda para los controles. Para datos. Por ejemplo, supongamos que se acostumbremos a su uso, podremos
ello, se pulsa en la pestaña General, y se tiene un archivo de Calc que contiene aplicar fácilmente estás técnicas para
teclea el texto de ayuda en el campo una lista de contactos y se quiere nuestras propias aplicaciones de bases de
Help Text. importar a la tabla CONTACTS. datos. ■

32 Número 14 WWW.LINUX-MAGAZINE.ES
062-064_OpenVPN 05.01.2006 16:18 Uhr Página 62

ADMINISTRACIÓN • OpenVPN

Taller: Un Túnel Privado Rápido y Sencillo con OpenVPN

EL TÚNEL DE DATOS
Los cortafuegos a veces prohiben todo el tráfico excepto la navegación por la web, impidiendo

que los usuarios puedan utilizar los servicios de IRC o los servidores de difusión, a menos que se

utilice una red privada virtual como OpenVPN. POR MIRKO DÖLLE

U
na configuración típica del corta- En este artículo describimos cómo Minando el Cortafuegos
fuegos consiste en denegar todo realizar ese túnel con una conexión OpenVPN no requiere los privilegios de
lo que no sea estrictamente nece- VPN. Suponemos que el software de root para establecer una VPN. Sólo con
sario para el trabajo diario. Incluso he- OpenVPN ya está instalado en la que el programa tenga acceso a los dis-
rramientas relativamente inofensivas máquina Linux o que los lectores saben positivos virtuales TUN/TAP, es sufi-
como una webcam o un servidor personal cómo obtenerlo e instalarlo. OpenVPN es ciente para funcionar con los privilegios
de IRC no funcionarán a través del corta- una aplicación muy común que se del usuario. En un escenario simple,
fuegos. Aparte de rogarle al administrador incluye en la mayoría de las distribu- todo lo que se necesita son unos cuantos
que cambie las reglas, la única solución ciones Linux populares. Véase la docu- parámetros para configurar la VPN. El
que queda es abrir un túnel privado a mentación para saber más sobre cómo único fichero que se necesita es el que
través del cortafuegos con OpenVPN. configurar OpenVPN. contiene la clave secreta, que se puede

Listado 1: openvpn-server.sh
01 #!/bin/bash 12 --ifconfig $LOCALIP $REMOTEIP \
02 13 --secret $KEYFILE --persist-tun --ping 30 \
03 DEVICE="tun0" 14 --ping-restart 180 -shaper $MAXRATE \
04 PORT="1194" 15 --writepid /var/run/openvpn-${DEVICE}.pid
05 LOCALIP="192.168.8.1" 16
06 REMOTEIP="192.168.8.128" 17 while true; do
07 KEYFILE="/etc/openvpn/shared.key" 18 if [ ! -e /var/run/openvpn-${DEVICE}.pid ]; then
08 MAXRATE="16000" 19 break
09 20 fi
10 /usr/sbin/openvpn -daemon --dev $DEVICE \ 21 done
11 --proto tcp-server -port $PORT \

62 Número 14 WWW.LINUX- MAGAZINE.ES


062-064_OpenVPN 05.01.2006 16:18 Uhr Página 63

OpenVPN • ADMINISTRACIÓN

Figura 1: Utilizando TCP los clientes configuran una conexión encriptada al servidor OpenVPN y transmiten por el túnel cualquier otro proto-
colo hacia el servidor.

crear en la máquina cliente con el El servidor no necesita mucha infor- La sintaxis de OpenVPN desde las
comando openvpn --genkey --secret mación: OpenVPN requiere la dirección líneas 10 a la 15 hace uso de las variables
secret.key para posteriormente copiarlo IP del servidor (LOCALIP) y de la definidas al principio. Los parámetros
en el servidor. máquina cliente (REMOTEIP) de las críticos aquí son --daemon, --proto tcp-
Un protocolo no orientado a la cone- interfaces VPN, el dispositivo del túnel, server y --persist-tun. --daemon ejecuta
xión, como UDP, es la mejor opción para el número del puerto y el fichero con la OpenVPN en modo servicio, permitiendo
realizar el túnel con TCP/IP: esto evita clave. La variable MAXRATE tan sólo es al script del servidor continuar su ejecu-
que se dé el escenario en el que pueda necesaria para controlar el tráfico y ción. Esto no es importante en el Listado
producirse un timeout simultáneo entre establecer la tasa de transferencia má- 1, ya que el bucle que va desde la línea
OpenVPN y la conexión TCP, que podría xima para la transmisión de paquetes 17 a la 21 impide que finalice el script
ocasionar una avalancha de paquetes de medida en bytes por segundos. antes de que finalice OpenVPN. Sin
reintento. Desafortunadamente, la ma- embargo, si necesita abrir el cortafuegos
yoría de los cortafuegos y los routers de Controlando el Tráfico o cambiar los parámetros del router, las
las empresas o de los cibercafés no per- Si el script del servidor se está ejecu- líneas desde la 15 a la 17 son el mejor
miten que los clientes puedan recibir tando en un servidor raíz, por ejemplo, lugar para realizarlo. Se puede añadir
paquetes UDP desde Internet. puede que al principio no tenga mucho cualquier comando al final del script si
La única alternativa en este caso es sentido el control de tráfico, a menos se quiere ejecutar alguna acción final.
optar por una conexión TCP. Esto que se sea partidario de mantener un
implica que el servidor, para que el perfil bajo y esconder el túnel en el trá- Protocolos del Cliente y del
cliente pueda establecer la conexión fico general de la red. Servidor
VPN, ha de estar escuchando en un La principal ventaja para el control del El parámetro --proto tcp-server habilita
puerto determinado a la espera de tráfico se encuentra en las pequeñas OpenVPN en el servidor y le indica que
conexiones entrantes. redes con una conexión DSL. Como el se ponga a la escucha de las conexiones
ancho de banda de subida es normal- TCP entrantes. El servicio del cliente usa
Una Configuración Simple mente mucho más bajo que el ancho de el protocolo tcp-client, como se muestra
Los Listados 1 y 2 muestran dos scripts banda de bajada en las líneas DSL, el en la línea 13 del Listado 2.
para el servidor y para el cliente. Open- resto de conexiones a Internet diferentes Sin --persist-tun, el interfaz TUN
VPN no requiere ficheros de configu- del túnel se pueden ver afectadas. Yo estaría cerrado y sería reabierto cada vez
ración, por lo que, la mejor opción para suelo usar un límite de 16 kbps, como se que el túnel fuera interrumpido, lo que
el establecimiento de la configuración muestra en el Listado 1, para una conex- implicaría la pérdida de las entradas de
del túnel se realiza a través de la línea de ión DSL con un ancho de banda máximo enrutamiento del túnel y la pérdida de
comandos mediante sus parámetros. Al de subida de 256KBits/s, estableciendo todas las conexiones.
principio de los Listados 1 y 2 se mues- este límite me permite disponer casi de El bucle de las líneas 17 a 21 del Lis-
tran algunas opciones que los usuarios la mitad del ancho de banda para otros tado 1 es una versión simplificada si se
tienen que cambiar para adaptarlo a sus servicios como Apache o simplemente compara con el bucle del script del lis-
necesidades. para navegar por la red. tado en [2]; carece del mecanismo de

WWW.LINUX- MAGAZINE.ES Número 14 63


062-064_OpenVPN 05.01.2006 16:18 Uhr Página 64

ADMINISTRACIÓN • OpenVPN

Listado 2: openvpn-client.sh
01 #!/bin/bash 22 route add $REMOTE gw $GATEWAY
02 DEVICE="tun0" 23 if [ "$?" -eq 0 ]; then
03 REMOTE="athome.dyndns.org" 24 route del default gw $GATEWAY
04 GATEWAY="192.168.1.254" 25 route add -net $REMOTENET gw $REMOTEIP
05 PORT="1194" 26 route add default gw $REMOTEIP
06 LOCALIP="192.168.8.128" 27 ping -c 1 $REMOTEIP >/dev/null 2>/dev/null &
07 REMOTEIP="192.168.8.1" 28 break
08 REMOTENET="192.168.42.0/24" 29 fi
09 KEYFILE="/etc/openvpn/shared.key" 30 fi
10 MAXRATE="16000" 31 sleep 5
11 32 done
12 /usr/sbin/openvpn -daemon --dev $DEVICE \ 33
13 --remote $REMOTE -proto tcp-client \ 34 while true; do
14 --port $PORT -ifconfig $LOCALIP $REMOTEIP \ 35 if [ ! -e /var/run/openvpn-${DEVICE}.pid ]; then
15 --secret $KEYFILE --persist-tun --ping 30 \ 36 break
16 --ping-restart 180 \ 37 fi
17 --writepid /var/run/openvpn-${DEVICE}.pid 38 done
18 39
19 for ((i=0; i<10; i=$[$i+1])); do 40 route del $REMOTE gw $GATEWAY
20 ifconfig $DEVICE >/dev/null 2>/dev/null 41 route add default gw $GATEWAY
21 if [ "$?" -eq 0 ]; then

control de fallos que verifica si OpenVPN script puede borrar dicha ruta, que pos- El bucle en las líneas 34 a 38 está
está aún ejecutándose. En el caso de que teriormente vuelve a establecerse en la reducido como ocurre en el script del
el bucle finalice el script procesará el línea 26 usando la puerta de enlace del servidor del Listado 1, aunque esto no
código final de limpieza tras la línea 21. servidor OpenVPN. A partir de este tiene efecto en la funcionalidad: espera
openvpn-server.sh puede ser invocado punto, cualquier conexión de red nueva que OpenVPN termine. Las líneas 40 y
fácilmente usando una entrada en init en será enrutada a través de la VPN hacia el 41 borran después la ruta estática al
/etc/inittab. servidor (Figura 1). OpenVPN acaba de servidor OpenVPN y reestablecen la
El script cliente para OpenVPN del Lis- abrir ahora una brecha en el cortafuego puerta de enlace por defecto.
tado 2 es el doble de largo que el script de la empresa y la máquina cliente La solución para establecer un túnel
del servidor, ya que tiene que configurar dispone desde este momento de un OpenVPN mostrado en este artículo
el entorno del router de la máquina acceso a Internet oculta y sin restric- requiere un servidor para cada cliente
cliente después de llamar a OpenVPN en ciones. El comando ping de la línea 27 VPN. Este requerimiento podría quedar
las líneas 12 a 17. Esto supone que abre un túnel VPN, que se ha configu- fuera de control fácilmente si se necesi-
OpenVPN ha de establecer el dispositivo rado pero que aún permanece cerrado en tan soportar múltiples clientes o si la
de red, que se verifica comprobando el este punto. red engloba varias oficinas de la
estado de salida de ifconfig en las líneas empresa. Para los usuarios que consi-
20 y 21. Enrutado Individual deren requerimientos mayores, Open-
Ahora que el dispositivo del túnel está Para impedir que el script cliente sea VPN versión 2.0 o posterior proporcio-
operativo, la línea 22 establece una ruta obstruido por problemas de nan infraestructura de Clave Pública,
estática al servidor OpenVPN. enrutamiento, los comandos de CAs y soporte para múltiples clientes
La conexión VPN depende ahora de la enrutado en el bucle desde las líneas 19 para escenarios más avanzados. Pero
ruta por defecto, así que la línea 24 del a 32 se repiten diez veces como mucho. para un servidor personal de IRC o para
una webcam, una configuración simple
basada en la línea de comandos tal
como la descrita en este artículo, es
suficiente. ■

RECURSOS
[1] OpenVPN: http://openvpn.net
[2] Scripts OpenVPN: http://www.
mirko-doelle.de/linux/openvpn-server.sh
y ... / openvpn-client.sh

64 Número 14 WWW.LINUX- MAGAZINE.ES


047-050_Perl 05.01.2006 13:04 Uhr Página 47

Perl • DESARROLLO

Herramientas Perl para tests de regresión

HERRAMIENTAS DE
TESTEO
Con un banco de pruebas se pueden corregir errores y añadir nuevas funcionalidades sin arruinar la base de

código ya existente. POR MICHAEL SCHILLI

U
n programa que funcione correc- pasos se logrará un banco de pruebas Conjunto Estándar
tamente a la primera es tan poco con un nivel de detalle que ningún Agradezcamos que la comunidad Perl
común como para que nos haga departamento de calidad en el mundo tenga la calidad suficiente para añadir un
sospechar. En el desarrollo dirigido por podría ser capaz de conseguir. conjunto de pruebas que verifican las
tests, el desarrollador define primero las En caso de un desarrollo ya en marcha funciones críticas de casi todos los
pruebas de ensayo antes de implementar o de una refactorización de código, siem- módulos CPAN. Pero ¿qué sucede si esta-
la nueva funcionalidad. Inevitablemente, pre existe el riesgo de realizar un cambio mos desarrollando un pequeño script en
el test fallará al principio, pero tan pron- que introduzca efectos colaterales no vez de un módulo? Con el paso de los
to como esta funcionalidad esté imple- deseados. Tener la capacidad de ejecutar años he llegado a la conclusión de que
mentada, el banco de pruebas nos dará cientos de pruebas sin coste alguno hace los scripts sólo deberían parsear los
su aprobación. Esta técnica motiva a los que nos podamos despreocupar al tener parámetros de la línea de comandos y
desarrolladores a través del ciclo de vida que reemplazar partes de un sistema. mostrar textos de ayuda. Uso módulos
del desarrollo; cada nuevo test imple- Los desarrolladores pueden publicar para el resto de la funcionalidad. Esto
mentado se añade al banco de pruebas y nuevas versiones de manera regular y permite a otros scripts reutilizar estos
será ejecutado una y otra vez mientras el aun así poder dormir tranquilos y sin módulos. Y, por supuesto, cada módulo
proyecto emerge. Con la suma de preocupaciones. No es necesario ser un viene acompañado de la documentación
pequeños entusiasta de la Programación Extrema y de una serie de tests, ¿verdad?
para ver los beneficios. El protocolo TAP (del original en ingles
Test Anything Protocol) se ha convertido
en el estándar de-facto para los tests
de regresión en

WWW.LINUX- MAGAZINE.ES Número 14 47


047-050_Perl 05.01.2006 13:04 Uhr Página 48

DESARROLLO • Perl

debe aplicar tanto al


código de pruebas
Tabla 1: Utilidades para Pruebas
cómo al código de la Módulo Función
Test::Simple Utilidad de pruebas común, incluye
aplicación.
Test::More
En el script de ejemplo
Test::Deep Compara estructuras anidadas
se comprueba el módulo Test::Pod Valida documentación POD
Config::Patch de CPAN, Test::Pod::CoverageComprueba que todas las funciones estén
éste parchea ficheros de documentadas
Figura 1: Salida del script de pruebas simple.t. configuración de manera Test::NoWarnings Alertas en alarmas
reversible. Test::More Test::Exception Comprueba si alguna excepción ha sido lan-
Perl. TAP normalmente muestra establece primero tests zada
primero una cabecera para indicar el => 4 para indicar que Test::Warn Comprueba si las alarmas son correcta-
mente emitidas
número de pruebas que se van a se realizarán exacta-
Test::Differences Muestra gráficamente las desviaciones
realizar; ésta es seguida de una línea mente cuatro pruebas.
Test::LongString Comprueba cadenas largas
por cada test, donde mostrará ok si el Esto es importante: si el
Test::Output Cachea la salida a STDERR/STDOUT
test se ha realizado con éxito, y not ok conjunto de pruebas ter-
Test::Output::Tie Cachea la salida a manejadores de ficheros
en caso contrario: mina antes de lo debido,
Test::DatabaseRow Comprueba los resultados de la consulta a
es algo que deberíamos la base de datos
1..3 conocer. Algunos desa- Test::MockModule Simula módulos adicionales
ok 1 rrolladores, mientras Test::MockObject Simula objetos adicionales
not ok 2 están ocupados exten-
ok 3 diendo el conjunto de pruebas, de Test::More, en vez de ok(), en caso
suavizan el test con Test::More de que necesitemos comparar cosas. Si
Naturalmente este tipo de salidas no qw(no_plan). Sin embargo las buenas algo va mal, el script de test no sólo
son precisamente fáciles de leer si esta- prácticas dictan fijar el número de muestra el comentario de la prueba y el
mos llevando a cabo cientos de prue- pruebas que se van a realizar de ante- número de línea, sino que además
bas. Para cambiarlo, un test de mano. muestra las diferencias entre el valor
aprovechamiento global nos propor- Nuestro script de pruebas simple.t obtenido y el esperado. La línea 19 del
ciona un resumen que dice si todo ha llama primero a use_ok() (exportado por Listado 1 causa un error, sólo para
sido comprobado, o el número de prue- Test::More) para comprobar si el módulo propósitos demostrativos. Para con-
bas que se han fallado. Config::Patch realmente ha cargado. seguir una salida con sentido con is(),
El Listado 1 muestra un ejemplo. Entonces, el constructor new (con será necesario pasar el valor devuelto
Tradicionalmente, los scripts de prue- suerte) devolverá un objeto. La sigu- como primer parámetro y el valor que
bas en Perl suelen tener la extensión *.t iente función, ok(), también de se esperaba como segundo parámetro.
y se encuentran en el directorio t de la Test::More, escribe ok 2 por la salida La función like() usada en la cuarta
distribución del módulo. Puesto que las estándar si el objeto contiene algún prueba, espera como segundo argu-
pruebas de ensayo con frecuencia com- valor, y not ok 2 en caso contrario. Un mento una expresión regular que debe
prueban cosas similares, y realizan segundo parámetro, que puede ser pasa- casar con el primer parámetro, en vez
acciones parecidas, hay algunos módu- do a ok() opcionalmente, establece un de un valor comparativo. Si la expre-
los de pruebas especiales, tales cómo comentario que se imprimirá a contin- sión regular no coincide, se mostrará
Test::More, que simplifican el proceso y uación del resultado de la prueba. La un detallado mensaje de error de ma-
nos ayudan a evitar la escritura de códi- Figura 1 nos muestra la salida del script. nera similar a is(). Finalmente,
go de pruebas redundante. Después de La tercera prueba muestra cómo de Test::More muestra un educado “Parece
todo, el mismo principio de diseño se útil puede ser el uso de la función is() que ha fallado 1 test de 4”. Es impor-
tante ser correctos: nadie quiere ser
Listado 1: simple.t regañado por uno de los puntillosos
del departamento del Control de
01 #!/usr/bin/perl 13 key => "foo");
Calidad.
02 use strict; 14
El script prove, que es parte del
03 use warnings; 15 # #1 verdadero
módulo CPAN Test::Harness, ejecuta
04 16 ok($p, "New object");
uno o varios scripts de tests. La versión
05 use Test::More tests => 4; 17
de Test:Harness que viene con Perl 5.8
06 18 # #1 igual #2
no incluye este programa, así que es
07 BEGIN { 19 is($p->key, "Waaah!",
necesario asegurarse de que se ha
08 use_ok("Config::Patch"); 20 "Retrieve key");
descargado la última versión desde
09 } 21
CPAN. Al ejecutar prove con un script
10 22 # #1 coincide #2
de pruebas se obtendrá la siguiente
11 my $p = 23 like($p->key(), qr/^f/,
salida, en el caso de que todas las
12 Config::Patch->new( 24 "Key starts with 'f'");
pruebas sean pasadas con éxito:

48 Número 14 WWW.LINUX- MAGAZINE.ES


047-050_Perl 05.01.2006 13:04 Uhr Página 49

Perl • DESARROLLO

Figura 3: Funciones y métodos cubiertos en el script de pruebas coverme.t.

Los módulos CPAN hash que se requieran, la función


usan make test antes cmp_deeply hace todo esto de un solo
de la instalación golpe.
Figura 2: Prueba de cobertura: no todos los métodos han sido llamados. para hacer lo que cmp_deeply espera una referencia a un
hace prove en línea array o a un hash como sus primeros dos
de comandos. El módulo ExtUtils::Make- parámetros, realiza una comprobación en
prove ./simple.t Maker, que provee de esta funcionalidad, profundidad, y compara los elementos
./simple....ok se añade al camino de inclusión de las subyacentes. Por tanto, la llamada
All tests successful. librerías Perl, @INC, para permitir al cmp_deeply($ref1, $ref2) devuelve ver-
Files=1, Tests=4, U banco de pruebas ejecutar módulos que dadero si $ref1 y $ref2 apuntan a dos
0 wallclock secs hasta el momento no han sido instala- estructuras de datos equivalentes.
(0.08 cusr + 0.01 csys = U dos. Los módulos nuevos vienen con el Pero esto no es todo: esta comparación
0.09 CPU) módulo Module::Build, que provee de directa puede ser manipulada usando una
una funcionalidad similar, pero más serie de funciones adicionales. Por ejem-
Si se está interesado en un análisis de los avanzada. plo, puede comprobarse si un elemento de
resultados, ejecute prove con la opción -v una estructura de datos coincide con
(de verbose) para mostrar individualmente En Profundidad algún elemento de otra estructura usando
la líneas ok y not ok generadas además de Además de Test:More, CPAN tiene innu- una expresión regular. La función encarga-
sus comentarios. Si se está ejecutando un merables módulos de utilidad que facilitan da de eso es re(). O, si un elemento de la
programa de pruebas desde la distribución crear código para pruebas sin la necesidad estructura contiene una referencia a un
de un módulo sin estar éste instalado, el de reescribir las mismas líneas de código hash, superhashof() permitirá indicar que
parámetro -b será de utilidad, puesto que una y otra vez. Test:Deep, que compara el primer hash sólo necesita contener un
hará uso de los ficheros del módulo que estructuras profundamente anidadas, es subconjunto de las claves del segundo
make deja en el directorio blib. un ejemplo de estos módulos. hash.
El Listado 2 muestra un Aprovechando esta funcionalidad, en
Tabla 2: Herramientas para el Análisis pequeño programa de prue- el Listado 2 se comprueban varias cosas
de Tests bas que llama a la función al mismo tiempo: que $tag sea una refe-
get_mp3tags() del módulo rencia a un hash, por ejemplo, y que el
Módulo Función
MP3::Info. Si el fichero MP3 hash al que apunta contiene las claves
Test::Harness Aprovechamiento estándar
contiene un conjunto ade- YEAR y ARTIST; además, el Listado 2
Test::Builder Base para las nuevas utilidades de
pruebas cuado de etiquetas, la fun- comprueba cuándo los valores almace-
Test::Builder::Tester Tests para las nuevas utilidades de ción devuelve una referencia nados bajo esas claves en el hash coinci-
pruebas a un hash, el cual contiene den con una expresión regular dada:
Test::Harness::Straps Base para el desarrollo de un nuevo una serie de claves, tales texto con espacios en blanco para la eti-
test de aprovechamiento cómo ARTIST, ALBUM. En queta ARTIST y un número para YEAR.
Devel::Cover Análisis y muestra del test de cober vez de comprobar si el valor Además Test::Deep contiene una serie de
tura
devuelto apunta realmente a funciones auxiliares útiles que permiten
Test::Distribution Comprueba la completitud de los
un hash, y entonces reco- comprobar subárboles de la estructura
módulos
rrerlo por medio de las claves de datos pasada a cmp_deeply sin la

WWW.LINUX- MAGAZINE.ES Número 14 49


047-050_Perl 05.01.2006 13:04 Uhr Página 50

DESARROLLO • Perl

Listado 2: mp3.t Maquetado


01 #!/usr/bin/perl 12
Uno de los principales requisitos para un
02 use warnings; 13 cmp_deeply(
conjunto de pruebas es que éstas sean
03 use strict; 14 $tag,
rápidas y fáciles de ejecutar, sin que se
04 15 superhashof(
requiera que el desarrollador tenga que
05 use Test::More tests => 1; 16 {
instalar aplicaciones extra o termine
06 use Test::Deep; 17 YEAR => re(qr(^\d+$)),
involucrado en configuraciones maratonia-
07 use MP3::Info; 18 ARTIST =>
nas. Sin embargo muchas aplicaciones
08 19 re(qr(^[\s\w]+$)),
acceden a bases de datos complejas o
09 my $tag = 20 }
necesitan de una conexión a Internet y a
10 get_mp3tag( 21 )
un servidor específico. Para sortear este
11 "Gimme_Shelter.mp3"); 22 );
tipo de requisitos en la fase de testeo, las
utilidades de maquetado,
necesidad de recurrir a bucles for. Por la clase Foo y el script de pruebas que se Test::MockModule y Test::MockObject, nos
ejemplo, array_each() requiere que un ejecutaría; se llama al constructor de clase permiten simular de manera realista un
nodo contenga un puntero a un array y y se usa isa_ok() para comprobar si un servidor de Internet o de base de datos.
permite ejecutar un test (que se pasa como objeto de la clase Foo es, efectivamente, Naturalmente, herramientas de análisis
parámetro, por ejemplo, re()) a cada ele- devuelto. tales cómo Test::Harness están diseñadas
mento del array. Pero este conjunto de pruebas tiene un para clases genéricas, y es decisión del
Además de superhashof(), se dispone de punto débil: nunca ejecuta el método foo() desarrollador cuándo usar las utilidades
subhashof() para gestionar escenarios en de Foo; se nos podría haber colado algún genéricas o diseñar sus propias herramien-
los que la referencia al hash contenga ele- error de tiempo de ejecución, y el conjunto tas de análisis para suplir unos requisitos
mentos opcionales. set() y bag() ayuda a de pruebas no tendría noticias de ello. más específicos. Pero para eliminar la
descubrir cuándo un array contiene una En el caso de proyectos pequeños, un necesidad de reinventar esa funcionalidad
serie de elementos con un orden dado, con desarrollador podría darse cuenta pronto básica, tal como el parseo de la salida del
y sin repeticiones. La contrapartida en de esta problema; para proyectos largos, el protocolo TAP una y otra vez,
array a las funciones hash para elementos módulo CPAN Devel::Cover realiza por Test:Harness::Straps provee de una clase
opcionales son subbagof(), superbagof(), nosotros el trabajo pesado; comprueba base, la cual puede ser extendida por los
subsetof() y supersetof(). cuantos posibles caminos de ejecución desarrolladores para sus pruebas privadas.
están siendo cubiertos por las pruebas. Si se necesita más información sobre los
Prueba finalizada Puede llamarse a éste script de la siguiente test en Perl, puedo recomendar un exce-
En el Listado 3 se observa la definición de manera: lente libro[2] de reciente publicación que
contiene información detallada de todos
perl -MDevel::Cover coverme.t los módulos vistos aquí y muchos más tru-
Listado 3: coverme.t
cos para las pruebas. ■
Este comando almacena datos de la cober-
01 #!/usr/bin/perl -w tura en el recién creado directorio
02 use strict; cover_db. La subsiguiente llamada a cover RECURSOS
03 analiza estos datos y proporcionará una
04 package Foo; salida gráfica (cover es un script ejecutable [1] Listados del artículo: http://www.
05 que es instalado con Devel::Cover). Si se linux-magazine.com/Magazine/
06 sub new { carga el fichero cover_db/coverage.html Downloads/61/Perl
07 my ($class) = @_; desde el navegador, se conseguirá una sen- [2] Perl Testing Ian Langworth & Shane
08 bless {}, $class; cilla visión general de los datos de cobertu- Warden, O’Reilly 2005.
09 } ra, tal y como se muestra en la Figura 2. La
10 Figura 3 muestra la cobertura para el
11 sub foo { fichero script de pruebas coverme.t; la sali- Michael Schilli tra-
12 print "foo!\n"; da está disponible en baja como desa-
13 } rrollador de soft-
cover_db/coverme-t.html.
14 ware en Yahoo!,
EL AUTOR

Devel::Cover no sólo comprueba todas


Sunnyvale,
15 package main; las funciones y métodos, sino que además California. Es el
16 comprueba la cobertura de todas las ramas autor de “Perl
17 use Test::More tests => 1; de ejecución de los if, else, y demás condi- Power” de la edito-
18 ciones. Aunque puede ser imposible cubrir rial Addison-Wesley y se le puede
19 my $t = Foo->new(); todas las ramas en un proyecto grande, es contactar en mschilli@perlmeis-
20 isa_ok($t, "Foo", útil saber dónde merece la pena poner ter.com. Su página está en http://
21 "New Foo object"); algún esfuerzo extra para mejorar la cober- perlmeister.com
tura de ejecución.

50 Número 14 WWW.LINUX- MAGAZINE.ES


Mono y DotGNU • DESARROLLO

Comparamos las implementaciones libres de .NET: Mono y DotGNU

MULTITUD DE
PUNTOS

Los proyectos de software libre Mono y DotGNU abren la plataforma

.NET de Microsoft a los desarrolladores de Linux. Este artículo investiga

lo bien adaptadas que se encuentran estas implementaciones alternativas

para la programación de sencillas aplicaciones GUI.

POR MICHAEL TSCHATER

E
n 2002, Microsoft lanzó un nuevo ¿.NET libre? Además de una funcionalidad básica,
sistema para el desarrollo inde- A pesar de la orientación independiente como la capacidad para manipular cade-
pendiente de la plataforma, de la plataforma del framework .NET, nas, la mayoría de los proyectos necesi-
denominado .NET (pronunciado “punto Microsoft difícilmente va a distribuir una tan de componentes para los interfaces
net”). El proyecto .NET está orientado a implementación para Linux, y esta falta gráficos de usuario, para ayudar a estos
simplificar el desarrollo de aplicaciones de soporte para Linux ha hecho que dos a hacer frente a sus tareas diarias.
en red y para Internet. Soporta progra- proyectos den el salto para cubrir este Microsoft proporciona la librería Sys-
mación orientada a objetos y propor- hueco: el proyecto Mono [1] espon- tem.Windows.Forms para éste propósito.
ciona una única librería de clases capaz sorizado por Novell y el proyecto de Esta librería contiene objetos GUI, tales
de ser usada por múltiples lenguajes, código libre DotGNU [2]. Tanto Mono como MainMenu, TollBar, Combobox, o
tales como por ejemplo: C# y VB.NET. como DotGNU pretenden proporcionar Button. El Listado 1 contiene un
Con el lanzamiento de .NET, Microsoft una implementación .NET tan completa pequeño programa de ejemplo.
ha suspendido el respaldo a su primer como sea posible. El objetivo de ambos Para comparar las implementaciones
favorito: la librería MFC para Visual proyectos es el de permitir a los desarrol- Mono y DotGNU, usaremos un programa
C++. Todos los productos futuros de ladores el intercambio de software escrito inicialmente en Windows. Este
Microsoft se basarán en esta nueva tec- saltando las barreras de los diferentes pequeño ejemplo hace uso de los princi-
nología. sistemas operativos. pales componentes GUI, ver la Figura 1.

WWW.LINUX- MAGAZINE.ES Número 14 43


DESARROLLO • Mono y DotGNU

Figura 1: Esta aplicación demostrativa incluye los principales compo- Figura 2: Visual Studio .NET mostrando el código del proyecto de
nentes GUI de la librería System.Windows.Forms de .NET. Esta figura ejemplo descrito en este artículo. El código de la figura dibuja los ele-
muestra la versión de Windows. mentos gráficos.

El código fuente está disponible en la ventanas de diálogo (Figura 2). Este ización de interfaces gráficas de usuario.
web de Linux Magazine[3]. La única paquete instala automáticamente el SDK GTK# se basa en GTK+, que constituye
funcionalidad que realmente propor- .NET. El entorno de desarrollo libre la base del Desktop Gnome en Linux.
ciona el código es la de registrar la Sharpdevelop[4], es una buena alterna-
entrada del usuario en una ventana dis- tiva al paquete Visual Studio .NET. GUI con Windows.Forms
eñada especialmente para esto. Sharpdevelop proporciona un potente La librería System.Windows.Forms está
IDE al que sólo le falta un depurador principalmente implementada en C# y
El Original de Microsoft integrado. Pero entre las características dibuja sus propios controles[6]. La libr-
Una forma de conseguir la imple- incluidas se encuentran la capacidad de ería requiere de un driver para cada sis-
mentación .NET original de Microsoft es cambiar entre los entornos de ejecución tema operativo: los controladores para
con la descarga del entorno de ejecución de Microsoft y Mono, y la de importar X11 y Windows ya estaban disponibles a
de .NET gratuito y el SDK (Software los proyectos de Visual Studio .NET. la hora de escribir este artículo. El
Development Kit). La versión de proyecto DotGNU ha adoptado este dis-
descarga nos proporciona todas las her- La Alternativa: Mono eño tras deshacerse de una imple-
ramientas en línea de comandos nece- El entorno Mono[5] está disponible bajo mentación basada en Wine, por ser
sarias para el desarrollo de software en Linux, Windows y Mac OS. Además de impracticable.
Windows, tal y como sucede con el SDK la librería de clases estándar de .NET, Aparte del compilador mcs y del
de Java. El comando csc nos permite Mono proporciona una serie de exten- entorno en tiempo de ejecución mono, la
compilar la aplicación. El resultado sólo siones, tales como una serie de librerías versión en Linux contiene el entorno de
puede ser ejecutado directamente en el de Gnome. La máquina virtual incorpora desarrollo monodevelop, basado en un
sistema operativo Windows. las técnicas de compilación just-in-time port a Linux de Sharpdevelop. El naveg-
El entorno integrado de desarrollo (JIT) y ahead-of-time para mejorar la ador de ayuda, monodoc, contiene la útil
(IDE) Visual Studio .NET es una alterna- velocidad de ejecución de nuestros pro- característica de permitir a los progra-
tiva comercial para el desarrollo en .NET gramas. Mono usa GTK# (también madores actualizar su documentación
que incluye un depurador y un editor de disponible bajo Windows) para la real- desde un repositorio de Mono en Inter-
net. Además de los binarios específicos
Listado 1: GUI con System.Windows.Forms de la distribución, disponemos de un
instalador ejecutable que se encargará de
01 using System; 10 Application.Run(new configurar todos los paquetes que se
02 using System.Windows.Forms; FirstApp()); necesitan.
03 11 } Tras descargar un paquete de 50MB,
04 namespace 12 public FirstApp() : base() un asistente nos guiará a través del pro-
LinuxMagazin.FirstApp 13 { cedimiento de la instalación, que sólo
05 { 14 this.Text = "First involucra unos pocos pasos. Gracias al
06 public class FirstApp : Application with GUI"; asistente, los problemas de instalación
System.Windows.Forms.Form 15 } que una vez afectaron a distribuciones
07 { 16 } que antes estaban explícitamente sopor-
08 public static void Main() 17 } tadas, pero no en la actualidad (como
09 { Fedora), son ahora cosa del pasado.

44 Número 14 WWW.LINUX- MAGAZINE.ES


Mono y DotGNU • DESARROLLO

el nuevo El Contrincante: DotGNU


proyecto. La De acuerdo con el número de versión
ayuda contextual asignado al proyecto, 0.7, podemos
que aparece decir que DotGNU es algo menos
cuando editamos maduro que Mono. El componente cen-
el código fuente tral de DotGNU se denomina Portable
es una de esas .NET. Comprende tres componentes
funcionalidades principales: treecc (una herramienta
de la que dare- para la programación orientada a aspec-
mos rápidamente tos), pnet (entorno en tiempo de ejecu-
cuenta en el ción, compilador C#, herramientas de
entorno de programación) y pnetlib (librería de sis-
desarrollo, pero tema de C# con librerías de clase críti-
por desgracia el cas de C#).
entorno carece, El código fuente y el paquete RPM
por ahora, de un están disponible en la página web de
diseñador de DotGNU. La versión en RPM no
GUIs. requiere ningún ajuste para que nos
Figura 3: La aplicación de ejemplo ejecutándose en Mono con Linux Cuando inten- proporcione un entorno completamente
tiene dificultades en el dibujado de los botones de arriba y en las cajas tamos compilar funcional; todas las herramientas fun-
de selección de la derecha. el código con el cionaron a la primera. Las distribu-
comando mcs ciones actuales, tales cómo Debian 3.1
Algunas distribuciones, cómo Suse 9.3, -r:System.Windows.Forms.dll hacen las cosas aún más fáciles,
incluyen Mono en su instalación por sourcefile, el control estándar Sys- incluyendo el entorno DotGNU por
defecto, pero distribuciones como Red tem.Windows .Forms.NumericUp- defecto (en el paquete pnet). Los
Hat y Fedora tienden a desplazar su Down causa un problema, ya que aún comandos siguientes compilan y ejecu-
interés a la plataforma Java. no está completamente implementado tan la aplicación HelloWorld:
Hay un número de sitios web, como el en Mono. Tras eliminar el trozo de
que se encuentra en [5], que documen- código que produce el error, podremos cscc -o HelloWorld.exe U
tan en detalle el progreso del proyecto compilar la aplicación y ejecutarla HelloWorld.cs
Mono. Por ejemplo, podemos encontrar dentro de entorno en tiempo de ejecu- ilrun HelloWorld.exe
una descripción de los controles de la ción mono (Figura 3).
librería System.Windows.Forms en [6]. Ocurren varios errores: por ejemplo, La siguiente secuencia de comandos
el mecanismo de actualización, que construye un proyecto más complejo con
Una Aplicación de maneja el redibujado de la aplicación, interfaz gráfico. Los ficheros con el
Ejemplo en Mono no funciona correctamente cuando código fuente se encuentran en el subdi-
Los proyectos existentes en Visual Stu- ésta es ocultada por otra aplicación. rectorio src:
dio .NET, tales como nuestro programa Adicionalmente, el mecanismo de
de ejemplo, pueden ser importados eventos presenta algunos problemas cscc -winforms -o U
directamente a Monodevelop. Pero no con los controles RadioButton y Com- Application.exe src/*.cs
olvidemos ajustar las referencias para boBox. ilrun Application.exe

Tabla 1: Comparando Implementacion


Proyecto DotGNU Mono
Versión Actual 0.7.0 1.1.8
Licencia LGPL GPL o propietaria (seleccionable)
Sistemas Operativos Linux, Mac OS X, Windows Linux, Mac OS X, Windows

Ventajas
Paquete estándar con Debian Paquete estándar con Suse 9.3
Los bytecodes originales de windows Soportado por desarrolladores a tiempo puede
ser ejecutados sin modificaciones completo de Novell
Desventajas
System.Windows.Form no implementado System.Windows.Form no implementado
completamente completamente
Errores en el manejo de eventos Errores en el manejo de eventos
No tiene entorno de desarrollo El asistente de instalación no está
completamente probado; por ejemplo, el entorno
de desarrollo falta en Mono 1.1.7

WWW.LINUX- MAGAZINE.ES Número 14 45


DESARROLLO • Mono y DotGNU

cionó de ninguna de la plataforma. El lenguaje de progra-


manera y no se mación C# es muy similar a los lengua-
mostró correcta- jes de programación Java y C++, y
mente. simplifica el aprendizaje de C# a los
El control programadores que conocen estos
GroupBox cam- lenguajes de programación. Otra ven-
bia de color para taja que nos proporciona C# es su
indicar que con- estandarización en ECMA.
tiene el foco de Las dos implementaciones libres de
la aplicación. la plataforma .NET, Mono y DotGNU,
Este compor- contienen características muy intere-
tamiento no es santes, pero también presentan algunas
conforme al asperezas que hay que limar. Los desar-
estándar. El con- rolladores de ambas herramientas aún
trol ImageList tienen que recorrer un largo camino
impide que sea antes de lograr una completa compati-
mostrada la apli- bilidad. Dicho esto, tanto DotGNU
cación. DotGNU como Mono logran proveer de soporte
Figura 4: La aplicación .NET con GUI tiene algunos problemas cuando es capaz de pre- al desarrollo de software en .NET en
se ejecuta en DotGNU; por ejemplo, los botones circulares lanzan sentarnos los eje- Linux.
eventos múltiples veces. cutables creados Los principales problemas experi-
con Mono, pero mentados se han dado en el uso de la
La implementación de la librería Sys- los iconos del control de la barra de librería System.Windows.Forms, que
tem.Windows.Forms no se basa en una botones no son los correctos. provee a las aplicaciones gráficas en
librería gráfica cómo GTK, sino que Una claúsula en la licencia de Windows. En otras palabras, aún no es
dibuja los controles por sí mismo, tal y Microsoft .NET prohíbe la publicación posible migrar software .NET con GUIs
como sucede en la librería Swing de de comparativas de rendimiento para basadas en Windows a Linux de man-
Java. DotGNU no tiene implementado las implementaciones de .NET. Sin era sencilla.
por sí mismo un IDE. embargo, el proyecto DotGNU propor- Como alternativa a la migración
ciona la herramienta PNetmark [7] directa de software .NET con GUIs
El Proyecto de Ejemplo en para ayudar a aquellos interesados en basadas en Windows a Linux, podemos
DotGNU mediciones de rendimiento, poder usar librerías GUI tales como GTK#,
DotGNU ejecuta los bytecodes genera- crear sus propios test de rendimiento. Qt# o WX#. Puesto que todas estas libr-
dos en Windows sin necesidad de Para más información sobre cómo erías están también disponibles en la
modificarlos. Sin embargo, pulsando crear estas pruebas, podemos consul- plataforma Windows, las aplicaciones
en los controles RadioButton se inicia tar la Sección 1.4 en el FAQ de Dot- multiplataformas son posible dentro de
la rutina de eventos múltiples veces. GNU. unos límites dados, sin embargo estas
Esto no cambia cuando recompilamos aplicaciones no llegarán a ser compati-
los fuentes usando DotGNU: cscc Resumen bles .NET. ■
--winforms -o DemoApp.exe *.cs. El framework .NET de Microsoft nos
Además tenemos que eliminar el proporciona una aproximación intere- RECURSOS
código manejador de ImageList para sante a la programación independiente
lograr que la apli- [1] Mono: http://www.mono-project.com
cación termine de [2] DotGNU: http://www.dotgnu.org
compilar.
[3] Listados online: http://www.
Nuestras pruebas
linux-magazine.com/Magazine/
lograron descubrir Downloads/2005/12/dotNET/
otro error en la ver-
[4] Página de Sharpdevelop: http://www.
sión compilada con
icsharpcode.net
DotGNU (Figura 4).
[5] Estado del desarrollo de Mono: http://
También indicaron
www.go-mono.com/mono-roadmap.
que el mecanismo
html
de eventos no fun-
[6] Estado del desarrollo de System.Win-
cionaba correcta-
dows.Forms en Mono: http://svn.
mente: el compo-
myrealbox.com/mwf/owners.html
nente GUI RadioBut-
[7] PNetmark: http://www.
ton lanzaba eventos
southern-storm.com.au/pnet_faq.
duplicados. Numer- html#q1_4
icUpDown no fun- Figura 5: Aplicación sencilla corriendo con System.Windows.Form.dll

46 Número 14 WWW.LINUX- MAGAZINE.ES


Python • DESARROLLO

Un script pequeño y útil

MAYORDOMO
PYTHON
Mucha gente habla de Python como el sustituto normal de Perl, pero siempre lo vemos en grandes programas.

Hoy vamos a demostrar lo fácil que es crear un script potente y sencillo en Python. POR JOSÉ MARÍA RUIZ

M
uchas tareas cotidianas guardar toda esa información… un nombre de los ficheros y su tamaño.
pueden automatizarse gracias primer paso para poder almacenar Esto se hará con una función que
a los lenguajes script. Siempre todos esos datos antes de que se tenga además generará una estructura de
se ha dicho que Linux fomenta la que lamentar. datos para almacenar esa información.
creación de pequeños script que ahor- Con la estructura de datos ya en la
ran grandes cantidades de tiempo. Pero Diseño del programa mano se pasará a la toma de deci-
con el paso de éste las actividades que Será preciso pensar ahora en lo que se siones. ¿De qué manera se van a
se han desarrollado en los sistemas va a necesitar. Como se dispone de una guardar los datos en los directorios?
Linux han ido cambiando. Si antes la ruta y de una cantidad de espacio Para ello se empleará otra función, que
mayor parte del trabajo consistía en expresado de alguna manera (digamos devolverá otra estructura de datos en la
gestionar centenares o miles de cuentas Megabytes), lo primero que habrá que que se almacenarán los distintos
de usuarios individuales, actualmente hacer es acceder a dicha ruta. ficheros clasificados por directorios,
existen cientos de directorios con miles Para ello se harán uso de las fun- con la condición de que ninguno de
de ficheros que se acumulan en nues- ciones de las librerías os y os.path. Una esos directorios tenga un número tal de
tros equipos. vez en la ruta deben recorrerse todos ficheros como para sobrepasar el límite
Y siempre se desea guardarlos, pero los directorios y subdirectorios que se de tamaño que se proporció. Esta es la
es una tarea complicada, aburrida y encuentran en ella, registrando el parte dura.
monótona. ¡Además hay que pensar! Con la nueva estruc-
¿Dónde colocar los ficheros y tura de datos en la
cómo hacerlo? mano ya sólo queda
A continuación se verá crear los directorios y
cómo crear un script Python mover los ficheros a
que facilitará esta tarea: se ellos, y listo.
pasará una ruta y una canti-
dad de espacio (por ejemplo Recolección de
el tamaño de un DVD o los datos
CDROM, y él cogerá todos los ¿Cómo se pueden
ficheros de esa ruta y los recorrer todos los sub-
guardará en directorios de directorios de
manera que ninguno de un árbol
ellos sobrepase el de
tamaño que se les dió.
¿Uso? Pues el más
evidente, dar una
primera idea de
cómo poder

WWW.LINUX- MAGAZINE.ES Número 14 51


DESARROLLO • Python

ficheros de la manera más simple posi- ficheros entre contenedores de tamaños


Listado 2: ejecución
ble? El truco es emplear la recursividad. iguales especificados por el usuario, o
Una función es recursiva cuando se
recursiva sea, por nosotros mismos.
invoca a sí misma dentro de su código. - se ejecuta recorrido("/tmp",{}) Los mejores algoritmos conseguirán
Esta técnica suele provocar dolores - se procesa hola.txt un aprovechamiento óptimo de los con-
de cabeza, pero es más sencilla de lo - se ejecuta tenedores, pero … ¿vale la pena? Creo
que pudiese aparentar en un primer recorrido("/tmp/uno",{'/tmp/hola.txt' : que la mayor parte de la gente diría que
momento. Sólo tenemos que seguir dos 123}) no. ¿Por qué?
reglas: - se procesa uno.txt Pues debido a que muchas veces gran
• que al llamar a la misma función de - se vuelve parte de los ficheros están relacionados
nuevo se le pasen menos datos que a entre sí. No suele ser buena idea meter
- se ejecuta
la original. recorrido("/tmp/dos",{'/tmp/hola.txt' :
en un CDROM un fichero grande
• que exista una cláusula IF que no eje- 123, '/tmp/uno/uno.txt' : 431}) correspondiente a un capítulo de
cute la llamada a la misma función. alguna serie y cientos de ficheros
- se procesa dos.txt
Dicho así suena raro, por eso vamos a pequeños no relacionados, mientras
- se vuelve
verlo en la práctica, ver Listado 1. que el segundo capítulo de la serie va
La función recoge dos parámetros, - se vuelve en otro CDROM.
ruta y hash. Como su nombre indica, se El algoritmo óptimo es el que emplea
emplearán un hash o diccionario para enfrentamos. En caso de que sea un Programación Dinámica, una técnica
almacenar el nombre y el tamaño de los fichero se usa como entrada en el hash muy usada para resolver problemas de
ficheros que se vayan encontrando. A su ruta, y el tamaño del fichero como este tipo. Nosotros emplearemos uno
través de la función os.listdir() se con- valor, que se consigue a través de la más sencillo y adecuado, un Algoritmo
sigue una lista con los ficheros y direc- función os.path.getsize(). Voraz.
torios que existen en la ruta que se ¿Y qué pasa si es un directorio? ¡Pues Realmente no tiene mucha historia:
pase. Así que se recorre esa lista, pero que se invoca a recorre() de nuevo! comienza por los ficheros más grandes, e
las cadenas de la lista sólo contienen el Pero esta vez se pasa la ruta de este intenta meter tantos como puedas en uno
nombre de los ficheros y directorios, no subdirectorio. De esta manera, se de los contenedores. Cuando no se pueda
vuelve a invocar recorre() para cada introducir el siguiente fichero que toque,
Listado 1: función subdirectorio que se encuentre. Llegará se salta al siguiente contenedor. De esta
«recorre» un momento que no se encuentren más manera, los ficheros que se encuentren
01 def recorre(ruta,hash): subdirectorios, sólo ficheros. Es en el mismo subdirectorio tenderán a ir
02 entradas = entonces cuando se detiene la recur- en grupos en los mismos contenedores.
os.listdir(ruta) sión. La función encargada de esta tarea es
03 Imaginemos que se tiene /tmp/ y en organiza(), que podemos ver en el Lis-
04 for entrada in entradas: su interior el fichero hola.txt y los sub- tado 3. Esta función hace uso de una ca-
05 directorios uno y dos con los ficheros racterística que no se suele encontrar en
06 ruta_entrada = ruta + uno.txt y dos.txt respectivamente. otros lenguajes, las funciones Lambda.
"/" + entrada Entonces la ejecución sería como la Una función Lambda es una función
07 mostrada en el Listado 2. anónima, sin nombre. Se puede crear en
08 if El resultado final sería que el hash cualquier momento, y lo que es más
os.path.isfile(ruta_entrada): contendría los datos: importante, almacenarlas en variables.
09 hash[ruta_entrada] Como están asociadas a una variable
= {'/tmp/hola.txt' : 123,U pueden ser pasadas como parámetros en
os.path.getsize(ruta_entrada) '/tmp/uno/uno.txt' : 431,U las funciones. Y la función sort() admite
10 elif '/tmp/dos/dos.txt' : 3234 } 2 funciones como parámetro, de las
os.path.isdir(ruta_entrada): cuales sólo se hace uso de la primera.
11 La cláusula else: se ha puesto para ¿Por qué se necesita pasar una función
recorre(ruta_entrada, hash) poder capturar errores, cosa que no Lambda? sort() ordena listas, pero la
12 else: debería pasar nunca. La recursividad, estructura de datos listado no es una lista
13 print "ERROR" cuando se escapa de la mano, es muy simple. Es una lista que contiene listas de
complicada de controlar, pero su buen dos elementos. El primero es el nombre
su ruta. Por eso se vuelve a generar la uso crea código muy sencillo. del fichero, y el segundo el tamaño. Si se
ruta usando la variable ruta_entrada desean ordenar los ficheros por tamaño
para contenerla. El trabajo duro será necesario decirle a sort() que se fije
Es ahora cuando viene lo «difícil». No Es aquí cuando hay que emplear un en el segundo miembro de la lista, que es
se sabe la clase de objeto que se tiene poco de lógica. Existen muchas ma- cada elemento de listado. Y eso es, justa-
entre manos, así que se emplean las neras de solucionar este problema, pero mente, lo que hace la función Lambda.
funciones os.path.isfile() y no tiene mucho sentido emplear las El primer parámetro de sort() es una
os.path.isdir() para ver con qué nos más eficientes. Es preciso repartir los función que se usa para comparar dos

52 Número 14 WWW.LINUX- MAGAZINE.ES


Python • DESARROLLO

Listado 3: código del programa


001 #!/usr/local/bin/python 054
002 055 for fichero in dir[llave]:
003 import os 056 print " %12d \t\t\t %s" %
004 import os.path (fichero[1], fichero[0])
005 057 cont += fichero[1]
006 058
007 def recorre(ruta,hash): 059 print "\nTotal: " + str(cont) +
008 entradas = os.listdir(ruta) "/"+str(cantidad)
009 060 print "\n"
010 for entrada in entradas: 061
011 062 def print_caja(texto):
012 ruta_entrada = ruta + "/" + entrada 063 texto = " | " + texto + " |"
013 064 print " ."+ ((len(texto) - 3)*"-") + "."
014 if os.path.isfile(ruta_entrada): 065 print texto
015 hash[ruta_entrada] = 066 print " `"+ ((len(texto) - 3)*"-") + "'"
os.path.getsize(ruta_entrada) 067
016 elif os.path.isdir(ruta_entrada): 068 def genera_dirs(ruta,datos):
017 recorre(ruta_entrada, hash) 069
018 else: 070 for llave in datos.keys():
019 print "ERROR" 071
020 072 cont = 0;
021 def organiza(hash, cantidad): 073
022 # genera una lista de hash con la cantidad 074 ruta_dir = ruta + "/dir-"+ str(llave)
óptima de ficheros para 075
023 # de manera que cada hash no puede contener 076 if (os.path.exists(ruta_dir)):
más de esa cantidad. 077 print "Error, "+ruta_dir+" ¡¡ya
024 existe!!"
025 listado = hash.items() 078 print "Elimine el directorio y vuelva
026 a ejecutar el programa"
027 compara = (lambda x,y: cmp(x[1],y[1])) 079 exit(-1)
028 080
029 listado.sort(compara, reverse=True) 081 os.mkdir(ruta_dir)
030 contador = 0 082
031 n = 0 083 for fichero in datos[llave]:
032 directorios = {} 084 ruta_ant = fichero[0]
033 085 ruta_nueva = ruta_dir +
034 for entrada in listado: ruta_ant.split(ruta)[1]
035 if (contador + entrada[1] <= cantidad): 086 os.renames(fichero[0],ruta_nueva)
036 if not n in directorios.keys(): 087
037 directorios[n] = [] 088 def vuelca_indice(ruta, datos):
038 directorios[n].append(entrada) 089 texto = "<?xml version=1.0>\n"
039 contador += entrada[1] 090 texto += "<coleccion>\n"
040 else: 091
041 n += 1 092 for llave in datos.keys():
042 directorios[n] = [] 093 texto += "<contenedor
043 directorios[n].append(entrada) id=\""+str(llave)+"\">\n"
044 contador = entrada[1] 094 ruta_dir = ruta + "/dir-"+ str(llave)
045 095 for fichero in datos[llave]:
046 return directorios 096 texto +="<fichero>"+ ruta_dir +
047 fichero[0].split(ruta)[1] + "</fichero>\n"
048 def print_directorio(dir, cantidad): 097 texto += "</contenedor>\n"
049 098
050 for llave in dir.keys(): 099 texto += "</coleccion>\n"
051 100
052 cont = 0; 101 fich = open(ruta+"/indice.xml","w+")
053 print_caja("Directorio " + str(llave)) 102 fich.write(texto)

WWW.LINUX- MAGAZINE.ES Número 14 53


DESARROLLO • Python

Figura 1: Estado original de los directorios antes de correr el script.


Tenemos un directorio inmenso de 1GB.
Figura 2: El script nos parte el directorio original en directorios más
Listado 3: código del El siguiente paso pequeños y manejables.
programa (continuación) consiste en generar
una estructura consistente en un dic- Se puede ver un ejemplo en el Listado 4. ■
103 fich.close()
cionario o hash, donde la llave es un
104
número y el contenido una lista de ficheros Listado 4: fichero de índice
105 if __name__ == '__main__':
y sus tamaños. Este hash representa cada
106
uno de los contenedores que usaremos.
107 hash = {} 01 <?xml version=1.0>
Cuando se llena uno pasamos a crear el
108 ruta = "/usr/local/datos" 02 <coleccion>
siguiente y así hasta quedarnos sin
109 cantidad = 60000000 #en 03 <contenedor id="0">
ficheros.
bytes 04
110 Movimiento de ficheros <fichero>/usr/local/datos/dir-
111 recorre(ruta,hash) 0/videos/rubyonrails.mov</fich
Ya sólo nos queda recorrer la estructura de
112 ero>
datos con genera_dirs(), que genera los
113 d = 05 </contenedor>
directorios y mueve los ficheros a su nueva
organiza(hash,cantidad) 06 <contenedor id="1">
localización. Cabe resaltar la función
114 print_directorio(d, 07
os.path.split() que separa una ruta de
cantidad) <fichero>/usr/local/datos/dir-
fichero en dos, la primera parte de la ruta
115 1/ase2001-gfkf.ps</fichero>
hasta el nombre del fichero y el nombre del
116 genera_dirs(ruta,d) 08
fichero en sí mismo. Aquí se usa para
117 <fichero>/usr/local/datos/dir-
generar una nueva ruta.
118 vuelca_indice(ruta,d) 1/icse2002-gk.ps</fichero>
Para ello se emplea la función
os.renames() que equivale a mover 09
elementos, y que devuelve -1, 0 y 1. Esa ficheros, pero también crea los directorios <fichero>/usr/local/datos/dir-
función ya existe y se llama cmp(). Se que estén en la ruta de destino y no existan. 1/esop2003-gfkf.ps</fichero>
creó una función Lambda que se aplica a 10
los segundos miembros de las dos listas La guinda del pastel <fichero>/usr/local/datos/dir-
que admite como parámetro. Veamos su Como somos grandes hackers y estamos a 1/continuations.ps</fichero>
uso: la última se ha incorporado al programa 11
una última función. La función <fichero>/usr/local/datos/dir-
>>> a = (lambda x,y:U vuelca_indice() genera un fichero XML con 1/esop2001-gkvf.ps</fichero>
cmp(x[1],y[1]) el índice de contenedores y ficheros. El 12 </contenedor>
... ) objetivo es que quien quiera crear un pro- 13 </coleccion>
>>> a grama que grabe estos contenidos podrá
<function <lambda> at 0x81a5dcc> facilitarse mucho la tarea leyendo este
>>> a([0,1],[0,1]) índice en lugar de tener que escanear los
0 directorios. José María Ruiz actualmente
está realizando el Proyecto Fin
EL AUTOR

>>> a([0,2],[0,1]) Una de las grandes ventajas del XML es


de Carrera de Ingeniería Técnica
1 que resulta muy sencillo generarlo. La
en Informática de Sistemas.
>>> estructura de nuestro fichero es bien sim-
Lleva 8 años usando y desarro-
ple: llando software libre y, desde
es importante fijarse como a pasa a con- • Colección hace dos, se está especializando
vertirse en un función como cualquier • Contenedor en FreeBSD.
otra. • Fichero

54 Número 14 WWW.LINUX- MAGAZINE.ES


065-067_SistemasFicheros 05.01.2006 13:09 Uhr Página 65

Taller del Administrador • ADMINISTRACIÓN

Trucos: El Sistema de Ficheros de Unix

ORGANICÉMONOS

Las máquinas Unix organizan los archivos en un sistema de ficheros en forma de árbol con estructura

jerárquica. Un sistema de nombres convencional definido en el Filesystem Hierarchy Standard (FHS) ayuda a

los administradores a encontrar el camino. POR MARC ANDRÉ SELIG

I
ncluso una instalación mínima de único programa para cada tarea de entre máquinas de la LAN usan un sistema de
Linux escribe miles de archivos y varios posibles y tienen que reem- ficheros en red como NFS para montar
directorios en el disco. El aumento plazarlo con uno compatible con ver- los directorios de los programas. Por
de distintos dialectos de Unix llevó a un siones anteriores si aparece una actual- supuesto, esto sólo funciona si los pro-
número de diseños completamente difer- ización. Por ejemplo, si un admin- gramas críticos y los ficheros están en el
entes para organizar archivos de un istrador necesita reemplazar el Agente de mismo lugar en cada máquina.
modo significativo en el disco. Por ejem- Transferencia de Correo (MTA), la nueva La comunidad de Linux comenzó a
plo, algunos administradores denominan versión debería ser capaz de localizar y trabajar formalmente en la
sus directorios home de usuarios como manejar los mensajes existentes. estandarización del sistema de archivos
/usr/home/Nombre, mientras que otros A menos que quiera definir las rutas en el otoño del 1993 (antes de que el ker-
prefieren /users/Nombre. Un buzón por sí mismo, lo habitual es conformarse nel 1.0 se desarrollara en Marzo de
podría estar en /usr/mail/Nombre en una con los estándares. La estructura de 1994). La idea detrás de la
máquina y en otra podría encontrarse en directorios estandarizados también sim- estandarización del sistema de archivos
/var/spool/mail/Nombre. En este caso, la plifica el intercambio de ficheros entre era la de portar el software de cualquier
diversidad es una desventaja. máquinas diferentes. Algunos admin- variante Unix a cualquier distribución de
Al contrario que Windows, por ejem- istradores hacen su tarea más cómoda Linux con el menor esfuerzo posible. El
plo, el diseño modular de Unix requiere realizando las principales instalaciones proyecto FSSTND (Filesystem Standard)
que los administradores seleccionen un de software una sola vez. Todas las siguió al FHS (Filesystem Hierarchy Stan-

WWW.LINUX-MAGAZINE.ES Número 14 65
065-067_SistemasFicheros 05.01.2006 13:09 Uhr Página 66

ADMINISTRACIÓN • Taller del Administrador

dard) [1], que aún hoy en día es el están- ración para el cargador (Grub o Lilo) se software adicional puede almacenarse
dar para todas las distribuciones. almacenan aquí. Aunque estos ficheros tanto en /usr como en /opt. Mientras que
Aunque las especificaciones de FHS son parte del núcleo del sistema Linux, /usr organiza los ficheros por funciones
provocan argumentos en muchos casos, no necesitan residir en la partición con el (los binarios se almacenan en /usr/bin,
el mero hecho de que existieran sistema de ficheros raíz. Después de las bibliotecas en /usr/lib), en /opt se
causaron la estandarización que muchas todo, al cargador no le importa el sis- organizan los ficheros por vendedor o
distribuciones Linux han venido confir- tema de ficheros mientras carga el ker- por paquetes de software. Solaris es un
mando. nel. ejemplo extremo de este convenio multi-
plataforma con su colección de paquetes
Básico Recursos en /opt/SUNW*. Linux a menudo tiene
Cada ordenador con Linux/Unix necesita Los usuarios finales pocas veces cam- instalaciones en /opt/kde3 o /opt/gnome.
un número de ficheros principales y bian los programas de la partición raíz, Pero para usar paquetes que han sido
directorios. Incluso si el ordenador ya que la mayoría de las aplicaciones instalados en /opt en la shell, necesitará
obtiene algo más de la red, este grupo software se encuentran en /usr. Quienes establecer su variable PATH.
principal de ficheros debe estar están familiarizados con Unix leerán usr Los ficheros de /usr y /opt son bas-
disponible desde el exterior. En el caso como “Unix System Resources”, recursos tante estáticos por naturaleza. Tiene sen-
que el sistema disponga de múltiples del sistema Unix, aunque normalmente tido montar estos dos directorios como
particiones físicas, estos ficheros residen se conozca como el directorio “user”. sólo lectura después de iniciar el sis-
en la partición boot. (Cuando un orde- /usr también tiene muchos subdirecto- tema, evitando modificaciones acciden-
nador arranca, puede obtener los rios disponibles en el sistema de ficheros tales o intencionadas. Y aunque es
ficheros desde un servidor, pero esto raíz. Hay un /usr/bin que coincide con importante tener una copia de seguridad
tiene que suceder antes de que se ejecute /bin; los programas del sistema se completa, normalmente puede hacerlo
init e inicialice el sistema). encuentran tanto en /sbin como en /usr/ sin una copia de seguridad de una parti-
El sistema de ficheros raíz contiene un sbin y hay un /usr/lib para las bibliote- ción estática [2].
sistema Unix completamente funcional y cas dinámicas. De acuerdo con las reglas /usr tiende a llenarse con datos espe-
ofrece de este modo muchas ventajas: si de FHS, no debería haber un /usr/etc. cialmente en los ordenadores antiguos,
el controlador de la tarjeta del interfaz de Los datos de configuración para los pro- en este caso los administradores
red falla tras una actualización del ker- gramas de /usr deben estar en /etc. deberían considerar el mover los subdi-
nel, sería imposible activar partes del sis- /usr también tiene un número de sub- rectorios de /usr a otras particiones,
tema de ficheros. El administrador nece- directorios adicionales: el código fuente como se muestra en el Listado 1. El
sita acceder al sistema de ficheros raíz se almacena en /usr/src, /usr/include script crea un sistema de ficheros en una
donde se encuentran las herramientas almacena los ficheros include para varios partición vacía, /dev/sdc1 y luego mueve
para resolver los problemas. Lo mismo lenguajes de programación y /usr/share/ el contenido de /usr/share a esta parti-
es aplicable en el caso de restaurar doc, /usr/share/man y /usr/share/info ción.
ficheros dañados desde una copia de almacenan los ficheros de docu-
seguridad: todo lo que necesita un mentación para los paquetes de software Hogar, Dulce Hogar
administrador debería residir en la zona instalados. Los directorios home de los sistemas
root. Para que FHS sea más amigable, el basados en BSD tradicionalmente se
El kit de herramientas debe incluir la encuentran bajo /usr/home. Linux usa
shell favorita del usuario y las bibliote- Listado 1: Cambiando fuera /home. En redes locales, los admin-
cas necesarias, un editor de texto y soft- /usr/share istradores utilizan muy a menudo un
ware para acceder a otras partes del sis- automontador para mapear /home a un
01 #!/bin/sh
tema como fdisk, el familiar mkfs y directorio de red, que se monta dinámi-
02 mke3fs /dev/sdc1
mount. La especificación del Filesystem camente desde el servidor de ficheros
03 mount /dev/sdc1 /mnt
Hierarchy Standard [1] tiene un com- cuando un usuario se autentifica.
04 cd /usr/share
pleto listado. Junto al directorio raiz /, el Los directorios de datos de los servi-
05 tar cf - . | (cd /mnt && tar
área del sistema de ficheros raíz incluye cios al igual que los servidores HTTP o
xpf -)
en directorio /etc con sus ficheros de FTP también son asignados a sus propios
06 umount /mnt
configuración, /bin y sbin con la mayoría directorios. Las distribuciones tienen
07 mount -o remount,rw /usr #
de los programas importantes, /lib para soluciones diferentes para los puntos de
falls /usr read-only ist
bibliotecas dinámicas y módulos del ker- montaje, aunque el FHS estipula que
08 rm -rf /usr/share/*
nel y /dev para los ficheros de disposi- estos datos residan bajo el directorio
09 mount -o remount,rw / # falls
tivos. El directorio home del usuario /srv. Actualmente Suse hace esto, permi-
/ read-only ist
root, /root, también se encuentra a tiendo al directorio raíz de los documen-
10 echo '/dev/sdc1 /usr/share
menudo en esta partición. tos de Apache apuntar a /srv/www.
ext3 defaults 1 3'
/boot juega un papel especial; en un Muchos administradores encuentran
>>/etc/fstab
sistema moderno Linux, el kernel, una esto complicado de usar. Por ejemplo,
11 mount /usr/share
imagen de disco ram con módulos críti- Debian está bastante orgullosa de ser
12 exit
cos del kernel y ficheros de configu- compatible a FHS, aunque usa /var/

66 Número 14 WWW.LINUX-MAGAZINE.ES
065-067_SistemasFicheros 05.01.2006 13:09 Uhr Página 67

Taller del Administrador • ADMINISTRACIÓN

Figura 1:El sistema de ficheros típico de una máquina Linux. Para una mejor representación y flexibilidad, los administradores deberían dis-
tribuir los datos en varias particiones en el disco duro.

www como directorio raíz de los docu- Datos Estáticos y Variables RECURSOS
mentos; Red Hat Enterprise Linux adopta Un sistema Unix en ejecución produce
una solución parecida. El directorio de un gran número de cambios en los [1] Filesystem Hierarchy Standard: http://
datos para el demonio FTP normalmente ficheros que se encuentran en el directo- www.pathname.com/fhs/
está bajo /home/ftp. rio /var (datos variables). Hay dos venta- [2] Marc André Selig, “Backups”:Linux
jas en esta solución: primera, separa los Magazine 07, p. 66.
Compilando Software datos volátiles de los datos de sólo lec-
Si compila e instala su propio software tura de la partición /usr. Además, los cadores de proceso de los servicios
en un sistema Linux, no debería usar ficheros de log pueden crecer a un activos para las comunicaciones inter-
ninguno de los directorios que hemos tamaño considerable, dependiendo de la proceso (IPC) que los programas uti-
mencionado anteriormente. Para ello cantidad de uso que se le dé al sistema. lizan. /var/empty es un directorio home
utilice el directorio /usr/local. Los scripts En caso de una carga inesperadamente vacío para una parte privilegiada del ser-
o programas que ha desarrollado pesada, los ficheros de registros de vicio SSH, por ejemplo.
deberían encontrarse bajo /usr/local/bin, Apache o del cortafuegos crecerán desor-
mientras que la documentación debería bitadamente. Si el fichero de registros El Resto
estar en usr/local/man. Puede decidir si llena la partición root, el sistema comen- El sistema de ficheros raíz también tiene
quiere poner el código fuente en /usr/ zará a hacer cosas raras porque muchos puntos de montaje para otros sistemas
local/src para que todo el mundo pueda programas no serán capaces de escribir de ficheros, incluyendo /proc, un sistema
leerlo o guardarlo en su directorio home. en los ficheros temporales. En otras pal- de ficheros virtual que proporciona un
También tiene sentido poner /usr/local abras, es buena idea poner /var en un número de núcleos variables. Los dispos-
y /home en particiones separadas. Si se directorio separado. itivos externos utilizan subdirectorios
cambia a otra distribución, un simple Un subdirectorio de /var que es bajo /media, tal como /media/floppy o
comando mount o una nueva entrada en extremadamente importante es /var/log /media/cdrom. De acuerdo con el están-
/etc/fstab le proporcionará las copias de (este es el lugar donde los ficheros de dar, /mnt solo debería ser usado para
seguridad de sus ficheros la próxima registro se almacenan); /var/mail montar sistemas de ficheros para uso
vez. Si prefiere evitar crear muchas parti- mantiene los buzones de correo de los temporal, por ejemplo, para resolver
ciones, podría crear una partición para usuarios, aunque los sistemas Linux más problemas de la máquina o para acceso
/home y usar un enlace simbólico a antiguos usan /var/spool/mail. /var/run al sistema de ficheros de red durante un
/home/local en /usr/local. tiene los ficheros PID con los identifi- período breve de tiempo. ■

WWW.LINUX-MAGAZINE.ES Número 14 67
ADMINISTRACIÓN • Squid

Implementar un proxy casero con Squid

PUERTO SEGURO

Un servidor proxy proporciona una navegación más segura y eficiente. Aunque existen soluciones proxy

comerciales disponibles, todo lo que realmente necesitamos es Linux y un viejo PC en el desván.

POR GEERT VAN PAMEL

T
engo una red casera desde hace total de seguridad. Solucionar los pro- Finalmente migré a Linux y configuré
bastantes años. Empecé con un blemas era totalmente imposible. La un firewall con iptables en un Pentium
router usando Windows XP con configuración del firewall quedaba a II que hacía de router. El firewall
ICS (Internet Connection Sharing) y una merced de usuarios inexpertos, que mantiene a los atacantes fuera de mi
tarjeta Ethernet con varias interfaces de podían pulsar aleatoriamente sobre la red, y registra el tráfico entrante y
red. Las principales desventajas eran la configuración de seguridad como el que saliente. Además del firewall iptables,
inestabilidad, bajo rendimiento y falta juega a la ruleta rusa. también configuré un servidor proxy

Tabla1: Hardware recomendado


Componentes Necesarios Especificaciones
Intel Pentium II CPU, o superior (¿Por qué no un Alpha Server sobrante?) 350 Mhz
80 - 100 MB de memoria mínimo Cuanto más, mejor
1 ó más discos duros IDE (podemos reutilizar 2 viejos discos duros: uno con 1GB del
sistema y el swap y el otro con 3GB de caché, más el directorio /home) 4GB mínimo
2 tarjetas Ethernet, minihub, modem fast Ethernet y router wireless o hub 100 Mbit/s si es posible
CDROM, lector DVD El software se distribuye principalmente por DVD

56 Número 14 WWW.LINUX-MAGAZINE.ES
Squid • ADMINISTRACIÓN

Squid para mejorar el rendimiento de de la casa usando cable UTP estándar o figuración lleguen al mundo exterior
Internet, filtrar los molestos popups y blo- una conexión wireless. La tabla 1 muestra cuando se navegue por la Web:
quear URLs peligrosas. el hardware recomendado para la máquina
Un servidor proxy Squid filtra el tráfico firewall. vi /etc/squid/squid.conf
Web y cachea los archivos a los que se Suponiendo que el firewall esté ya fun- ...
accede frecuentemente. También limita el cionando, el siguiente paso es configurar anonymize_headers deny U
uso del ancho de banda, acelera el acceso Squid. Se encuentra disponible en Internet From Server Via User-Agent
a Web y nos permite filtrar URLs. El blo- en [3] o en uno de los mirrors [4] como forwarded_for off
queo centralizado de publicidad y descar- tar.gz (compilado desde las fuentes). strip_query_terms on
gas peligrosas es rentable y transparente Puede instalarse fácilmente usando uno de
para el usuario final. los siguientes comandos: Nótese que no pueden hacerse anónimos
Squid es una implementación completa Referer y WWW-Authenticate ya que de
en software libre y de alto rendimiento de rpm -i /cdrom/RedHat/RPMS/U lo contrario, los mecanismos de autenti-
un servidor proxy. Proporciona amplios squid-2.4.STABLE7-4.i386.rpmU cación y control de acceso no fun-
controles de acceso y se integra con facili- # Red Hat 8 cionarán.
dad con el firewall iptables. En mi caso, el forwarded_for off significa que la
servidor proxy Squid y el firewall iptables rpm -i /cdrom/Fedora/RPMS/U dirección IP del servidor proxy no será
trabajan juntos para proteger mi red de squid-2.5.STABLE6-3.i386.rpm U enviada al exterior.
intrusos y HTML peligrosos. Encon- # Fedora Core 3 Con strip_query_terms on no se regis-
traremos abundantes artículos acerca de tran en el log los parámetros de las URL
firewalls en libros, revistas y páginas Web. rpm -i /cdrom/.../U más allá del signo ?. Cuando este
(Véanse [1] y [2], por ejemplo). El servidor squid-2.5.STABLE6-6.i586.rpmU parámetro está en off, se registra la URL
proxy Squid, por otro lado, no está bien # SuSE 9.2 completa en los archivos log de Squid.
documentado del todo, especialmente Esta característica puede ayudar a depu-
cuando hablamos de pequeñas redes En el momento de escribir estas líneas, la rar fallos en los filtros de Quid, pero tam-
caseras como la mía. En este artículo, versión estable de Squid es la 2.5. bién puede violar las reglas de privaci-
vamos a mostrar cómo configurar Squid. dad.
Configurar Squid La siguiente configuración identifica el
Comenzamos Una vez que ha sido instalado, será nece- host de Squid, el dominio (interno) donde
El primer paso es encontrar el hardware sario configurarlo. Squid tiene un archivo opera la máquina y el nombre de usuario
necesario. La Figura 1 muestra la configu- de configuración centralizado. Cada vez responsable del servidor. Nótese el punto
ración de red del Pentium II que se ha uti- que cambia este archivo, la configuración delante del dominio. Más adelante,
lizado como firewall y servidor proxy. Este debe recargarse con el comando /sbin/ encontramos el nombre del servidor local
sistema firewall debería operar con una init.d/ squid reload. de DNS y el número de nombres de
mínima intervención humana, por lo que Es posible editar el archivo de configu- dominio a cachear en el servidor Squid.
tras la configuración del sistema, se ración con un editor de textos. Existe una
pueden desconectar el ratón, teclado y descripción detallada de la configuración visible_hostname squid
monitor. Puede que tengamos que ajustar en el archivo squid.conf, aunque la expli- append_domain .mshome.net
la configuración de la BIOS para que el cación a veces es algo técnica y compli- cache_mgr sysman
ordenador pueda trabajar sin el teclado. El cada de entender. Esta sección resume dns_nameservers 192.168.0.1
objetivo es poder colocar todo el sistema algunas configuraciones importantes del dns_testnames router.mshome.net
en el desván, donde ni lo oigamos. Desde archivo squid.conf. fqdncache_size 1024
el minihub mostrado en la Figura 1, se En primer lugar, se habrá de evitar que http_port 80
pueden “bajar las escaleras” hasta la red ciertos metadatos relacionados con la con- icp_port 0
ADMINISTRACIÓN • Squid

http_port es el puerto usado por el servi-


dor proxy. Se puede elegir cualquiera,
siempre que la configuración no entre en
conflicto con otros puertos de nuestro
router. Una elección común es la 8080 o la
80. El puerto por defecto de Squid, el 3128,
no es especialmente fácil de recordar.
No se está usando cp_port, por lo que
lo fijamos a 0. Esta configuración sin-
croniza los servidores proxy.
Con log_mime_hdrs on, es posible
hacer visibles las cabeceras mime en el
archivo access.log.

Evitar Bloqueos
Squid necesita guardar su caché en
algún lugar del disco duro. La caché es
un árbol de directorios. Con la opción Figura 1: Configuración básica de una LAN Ethernet.
cache_dir en el archivo squid.conf, se
puede especificar la configuración con El espacio en disco se distribuye por Especificación del Formato
características como las siguientes: todos los directorios. Normalmente se de Log
• mecanismo de I/O del disco – aufs esperaría una distribución pareja a lo
• ubicación de la caché en el disco – largo de los directorios, pero en la prác- Puede elegirse entre el formato de log de
/var/cache/squid tica, se acepta una cierta variación en la Squid y el formato estándar de servidor
• cantidad de espacio en disco que distribución. Es posible encontrar confi- Web usando el parámetro
puede ser usado por el servidor proxy guraciones más complejas utilizando emulate_httpd_log. Cuando el parámetro
– 2.5 GB múltiples discos, pero para el uso casero, se fija a on, se usa el formato de Web. Si
• número de directorios principales – 16 una estructura de directorios es sufi- se fija a off, obtendremos más detalles
• subdirectorios – 256 ciente. con el formato Squid. Ver [7] para mayor
Por ejemplo: información acerca del análisis de
Las opciones para métodos de acceso a Sustitución de la Caché archivos log de Squid.
disco son las siguientes: El servidor proxy usa un algoritmo LRU
• ufs – acceso a disco clásico (demasiada (Least Recently Used). Estudios detalla- Jerarquía Proxy
I/O puede ralentizar el servidor Squid) dos de HP Laboratories [6] han revelado El proxy Squid puede trabajar de manera
• aufs – UFS asíncrona con hilos, menos que un algoritmo LRU no es siempre la jerárquica. Si se desea evitar el proxy
riesgo de conflictos de acceso al disco opción más inteligente. La configuración padre para algunos destinos, se puede
• diskd – demonio diskd, evita también GDSF mantiene pequeños objetos popu- habilitar una resolución directa. ¡El
el peligro de conflicto de acceso al disco lares en la caché, mientras que elimina navegador usará aún nuestro proxy
pero usando más memoria. los más grandes y menos usados, incre- local!
UFS es el sistema de I/O de archivos mentando de esta manera el rendimiento
clásico de UNIX. Se recomienda usar global. acl direct-domain U
aufs para evitar cuellos de botella. (Al dstdomain .turboline.be
usar aufs, van a existir menos procesos). cache_replacement_policyU always_direct allow U
heap GDSF direct-domain
# ls -ld /var/cache/squid memory_replacement_policyU acl direct-path urlpath_regexU
lrwxrwxrwx 1 root rootU heap GDSF -i "/etc/squid/direct-path.reg"
19 Nov 22 00:42 U always_direct allow direct-path
/var/cache/squid -> U Los objetos grandes requeridos una
/volset/cache/squid sola vez pueden colocar fuera muchos Algunos ISPs permiten usar su servidor
objetos pequeños, por lo que será conve- proxy para visitar sus propias páginas
E s re c o m e n d a b l e m a n t e n e r l a niente que limitemos el tamaño máximo Web incluso aunque no se sea cliente.
u b i c a c i ó n e s t á n d a r p a ra l a c a c h é de objeto para la caché: Esto puede ayudar a acelerar las visitas
en /var/cache/squid, y de allí a sus páginas. Cuanto más cercano esté
c re a r u n e n l a c e s i m b ó l i c o a l cache_mem 20 MB el proxy a las páginas originales, más
d i re c t o r i o re a l d e c a c h é . S i s e maximum_object_sizeU probabilidad hay de que la página se
m u eve a o t ro d i s c o p o r m o t i vo s 16384 KB cachee. Debido a que nuestro propio
d e re n d i m i e n t o o d e c a p a c i d a d , maximum_object_sizeU ISP es más lejano, el ISP tenderá
sólo será necesario modificar el _in_memory 2048 KB menos a cachear los contenidos de su
enlace simbólico. competidor…

58 Número 14 WWW.LINUX-MAGAZINE.ES
Squid • ADMINISTRACIÓN

cache_peer proxy.tiscali.beU Para Squid, las expresiones regulares acl FTP proto FTP
parent 3128 3130 U pueden especificarse inmediatamente, o always_direct allow FTP
no-query default pueden estar en un nombre de fichero
cache_peer_domain U entre dobles comillas, en cuyo caso el acl local-domain dstdomain U
proxy.tiscali.be .tiscali.be archivo debería contener una expresión .mshome.net
regex por línea, sin líneas vacías. La -i always_direct allow U
no-query significa que no usamos, o no (ignorar mayúsculas) significa que se local-domain
podemos usar, ICP (Internet Caching usarán comparaciones sin diferenciación
Protocol), véase [8]. Puede obtenerse la entre mayúsculas y minúsculas. acl localnet-dst dst U
misma funcionalidad usando expre- Si se está configurando un sistema con 192.168.0.0/24
siones regulares, pero esto proporciona múltiples proxys, es posible especificar un always_direct allow U
round-robin para acelerar la resolución de localnet-dst
cache_peer proxy.tiscali.beU las páginas y minimizar el retraso cuando
parent 3128 3130 U uno de los servidores no esté disponible.
no-query default Recordemos que la mayoría de los naveg- Tabla 2:Guía para ACL
acl tiscali-proxy U adores establecen conexiones en paralelo
• el orden de las reglas es importante
dstdom_regex -i U para obtener todos los elementos de una
\.tiscali\.be$ página. Si se usan múltiples servidores • primero se listan todas las reglas de
denegación
cache_peer_access U proxy para obtener estos elementos, la
proxy.tiscali.be allow U respuesta debería ser más rápida. • se ejecuta la primera regla coinci-
tiscali-proxy Los archivos FTP se descargan normal- dente
mente una sola vez, por lo que general- • el resto de las reglas se ignora
mayor libertad. mente no se deseará cachearlos, excepto • la última regla debería ser permite
El ACL puede incluir también una cuando se descarguen repetidamente. Así todo
expresión regular (regex para abreviar) mismo, las páginas locales no se cachean
con la URL usando una construcción normalmente, debido a que ya residen en La tabla 2 proporciona una guía para
url_regex. nuestra red: la creación de listas ACL. Puede ser una
buena idea permitir la navegación WYSI-
Listado 1: Bloqueando páginas no buscadas WYG (lo-que-ves-es-lo-que-tienes). Si no
01 acl block-ip dst "/etc/squid/block-ip.reg" se quieren ver ciertas páginas o marcos,
02 deny_info filter_spam block-ip se pueden bloquear automáticamente las
03 http_access deny block-ip correspondientes URLs en el servidor
04 proxy.
05 acl block-hosts dstdom_regex -i "/etc/squid/block-hosts.reg" Es posible filtrar por:
06 deny_info filter_spam block-hosts • dominios de cliente o servidor
07 http_access deny block-hosts • subredes IP del cliente o servidor
08 • ruta URL
09 acl noblock-url url_regex -i "/etc/squid/noblock-url.reg" • URLs completas, incluyendo
10 http_access allow noblock-url Safe_ports parámetros
11 • palabras clave
12 block-path urlpath_regex -i "/etc/squid/block-path.reg" • protocolos: HTTP, FTP
13 deny_info filter_spam block-path • métodos: GET, POST, HEAD, CON-
14 http_access deny block-path NECT
15 • día y hora
16 acl block-url url_regex -i "/etc/squid/block-url.reg" • tipo de navegador
17 deny_info filter_spam block-url • nombre de usuario
18 http_access deny block-url El Listado 1 muestra ejemplos de
comandos que bloquean páginas no
deseadas.
cache_peer 80.200.248.199 U Filtrado con Squid El script del Listado 2 hará invisibles
parent 8080 7 U En las secciones precedentes se han las páginas no deseadas. Cada vez que
no-query round-robin comentado algunas configuraciones Squid ejecuta la etiqueta deny_info,
cache_peer 80.200.248.200 U importantes de Squid. También se ha envía el archivo /etc/squid/errors/fil-
parent 8080 7 U dicho que las listas ACL (Access Control ter_spam al navegador en lugar de a la
no-query round-robin Lists) pueden usarse para permitir acceso página Web… filtrando efectivamente
... directo a las páginas sin usar el proxy los objetos no deseados. La marca
cache_peer 80.200.248.207U padre. En esta sección, se examinará <!-- esconde cualquier otro mensaje
parent 8080 7 U cómo usar las listas ACL para un control de error de Squid en el cuerpo del
no-query round-robin más detallado al acceso a Internet. texto.

WWW.LINUX-MAGAZINE.ES Número 14 59
ADMINISTRACIÓN • Squid

Squid también permite filtrar por Habilitando al Resto


Listado 2:
expresiones regulares usadas en la URL. Para habilitar únicamente los
Hacer Invisible una Página Por supuesto, nuestro filtro puede protocolos y métodos que se deseen:
01 vi ocasionalmente provocar un falso posi-
/etc/squid/errors/filter_spam tivo. Pueden añadirse expresiones regu- acl localhost src U
02 ... lares para las URL que específicamente 127.0.0.1/255.255.255.255
03 <script language="JavaScript" no queramos bloquear en acl localnet-src src U
type="text/javascript"> /etc/squid/noblock-url.reg. 192.168.0.0/24
04 <!--
05 window.status="Filter " + vi /etc/squid/noblock-url.reg http_access deny !localnet-src
document.location; ...
//.pathname; ^http://ads\.com\.com/ La última regla debería permitirlo
06 // --> todo, ya que la regla anterior era una
07 </script> prohibición…
08 <noscript><plaintext><!-- Proteger los Puertos No debemos olvidar reiniciar el servi-
Por razones de seguridad, se dor Squid cada vez que cambiemos los
Squid nos permite bloquear con- deberían deshabilitar todos los puertos parámetros, tecleando el siguiente
tenidos por subred IP. Por ejemplo, se y habilitar sólo los puertos Web usando
pueden bloquear páginas con contenido la sintaxis mostrada en en Listado 5. http_access allow all
sexual explícito. Pueden usarse whois Lo mismo puede hacerse con los
[9] para ayudarnos a identificar las sub- puertos con conexión. Pueden habili- comando:
redes y luego añadir las subredes al tarse los puertos SSL cuando se esté
archivo /etc/squid/block-ip.reg: conectado, y denegarlo en otro caso. Es Para SuSE el directorio /sbin/init.d es
importante recordar que el protocolo estándar. Para Fedora, se creará un
vi /etc/squid/block-ip.reg normal HTTP es sin conexión. El enlace simbólico:
... cliente y el navegador establecen una
64.255.160.0/19 nueva conexión para cada página visi- cd /sbin
64.57.64.0/19 tada. ln -s /etc/init.d
64.7.192.0/19
66.115.128.0/18 Listado 3:Bloqueo por Nombre de Dominio
66.152.64.0/19
01 vi /etc/squid/block-hosts.reg 15 ^tracking\.
66.230.128.0/18
02 ... 16 adserver.adtech.de
03 ^a\. 17
Para bloquear anuncios o páginas con
04 ^ad\. 18 \.belstat\.be$
contenido sexual por el nombre de
05 ^adfarm\. 19 \.doubleclick\.net$
dominio, es posible listar expresiones
06 ^ads\. 20 \.insites\.be$
regulares describiendo las páginas en el
07 ^ads1\. 21 ^metrics\.
archivo /etc/squid/block-hosts.reg,
08 ^al\. 22 \.metriweb\...$
como se muestra en el Listado 3.
09 ^as\. 23 \.metriweb\....$
También puede ser una buena idea
10 \.msads\.net$ 24
bloquear ciertos tipos de archivos. Por
11 ^ss\. 25 \.playboy\.com$
ejemplo, puede que no queramos per-
12 ^sa\. 26 \.hln\.be$
mitir los archivos .exe, dado que a veces
13 ^sc\. 27 side6
son archivos zip ejecutables que insta-
14 ^sm6\. 28 www.whitehouse.com
lan software. Squid permite bloquear
archivos por ruta, nombre de archivo o
extensión del archivo, tal y como se ¡Debe impedirse que desconocidos hagan
muestra en el Listado 4. mal uso de nuestra caché! Se desea que Una vez que se haya finalizado la con-
sólo se use en la propia intranet. Los figuración, se usará setup (Fedora),
acl SSL_ports port 443 563 usuarios externos en Internet no yast2 (SuSE) o una herramienta equi-
acl SSL_ports port 1863 U deberían poder acceder a nuestra caché: valente para activar el servicio Squid.
# Microsoft Messenger Tras recargar, si algo no funciona
acl SSL_ports port 6346-6353 U como se esperaba, puede buscare la
# Limewire acl allow-proto proto HTTP razón en el archivo log en
http_access deny !allow-proto var/log/squid/cache.log.
http_access allow U acl allow-method U
CONNECT SSL_ports method GET POST
http_access deny U http_access deny U
CONNECT !allow-method /sbin/init.d/squid reload

60 Número 14 WWW.LINUX-MAGAZINE.ES
Squid • ADMINISTRACIÓN

RECURSOS Listado 4:Bloqueo por Ruta o Extensión


01 vi /etc/squid/block-path.reg
16 \.md[abetwz](\?.*)?
02 ...
[1] Presentación para el grupo de usuar- 17 \.ms[cpt](\?.*)?$
03 \.ad[ep](\?.*)?$
ios de HP-Interex en Belgica el 17/03/ 18 \.nch(\?.*)?$
04 \.ba[st](\?.*)?$
2005, titulada “Implementing a home 19 \.ops(\?.*)?$
05 \.chm(\?.*)?$
Router, Firewall, Proxy server, and 20 \.pcd(\?.*)?$
06 \.cmd(\?.*)?$
DNS Caching Server using Linux”: 21 \.p[ir]f(\?.*)?$
http://users.belgacombusiness. net/ 07 \.com(\?.*)?$
22 \.reg(\?.*)?$
linuxug/pub/router/ 08 \.cpl(\?.*)?$
23 \.sc[frt](\?.*)?$
linux-router-firewall-proxy.zip 09 \.crt(\?.*)?$
24 \.sh[bs](\?.*)?$
[2] Firewalls: http://www.linux-magazine. 10 \.dbx(\?.*)?$
25 \.url(\?.*)?$
com/issue/40/ 11 \.hlp(\?.*)?$
26 \.vb([e])?(\?.*)?$
Checkpoint_FW1_Firewall_Builder.pdf 12 \.hta(\?.*)?$
27 \.vir(\?.*)?$
http://www.linux-magazine.com/issue/ 13 \.in[fs](\?.*)?$
28 \.wm[sz](\?.*)?$
34/IPtables_Firewalling.pdf 14 \.isp(\?.*)?$
29 \.ws[cfh](\?.*)?$
[3] Acerca de Squid en general: http:// 15 \.lnk(\?.*)?$
www.squid-cache.org http://
squid-docs.sourceforge.net/latest/
book-full.html#AEN1685 http://www. Imposición del Control Paterno y Bloqueo de Spyware
squid-cache.org/FAQ/FAQ-10.html
[4] Servidores mirror de Squid: http://
Deberíamos configurar nuestro firewall iptables de manera que bloquee todo el tráfico
www1.de.squid-cache.org http://
HTTP saliente a menos de que se use el servidor proxy. Dado que el proxy esta en la red
www1.fr.squid-cache.org http://
local, permite todas las peticiones entrantes desde los navegadores locales.
www1.nl.squid-cache.org http://
www1.uk.squid-cache.org Cualquier intento de saltarse los filtros Squid se bloquea por la regla FORWARD del fire-
wall que corta el tráfico HTTP saliente.
[5] Suse 9.2 Professional – Distribución
en DVD http://www.linux-magazine. Los programas de Spyware usan generalmente el protocolo HTTP (recordatorio: puerto
es/issue/07/DVD.pdf 80) para las conexiones salientes, pero parece que el Spyware raramente usa el proxy
(da la impresion de que los creadores de Spyware son demasiado perezosos como para
[6] Para mayor información acerca de las
inspeccionar la configuración). De esta manera el Spyware queda bloqueado por las
políticas de remplazamiento de caché
reglas del firewall.
GDSF y LFUDA, véase: http://www.
hpl.hp.com/techreports/1999/
HPL-1999-69.html http://fog.hpl. sume unos 11 kWh/semana. Debería eval-
external.hp.com/techreports/98/ Listado 5: Protección de uarse este gasto frente a la mayor seguridad
HPL-98-173.html Puertos y la disminución de los quebraderos de
[7] Reporte y análisis de los archivos log cabeza al operar nuestro propio fire-
01 acl Safe_ports port 80 # http
de Squid: http://www.linux-magazine. wall con proxy Squid. ■
02 acl Safe_ports port 21
com/issue/36/Charly_Column.pdf
# ftp
[8] ICP – Internet Caching Protocol: http://
03 acl Safe_ports port 2020
en.wikipedia.org/wiki/
# BeOne Radio
Internet_Cache_Protocol
04 acl Safe_ports port 2002
[9] La base de datos whois: http://www.
# Servidor Local
ripe.net/db/other-whois.html
05 acl Safe_ports port 8044
[10] Expresiones Regulares: http://www. # Tiscali
python.org/doc/current/lib/
06 acl Safe_ports port 8080
module-re.html
# Escaneo puertos Turboline
[11] Ejemplos de archivos de configu- 07 acl Safe_ports port 8081
ración para Squid: http://members.
lycos.nl/geertivp/pub/squid
# Prentice Hall EL AUTOR
08
09 # Denegar peticiones a puertos Geert Van Pamel ha trabajado como jefe
desconocidos de proyectos en Belgacom, Bélgica,
Conclusiones 10 http_access deny !Safe_ports desde 1997. Miembro de DECUS desde
Este artículo es el resultado de una pre- 1985 y miembro de la directiva de
sentación para la organización Belgium HP- Si se está buscando un mejor rendimien- HP-Interex desde 2002. Aprendió UNIX
Interex. Las diapositivas están disponibles to, una navegación más segura y una man- en un sistema PDP en 1982, y trabaja en
en [1], donde aparecen más detalles acerca era de bloquear el acceso a contenido peli- la actualidad con Linux en un entorno
compartido con otros servidores como
de la configuración del firewall iptables, el groso, se debería intentar colocar un servi-
Tru64 UNIX, HP-UX, OpenVMS, Non-
router, el servidor de cacheo de DNS, el dor proxy en el desván. Para los que se pre-
Stop Tandem, SUN y NCR Teradata.
servidor DHCP y el servidor NTP. ocupan por el consumo: un Pentium II con-

WWW.LINUX-MAGAZINE.ES Número 14 61
Taskjuggler • PRÁCTICO

Gestión de Proyectos con Taskjuggler

EL ARTE DEL
MALABARISMO
Taskjuggler es una herramienta práctica para la gestión de proyectos, ya sean pequeños o

enormes. Vamos a mostrar cómo organizar un trabajo simple de remodelado con Taskjuggler.

POR UWE IRMER

S
i no tiene muy buena memoria, ware de gestión de proyectos es Taskjuggler El diagrama de Gantt proporciona a los
puede ser que fácilmente le pierda [1] de Chris Schläger y Klaas Freitag. gestores de proyectos un resumen gráfico,
la pista a las tareas complejas. Un Taskjuggler es una herramienta de código permitiéndoles seguirle la pista al progreso
paso importante es tener por escrito una abierto distribuida con licencia GNU GPL. del proyecto, su estado actual y las posibles
lista de las cosas que hay que hacer, pero desviaciones con respecto a la agenda del
una herramienta software adecuada, puede El Plan mismo. El resumen muestra claramente las
ayudar a planear el proyecto. Este artículo Los diagramas de Gantt (nombre recibido dependencias entre las tareas individuales.
guía al lector a través de un simple trabajo de su inventor, el ingeniero norteamericano Esto hace que sea fácil paralelizar las tareas
de remodelado para demostrar el uso de la Henry Laurence Gantt (1861--1919) lle- individuales, es decir, permitir que se reali-
herramienta de gestión de proyectos garon a ser el estándar de facto en la cen al mismo tiempo (condiciones start-
Taskjuggler [1]. gestión de proyectos hace bastantes años. start). De una manera similar, también es
Imagínese que por fin se decide a remod- El diagrama visualiza las tareas, con los
elar su cuarto de baño, un proyecto que puntos de comienzo y finalización bien Tareas Básicas
probablemente lleve posponiendo desde definidos como barras de tiempo y, adi-
Tareas para la reforma del cuarto de
hace años. Como gestor del proyecto, ten- cionalmente, indicando las dependencias baño:
drá que saber qué tareas tienen que lle- entre las tareas. Un diagrama de Gantt 1. Preparar los accesorios a reemplazar.
varse acabo, en qué momento realizarlas, resalta el denominado camino crítico, es 2. Quitar los accesorios antiguos.
qué clase de ayuda necesitará y lo más decir, las tareas que deciden si el proyecto 3. Instalar los accesorios nuevos.
importante de todo, cuando se podrá dar se completará dentro del período de tiempo
4. Poner en funcionamiento los acceso
un baño en su nueva bañera. Nuestro soft- establecido o no. rios nuevos y finalizar el proyecto.

WWW.LINUX- MAGAZINE.ES Número 14 33


PRÁCTICO • Taskjuggler

posible planear un proceso de modo que ejemplo, si existe una dependencia entre la
coincida con la finalización de otro pro- finalización de una tarea y el comienzo de
ceso del que depende (condición end- otra.
end). Taskjuggler proporciona suficiente mar-
La paralelización posee la ventaja de gen para definir las horas de trabajo, las
reducir el tiempo total requerido para el horas de ocio e incluso los descansos en el
proyecto, suponiendo que múltiples pro- diagrama de Gantt. Los recursos se pueden
cesos puedan darse al mismo tiempo. asignar a grupos para facilitar la gestión,
Además, también ayuda a distribuir los pero esto es algo que no necesitamos para
recursos. Los recursos requeridos para la el proyecto de reparación del cuarto de
remodelación del cuarto de baño incluyen Figura 1: El editor de Taskjuggler se usa para baño.
la mano de obra, además de las her- introducir los datos del proyecto. Taskjuggler permite asignar los costes a
ramientas y posiblemente el espacio. Si los recursos individuales y definir los
tiene éxito asignando los recursos a las tar- desee, aunque generalmente, se debería costes iniciales y finales para el proyecto.
eas individuales en la fase de planifi- adecuar al nivel de detalle que hemos Esto significa que puede presupuestar la
cación, le resultará bastante sencillo ver escogido aquí. reforma del cuarto de baño y gestionar los
qué clase de ayuda va a necesitar y en qué En la última fase de la preparación del gastos de modo que pueda tener previsto
fase del proyecto. El diagrama de Gantt proyecto, habrá que decidir quién va a un retraso.
hace referencia a una serie de puntos realizar las tareas individuales. En nuestro El programa proporciona valiosos
intermedios importantes que se van com- ejemplo, vamos a realizar el trabajo de informes organizados por categorías como
pletando a lo largo del proyecto. A estos limpieza nosotros mismos. Los materiales tareas individuales, progresos o costes. El
puntos los denomina hitos. Los hitos mar- serán proporcionados por los proveedores diagrama de Gantt visualiza planos progre-
can los puntos del tiempo donde han de de materiales de construcción y se dispone sivos y muestra como han sido asignados
concluir las tareas específicas. de dos profesionales que nos van a ayudar: los recursos a las tareas. Taskjuggler
Para comenzar, hay que hacer una lista un fontanero cualificado para los trabajos facilita un resumen de los recursos
de las tareas que deben llevarse a cabo en de desinstalación de la antigua bañera y la humanos, incluyendo datos de disponibili-
el proyecto de remodelación del cuarto de instalación de la nueva y un electricista dad, carga y costes. El calendario de recur-
baño. El cuadro titulado “Tareas Básicas” cualificado para la instalación eléctrica. Y sos muestra qué recursos están
proporciona una primera versión de la por último, disponemos de nuestra propia disponibles, el momento en el que lo están
lista de tareas. familia para ayudarnos a deshacernos de y cuáles precisan ampliarse.
Una vez que se tiene esta primera lista, los escombros. Taskjuggler es una herramienta muy
se puede tomar cada una de las tareas y Vamos a utilizar Taskjuggler para asig- potente capaz de manejar proyectos profe-
especificarlas con mayor detalle, subdivi- nar los recursos humanos a las tareas indi- sionales y proporciona un conjunto com-
diendo cada una de ellas en subtareas viduales y crear el programa de trabajo. pleto de características temporales, recur-
diferentes, como se muestra en el cuadro sos y gestión de costes. La entrada de datos
“Tareas Detalladas”. La herramienta y la gestión son ambas intuitivas y la her-
En este punto, conscientemente, se La herramienta de gestión de proyectos ramienta dispone de diversos tipos de
evita pensar en el orden en el que las tar- Taskjuggler es realmente una colección de informes que visualizan el estado actual
eas básicas deben ser realizadas. En vez bibliotecas y una herramienta de línea de del proyecto basándose en los parámetros
de ello, hay que concentrarse en definir el comandos con una interfaz de usuario grá- de tiempo, coste y recursos utilizados.
mayor número posible de tareas. Esto se fica para KDE. Taskjuggler planifica de
puede llevar al nivel de detalle que se forma autónoma las tareas individuales y Planificando
resuelve las situaciones conflictivas, por El siguiente paso consiste en introducir las
Tareas Detalladas tareas individuales en Taskjuggler. El pro-
Instalación grama tiene su propio editor para intro-
Preparar los accesorios a reemplazar
ducir las tareas (Figura 1).
1. Comprobar las tuberías del agua El código fuente de Taskjuggler está Cuando defina un proyecto nuevo,
2. Comprobar el calentador disponible para descargarse desde el primero debe usar el editor para definir los
sitio web [1]. Para compilar el programa,
3. Realizar las reparaciones datos del programa como el ProjectID (una
se necesitan las bibliotecas de KDE
4. Quitar los accesorios a reemplazar descripción del proyecto que incluye infor-
(kdelibs-dev, kdelibs-devel, o algo simi-
mación del marco temporal de trabajo), la
Quitar los accesorios antiguos lar). El paquete está comprimido con
bzip2, por ello se necesita la opción -j de fecha actual, el formato de la hora y la
1. Cortar el agua
tar para poder descomprimirlo: moneda. Las entradas para nuestro
2. Quitar los muebles proyecto de reforma del cuarto de baño
tar xfj taskjuggler-2.1.tar.bz2
3. Quitar la bañera son las siguientes:
En el directorio taskjuggler-2.1, hay que
4. Quitar la ducha
ejecutar ./configure. A continuación con
5. Quitar los azulejos project bare "Reforma Baño" "1.0"
make y su -c 'make install' se compila e
6. Quitar las lozas del suelo instala el programa. 2005-07-01 2005-08-30 {
now 2005-07-11

34 Número 14 WWW.LINUX- MAGAZINE.ES


Taskjuggler • PRÁCTICO

timeformat "%Y-%m-%d" otras (factor 0.5). Posteriormente se


currency "EUR" puede ejecutar esta macro en el contexto
scenario plan "Plan" { de una subtarea entrando
scenario delayed ${allocate_workers}. En el siguiente paso
"Retraso" vamos a definir los recursos del proyecto:
}
} flags team
resource wo "Mano de obra" {
resource wo1 "fontanero"
Listado 1: Subtareas del resource wo2 "yo"
Editor Taskjuggler resource wo3 "electricista" Figura 2: Un diagrama de Gantt muestra la
01 task Bare "Reforma Baño" { flags team progresión cronológica de las tareas y las
02 task repfit "Reemplazar } subtareas.
accesorios"
03 task chkwat "Comprobar Esto agrupa las manos de obra para crear
tuberías de agua" un equipo, mientras que al mismo resource wo1 "fontanero"
04 task chkhtg "Comprobar tiempo asigna a la gente a las etiquetas { rate 100.0 }
calentador" wo1 a wo3. Si se necesitan añadir más
05 task rep "Reparar" detalles para los miembros de las manos Después de terminar con esta
06 task cln "Limpiar" de obra, simplemente pueden añadirse preparación, finalmente, se pueden
07 } estos datos a la línea de la persona impli- introducir y planificar las tareas individ-
08 task oldfit "Quitar accesorios cada. Por ejemplo, nuestro electricista uales:
antiguos" está de vacaciones desde el 1/8/05 al 10/
09 task newfit "Instalar 8/05. task Bare "Reforma Baño" {
accesorios nuevos" task repfit U
10 task fini "Terminado" Listado 2: Subdividiendo "Reemplazar accesorios"
11 } las tareas task oldfit U
"Quitar accesorios antiguos"
01 task repfit "Reemplazar
task newfit U
accesorios" {
Costes "Instalar accesorios nuevos"
02 task chkwat "Comprobar
Una de las principales ventajas de task fini "Terminado"
tuberías de agua" {
Taskjuggler es la habilidad de manejar }
03 effort 1d
costes y realizar cálculos sobre los costes.
04 allocate wo2
Esto permite controlar el presupuesto En el lenguaje del editor de Taskjuggler, la
05 }
durante el proyecto de la reforma del palabra reservada task identifica una
06 task chkhtg "Comprobar
cuarto de baño y proporciona la posibili- tarea. Cada tarea comprende un identifi-
calentador" {
dad de recalcular el proyecto cuando sea cador, por ejemplo Bare y una descripción
07 effort 1d
necesario. El siguiente paso es definir los como “Reforma Baño”. Las subtareas de
08 allocate wo2
factores de coste introduciendo rate una tarea se ponen entre llaves. Basán-
09 }
120.0. donos en nuestra especificación original
10 task rep "Reparar" {
Esta entrada define el salario diario del para el proyecto de la reforma, la cuarta
11 effort 2d
trabajador más caro. Taskjuggler dispone subtarea para la tarea principal “Reforma
12 allocate wo1, wo3
de una solución elegante para asignar los Baño” corresponde a las siguientes:
13 }
factores de coste basado en macros que
14 task cln "Limpiar" {
pueden ser asignados posteriormente. "Reemplazar accesorios",
15 effort 1d
Esta solución ahorra tiempo a la hora de "Quitar accesorios antiguos",
16 allocate wo2
introducir los datos. La macro para nue- "Instalar accesorios nuevos" and
17 }
stro proyecto tiene el siguiente aspecto: "Terminado" zu.
18 }

macro allocate_workers [ Ahora se pueden refinar las subtareas.


allocate wo1 resource wo3 U En el Listado 1 se detallan las subtareas
allocate wo2 { load 0.5 } "electricista" { vacation U para la subtarea “Reemplazar acceso-
allocate wo3 2005-08-01 - 2005-08-10 } rios”.
] Hay que repetir esto mismo para cada
Supongamos que el fontanero tiene que subtarea. Para completar la agenda del
Una única macro cubre las manos de pensarse de nuevo la oferta que hizo y proyecto, aún necesitamos unos cuantos
obra desde wo1 a wo3. La entrada load pide un sueldo diario algo mayor; se detalles más, como el tiempo necesario
0.5 muestra que el salario diario para la puede introducir el sueldo diario individ- para cada tarea y el trabajador que la lle-
etiqueta wo2 es tan sólo la mitad de las ualmente como sigue: vará a cabo.

WWW.LINUX- MAGAZINE.ES Número 14 35


PRÁCTICO • Taskjuggler

Fecha Tope camente. Por ejemplo, !chkwat es el punto


Empecemos con el primero de estos ele- final de la tarea “Comprobar tuberías del
mentos. “¿Cuánto tiempo dura cada agua”. Un signo de exclamación indica un
tarea?”. El editor de Taskjuggler tiene una punto temporal relativo dentro de una
palabra reservada especial para esto, por tarea (la tarea “Reemplazar accesorios” en
ejemplo, effort especifica el número de este caso). Dos signos de exclamación
hombres-días, seguido de las asignaciones definen un punto temporal relativo dentro
de la mano de obra (recurso) para la tarea. del proyecto total, es decir, de la tarea
La palabra reservada length define la principal. Basándonos en esto, se pueden
duración de la tarea en días de trabajo y introducir las dependencias cronológicas
duration realiza lo mismo pero para los para todas las subtareas y para las tareas Figura 3: Taskjuggler calcula el coste de un
días del calendario. principales. proyecto basándose en los datos de entrada,
Supongamos que se les ha pedido al Cuando haya finalizado, hay que pre- como las horas asignadas a cada trabajador.
fontanero y al electricista que envíen sus sionar F9 para terminar con las entradas.
ofertas de trabajo y que estimen el tiempo Taskjuggler comprueba los datos para ver ejemplo, si un trabajador se pone
previsto de duración de cada parte de la si son sintácticamente correctos antes de enfermo. Una tarea debería finalizar lo
reforma. Los detalles para la tarea “Reem- continuar con los cálculos del proyecto. más rápidamente posible desde que se
plazar accesorios” podrían parecerse al Luego podrán verse las interdependencias tenga prevista. Por ejemplo, cuando com-
ejemplo del Listado 2. de las tareas en el diagrama de Gantt, que pruebe las tuberías del agua y el calenta-
¿Se acuerda de los identificadores de la muestra el instante en el que empiezan y dor, podría encontrarse que todo está cor-
mano de obra? wo1 es el fontanero, wo2 es acaban las tareas. Un ejemplo del dia- recto.
usted y wo3 es el electricista. La tarea grama de Gantt se muestra en la Figura 2. Se puede usar el editor de Taskjuggler
“Comprobar tuberías del agua”, que se la para modificar la agenda y reflejar el
ha asignado a usted mismo, le llevará un De Hombres y Ratones estado actual. Hay que extender el
día. Y lo mismo es aplicable a la tarea Incluso la mejor planificación puede salir parámetro de tiempo para compensar la
“Comprobar calentador”. También se le mal y una herramienta de gestión de falta del trabajador por culpa de la enfer-
han asignado dos días al fontanero y al proyectos que no permita realizar cam- medad. Si resulta que la reparación es
electricista para que realicen sus trabajos. bios para reflejar la situación actual sería innecesaria, simplemente se puede borrar
Cuando estén hechos, deberán volver para inútil. Un ejemplo de cambio podría ser la tarea. Hay que añadir cualquier cambio
terminar con las tareas de ajuste y una escasez de recursos imprevista, por de los parámetros de los recursos, del
limpieza del cuarto de baño; de nuevo, tiempo y del coste usando el editor, y
esto le llevará un día. Listado 3:Especificando el decirle a Taskjuggler que recalcule el
La palabra reservada depends especifica proyecto completo.
orden cronológico
el orden cronológico y define las depen- Como se han utilizado consciente-
dencias entre las tareas. Como queremos 01 task repfit "Reemplazar mente tiempos relativos, Taskjuggler no
que Taskjuggler calcule la duración, accesorios" { tendrá problemas para recalcular la
vamos a utilizar especificaciones de tiem- 02 task chkwat "Comprobar agenda del proyecto. Pero si borra una
pos relativos: “La Tarea 2 podrá empezar tuberías de agua" { tarea de la que otras dependen, habrá que
cuando la Tarea 1 haya finalizado”. Eché- 03 effort 1d eliminar estas dependencias manual-
mosle un vistazo a la tarea “Reemplazar 04 allocate wo2 mente para conseguir que funcione.
accesorios” para una mejor comprensión 05 depends Bare.start
del principio subyacente. El orden 06 } Conclusiones
cronológico es el siguiente: La tarea “Com- 07 task chkhtg "Comprobar El editor intuitivo de Taskjuggler propor-
probar tuberías del agua” es el punto de calentador" { ciona a los usuarios la posibilidad de
partida del proyecto. Ésta va seguida de 08 effort 1d describir un proyecto y todas sus tareas
“Comprobar calentador”. Las reparaciones 09 allocate wo2 componentes. Taskjuggler ayuda a visu-
pueden empezar cuando las dos tareas 10 depends !chkwat alizar las entradas en forma de diagrama
precedentes “Comprobar tuberías del 11 } de Gantt y facilita una colección de
agua” y “Comprobar calentador” hayan 12 task rep "Reparar" { informes de costes muy útil y de los
sido terminadas. Y la limpieza no puede 13 effort 2d recursos planificados. Este ejemplo sim-
comenzar hasta que las reparaciones 14 allocate wo1, wo3 ple de reformar un cuarto de baño
hayan sido completadas. En el editor de 15 depends !chkwat, !chkhtg demuestra los elementos más críticos de
Taskjuggler esto se parecerá al Listado 3. 16 } la planificación de un proyecto y muestra
Bare.start es el punto de partida para el 17 task cln "Limpiar" { cómo Taskjuggler está bien equipado para
proyecto de la reforma del cuarto de baño. 18 effort 1d manejar proyectos a gran escala. ■
Su parámetro .start fue creado automáti- 19 allocate wo2
camente por Taskjuggler. Las entradas 20 depends !rep Tareas Básicas
restantes describen puntos temporales rel- 21 }
[1] Taskjuggler: http://www.taskjuggler.org
ativos, que Taskjuggler evaluará automáti- 22 }

36 Número 14 WWW.LINUX- MAGAZINE.ES


LINUX USER • Desktopia

Trayer
Trayer

BANDEJA DE
ENTRADA

Algunos applets depositan iconos en la barra de tareas de la bandeja

del sistema de KDE o GNOME. Si no se utilizan ninguno de estos dos

administradores de ventanas, pero se quiere disponer de esta fun-

cionalidad, tal vez Trayer sea la respuesta. POR HAGEN HÖPFNER

L
os administradores de ventanas tales Trayer podría ser muy útil si se desean Los usuarios con Suse Linux 9.3
como Fluxbox [1] ofrecen sus mantener esas caracteristicas tan venta- pueden sufrir algunas dificultades en la
propias interfaces para applets KDE josas, incluso en el caso de que se use un construcción de los binarios, como
o GNOME. Estos pequeños programas se administrador de ventanas alternativo. ocurre con los ficheros de encabeza-
sitúan en la bandeja del sistema de la barra Esta herramienta permite añadir una miento desde los paquetes de desarrollo
de tareas, añadiendo así todo tipo de fun- barra de tareas en cualquier parte del que, con esta distribución ya, no con-
ciones prácticas. Por ejemplo, el demonio escritorio, ofreciendo un espacio consi- tienen las definiciones requeridas [3].
de alarma de KDE le sigue la pista a sus derable para depositar los applets de Para remediarlo, es necesario actualizar
citas, el applet de KMail controla su buzón bandeja. El programa está basado en la librería GTK2. Suse Linux almacena la
de correo, y algunos programas, que fbpanel de Anatoly Asviyan [2]. Maciel librería en un paquete adicional de
incluso no forman parte de las distribu- Delmanowsky extrajo los componentes
ciones principales de escritorio, añaden sus de bandeja del programa de arranque y Añadidos para Suse 9.3
propios applets de acceso rápido. desarrolló una aplicación independiente.
Algunos paquetes de programa de Suse
Instalación añaden versiones actualizadas de unas
cuantas aplicaciones a la distribución.
Si se está interesado en probar Trayer y
Para instalar, es necesario añadir una
no se usa Debian, será imprescindible
nueva fuente de instalación a YaST. Los
compilar el código fuente. Tanto el paquetes GTK2 actualizados se encuen-
código fuente para Trayer como el tran disponibles en el servidor en
paquete Debian preconstruído se ftp-stud-fht-esslingen.de. Especifique el
encuentran disponibles en [3]. directorio
Suponiendo que se ha instalado el gtk2, /pub/Mirrors/ftp.suse.com/pub/suse/7i38
gdk-pixbuff y los paquetes de desarrollo 6/suplementary/GNOME/update_for_9.3/
respectivos, se puede construir e instalar yast-source/. Tras añadir el código de
la aplicación introduciendo make && su instalación, los nuevos paquetes se
-c "make install". Obsérvese que make encontrarán disponibles en el módulo
de admnistración de software de YaST.
install no copia el binario a /usr/bin. Si
Se selecciona el paquete gtk2-devel para
se prefiere instalar en /usr/local/bin, es
la instalación. Entonces YaST resolverá
preferible omitir el comando de insta- automáticamente cualquier dependen-
lación y copiar manualmente el fichero cia. Para volver a la versión GTK2 previa
trayer a la carpeta en la que se almace- sin ningún problema, deshabilite las
Figura 1: Los applets de Gnome y KDE resi- nan los binarios compilados manual- fuentes añadidas. YaST accederá luego a
den en la bandeja. mente. los paquetes originales.

78 Número 14 WWW.LINUX- MAGAZINE.ES


Desktopia • LINUX USER

para el parámetro --height. Para


establecer el espacio vacío interior
entre el borde de la caja de Trayer y el
primer icono de la bandeja, se deberá
usar la opción --padding en combi-
Figura 2: Las opciones de la línea de comandos ayudan a los usuarios a especificar la posición nación con un valor determinado en
en la pantalla y el modo de transparencia de Trayer. pixels.
Puede usarse un método similar para
modificar la apariencia de Trayer. La
opción de transparencia, junto con las
opciones --alpha y --tint, juegan un
papel muy importante. La primera
opción define el grado de transparen-
Figura 3: Trayer también funciona con Blackbox, tal y como puede apreciarse si se observa la cia; pueden especificarse valores entre
esquina izquierda inferior de la pantalla. 0 y 255. --tint seguido de un nombre de
color, por ejemplo --tint blue pinta el
fondo del escritorio con el color selec-
GNOME para la versión 2.7.5. Tras --transparent true --edge top --distance 5 cionado.
actualizar el sistema (ver el cuadro ti- --widthtype pixel --width 100 en Win- El comando trayer -h presenta una
tulado Añadidos de Suse 9.3), debería dowMaker. Los parámetros --distance 5 lista completa de parámetros. También
ser posible la coompilación de Trayer. y edge top envían a Trayer a un lugar a se dispone de más ayuda en el fichero
Después de haberlo hecho, es una idea cinco pixels desde el borde superior de README, el cual se proporciona con el
excelente sustituir otra vez las librerías la pantalla. transparent true significa código fuente. Este fichero ofrece
GTK2 con las versiones originales. En que Trayer permitirá que se vea el descripciones incluso más detalladas
nuestra máquina de laboratorio, la fondo de la pantalla del escritorio a su de las opciones individuales.
nueva versión nos causó innumerables través, y los dos últimos parámetros
problemas con aplicaciones basadas en widthtype pixel --width 100 crean una Conclusiones
GTK, tales como Thunderbird, Firefox bandeja de programa con un ancho de Trayer le permite disponer de los applets
y Gimp. 100 pixels. Los valores left, right y bot- de KDE y de GNOME en casi cualquier
A continuación puede arrancarse el tom para el parámetro edge envían a administrador de ventanas que se elija.
programa mediante el comando trayer Trayer a la izquierda, derecha o a la Desafortunadamente, Trayer no funciona
para que se puedan insertar en la parte inferior de la pantalla respectiva- con todos los administradores de ven-
nueva bandeja los applets de KDE y mente. tanas. Funcionó bien con WindowMaker
Gnome, tal y como se aprecia con el Si se desea que Trayer esté en la y IceWM, pero aunque fuimos capaces
applet de Skype mostrado en la Figura esquina izquierda de la parte inferior de insertar el icono de la bandeja de
1. de la pantalla, hay que usar las si- Skype sobre QVWM y Blackbox, algunas
guientes opciones: --edge bottom--align aplicaciones de KDE como el icono de
Posición, Escala, left (Figura 3). Si se prefiere mover la bandeja del plugin Licq de KDE no fun-
Modificación barra a la derecha, se pone cionaron. Los administradores de ven-
Uno de los principales beneficios de --align=right. Si no se especifica nada, tanas que dibujan marcos alrededor de
Trayer es que puede situarse la bandeja Trayer se situará en el centro, lo cual, cada ventana (TWM, por citar un ejem-
en cualquier lugar que se desee. evidentemente hace que la opción plo) son teóricamente idóneas para usar-
Esta es una característica muy útil, --align=center sea redundante. las con Trayer, aunque un marco alrede-
así se evita que oculte cualquier ele- En lugar de especificar un valor para dor de la bandeja no es la idea que tienen
mento del administrador de ventanas. el ancho en pixels, puede especificarse algunos de una aspecto elegante. ■
Si el administrador de ventanas posee un porcentaje del ancho de la pantalla.
una barra de tareas en la parte inferior Para hacerlo, el programa ofrece la
de la pantalla, puede colocarse Trayer opción widthtype percent. Usándola en RECURSOS
en la parte superior o a un lado. Si se combinación con width 50 se le está
usa WindowMaker, el cual sitúa los indicando a Trayer que ocupe la mitad [1] fbpanel: http://fbpanel.sourceforge.
docks y clips en las esquinas de la pan- del ancho de la pantalla. La opción net/
talla, el espacio entre ambos es un --widthtype request ofrece una solución [2] Trayer: http://developer.berlios.de/
buen lugar para Trayer. Las opciones más elegante para la definición de la projects/showfiles.
de la línea de comandos le dicen al anchura. Dicha opción le dice que php?group_id=1595
programa en qué parte del escritorio se ocupe exactamente la cantidad de [3] Suse Linx y GTK modificado: http://
desea que Trayer “acampe” y qué tipo espacio que necesita para presentar los lists.gnu.org/archive/html/
de apariencia se prefiere. applets que se están ejecutando. Sin emacs-pretest-bug/2005-07/
Por ejemplo, la Figura 2 muestra el embargo, las opciones relativas a la msg00066.html
efecto de introducir el comando trayer altura se limitan a valores en pixels

WWW.LINUX- MAGAZINE.ES Número 14 79


Wlassistant • PRÁCTICO

Wlassistant nos ayuda a conectarnos a redes WLAN

EL MAYORDOMO
INALÁMBRICO
Los usuarios de ordenadores portátiles que se mueven entre

redes inalámbricas necesitan una herramienta simple y prác-

tica para conectarse. Una herramienta de KDE llamada Wlas-

sistant ayudará a encontrar la señal. POR MARCEL

HILZINGER

redes inalámbricas y iwlist. El bit setuid permite a un usuario


nos proporciona normal la ejecución de programas con
una lista. privilegios de root.
Podemos Si se quiere evitar tener que otorgar
pulsar estos permisos, puede ejecutarse el pro-
para selec- grama como root tecleando kdesu wlas-
cionar sistant. Los usuarios de Suse Linux
nuestra red verán un mensaje de error señalando
preferida. El asistente que Wlassistant no ha encontrado los
se encarga de establecer programas adecuados (véase la Figura
la conexión, y ya tene- 2). Para resolver este problema, se selec-
mos vía libre. ciona Configure | Paths y se introducen
las siguientes rutas para iwconfig e
Instalación y iwlist:
Configuración */usr/ sbin/ iwconfig
Wlassistant es un programa relativa- */usr/ sbin/ iwlist
mente nuevo que no se encuentra Si se dispone de Fedora Core 3 o
disponible en la mayoría de las grandes Mandriva 10.2, también será necesario

L
a tarea de configurar el acceso a distribuciones. Pero no hay de qué preo- modificar las rutas para los archivos del
una red inalámbrica no es algo cuparse. Si nuestra distro no incluye
trivial, incluso para los usuarios Wlassistant, podemos navegar hasta [1]
de las grandes distribuciones. Aún en el para bajarnos la última versión desde
caso de que intentemos conectarnos a Internet.
nuestra propia WLAN pueden La primera vez que se ejecuta el pro-
sobrevenirnos problemas. ¿Qué ocurre si grama, presionando [Alt+F2] y teclean- Figura 1: La primera vez que se ejecuta,
nuestra configuración de red cambia o do wlassistant, se abrirá una ventana Wlassistant puede asignar permisos para
tenemos que acceder a otra red inalám- para indicar que un usuario normal no los programas necesarios.
brica con una configuración diferente? está autorizado para ejecutar los progra-
En un mundo lleno de hotspots en mas necesarios (véase Figura 1). Puede
aeropuertos y cibercafés, los usuarios de pulsarse sobre Yes para indicarle a
redes inalámbricas necesitan un método Wlassistant que pida la contraseña de
sencillo para conectarse a redes nuevas. root y configure automáticamente los Figura 2: Puede que sea necesario algo de
En casos como este, la herramienta permisos de acceso. El programa configuración extra. En Suse Linux, Wlassis-
KDE Wlassistant puede ser de gran entonces fija el bit setuid para las he- tant falla a la hora de encontrar los coman-
ayuda. Wlassistant busca la señal de rramientas dhcpcd, ifconfig, iwconfig y dos necesarios para configurar la conexión.

WWW.LINUX- MAGAZINE.ES Número 14 37


PRÁCTICO • Wlassistant

Administración de En nuestros tests, tuvimos algunos


Claves problemas con la encriptación WEP, y
La administración de claves es Wlassistant no lograba establecer la
uno de los puntos fuertes de conexión. Pero, después de introducir la
Wlassistant. Muchos puntos de siguiente orden como root:
acceso públicos usan claves
WEP para proteger su red de iwconfig eth0 enc key
accesos no autorizados. Si se
selecciona una conexión para configurar la encriptación, el asis-
Figura 3: Wlassistant muestra las redes que ha loca- encriptada, aparece un cuadro tente wireless no tuvo el menor proble-
lizado y su intensidad de señal. El candado indica una pidiendo que se introduzca la ma en establecer la conexión. Un
conexión encriptada. clave WEP de la conexión. Tras pequeño rodeo a través de la línea de
introducirla se pulsa el botón comandos también nos ayudó a configu-
programa. Se selecciona Configure | OK. Si lo habitual es moverse por distin- rar las claves hexadecimales. Si se ha de
Paths si hay que ejecutar el programa tas redes encriptadas, puede que que- ejecutar este comando, se reemplaza
como usuario root. En este caso, se cam- ramos guardar las claves de las redes que eth0 con la entrada que muestra
bia Dhcpcd a /sbin/dhclient. Sin embar- visitamos. Para guardar una clave, se Wlassistant en la columna Device de la
go, el método que sugiere Wlassistant es pulsa en Configure | WEP Keys. ventana principal, y se teclea la clave
mucho más fácil, por lo que puede que Es preciso asignar un nombre a cada WEP correcta en lugar de key, por ejem-
simplemente se prefiera dejar que el clave. El nombre de cada red WLAN (su plo s:secret1234567 para una clave
asistente inalámbrico se ocupe de con- ESSID) es una buena opción para asig- ASCII.
figurar los permisos de acceso. narlo. Wlassistant usa automáticamente
la clave con el mismo nombre para Redes Problemáticas
Buscar y Conectar acceder a la red. Los nombres y las Wlassistant ejecuta un cliente DHCP
Tras terminar con la configuración claves deben estas separados por un cuando establece una conexión. El
necesaria, se puede pulsar sobre doble dos puntos (véase la Figura 4). Las cliente DHCP intenta obtener una direc-
Rescan para indicarle a Wlassistant que claves usan normalmente un formato ción IP del otro extremo de la conexión.
muestre las redes WLAN que ha descu- hexadecimal (por ejemplo, Si simplemente se está configurando una
bierto (véase la Figura 3). Si el progra- HOTSPOT::3BFA1658F26F65BB101502224 conexión a un ordenador de un amigo
ma ha encontrado varias redes, debería 9 para una clave de 128 bits). Si se ha de con WLAN, no puede esperarse que él
elegirse la red con mayor nivel de introducir una clave en formato ASCII, tenga un servidor DHCP.
señal. Wlassistant usa estrellas amari- se teclea s: antes de la clave. Por ejemp- En este caso, será preciso configurar el
llas para indicar la calidad de señal. lo: HOME::s:secret1234567. modo ad-hoc. Wlassistant no muestra
Cuantas más estrellas tenga un red, Wlassistant verifica la sintaxis de este tipo de conexiones por defecto. Para
más calidad tendrá su señal. nuestras claves. Dicha verificación hace indicarle que muestre todas las redes ad-
La encriptación es otro criterio de imposible, teóricamente, introducir una hoc, es necesario seleccionar Configure |
selección de punto de acceso. La he- clave con formato incorrecto. Se usa General y desmarcar Do not list Ad-Hoc
rramienta de KDE muestra un candado Default WEP mode para especificar el networks. Una vez se haya hecho esto,
en la columna WEP para las cone- modo de autenticación, que en principio pueden configurarse la dirección IP, más-
xiones encriptadas. Será necesaria la está en modo Open. Si se selecciona cara de red y dirección de difusión en
clave adecuada para acceder a estas Restricted, la interfaz WLAN sólo acep- Configure | Interface.
redes. tará conexiones encriptadas y autenti- Wlassistant presenta también proble-
La columna Mode indica si la red es cadas. Como este método es fácil de mas con tarjetas WLAN que necesitan
Managed o Ad-Hoc. Las redes del tipo hackear, no tiene demasiado sentido las herramientas Linux Wlan [2]. Esto
Managed soportan accesos simultáneos cambiar la opción Open por defecto. incluye la mayoría de los sticks USB.
por múltiples máquinas, mientras que Debido a que estas intefaces no pueden
la conexión ad-hoc se realiza sólo entre controlarse con comandos iwconfig, la
dos máquinas. herramienta de KDE es incapaz de
Para conectarse a un punto de acceso advertirla. Hay que destacar, sin embar-
o a otra máquina, se pulsa obre ella. go, que el soporte para este tipo de
De esta manera Wlassistant inicia la interfaces está en la lista to-do del autor
conexión. El programa muestra un del programa. ■
mensaje en la parte inferior de la ven-
tana para informar del estado de la RECURSOS
conexión. Si la conexión funciona, el
mensaje será Connection with "nom- [1] Página del proyecto: http://
bre_red" successfully established, sien- Figura 4: Este asistente para redes inalám- wlassistant.sourceforge.net
do “nombre_red” el nombre ESSID de bricas tiene buenas características de [2] Wlan Tools: http://www.linux-wlan.org
la red seleccionada. administración de claves.

38 Número 14 WWW.LINUX- MAGAZINE.ES


PORTADA • Xnview

PUNTOS DE VISTA
Xnview es una herramienta útil para el visionado y la edición de imágenes que es gratuito

para uso privado. Mostraremos algunas de las características más importantes de este

programa. POR THOMAS LEICHTENSTERN

N
uestra colección de imágenes digi- derecha y la previsualización de la imagen Sheet. En este caso, Xnview no crea un
tales sigue creciendo, pero aún no abajo. Haciendo clic en el thumbnail se sitio web sino un nuevo contenedor de
disponemos de la herramienta muestra la imagen correspondiente. El imágenes con los thumbnails de los origi-
adecuada para la gestión y edición de menú View | Layout permite cambiar la nales seleccionados. Haciendo clic en el
dichas imágenes. Los programas especia- configuración del explorador o el tamaño icono de la derecha de HTML aparecerá
lizados abundan, pero proporcionan más del thumbnail. un cuadro de diálogo donde se puede
de lo que el usuario necesita y tantos El fichero histórico es una ayuda útil de especificar cómo desea que se muestren
detalles pueden llevar a la confusión. Si se navegación; está accesible mediante el los ficheros y la información (tamaño del
está buscando una herramienta práctica menú File. Para comprobar el directorio fichero o nombre) que proporcionará la
para el manejo de imágenes, Xnview [1] histórico, hay que hacer clic en el icono de hoja de contacto.
puede ser la respuesta. la derecha de la barra de direcciones. Este
Xnview lee unos 400 formatos de imá- icono también tiene la función de Entrando en Detalles
genes y escribe alrededor de 40, es bas- favoritos, que permite almacenar las direc- Si las imágenes contienen meta-informa-
tante simple para uso personal. Los pre- ciones a las que se necesita acceder con ción en formato EXIF o IPTC, ésta se
cios (en Euros) para uso comercial se frecuencia. mostrará en un pequeño cuadro en la
muestran en la Tabla 1. esquina inferior derecha del thumbnail.
Es tanto un explorador de imágenes Colecciones de Imágenes EXIF [2] indica los datos de los parámetros
como un visor con grandes opciones de Xnview ofrece dos características para de la cámara usada para tomar la foto, por
edición. El paquete también viene con un crear colecciones de imágenes. Haciendo ejemplo, información sobre el diafragma,
convertidor por lotes, una característica de clic en el botón HTML en la barra de he- el tiempo de exposición o la resolución.
presentación de fotografías y un generador rramientas se crea un sitio web con los IPTC [3] contiene datos como el género, el
de thumbnails, que es útil si se desea thumbnails de las imágenes selec- autor, el origen o las notas de copyright.
hospedar imágenes en un sitio web. El cionadas. Se puede usar el cuadro de diá- Dichos datos se usan principalmente para
programa lee y escribe meta información logo para especificar parámetros tales la administración de los archivos.
en formato IPCT y también lee datos EXIF, como el tamaño del thumbnail, el número Programas como Imgseek pueden catego-
es decir, la información técnica de una de columnas y líneas y el espacio entre rizar las imágenes basándose en esta
imagen. ellas. Para facilitar la organización, información.
Xnview crea dos subcarpetas, una con la Para leerla, hay que pulsar el thumbnail
Explorador de Imágenes imagen original y la otra con los thumb- con el botón derecho del ratón, y se selec-
Cuando se ejecuta, Xnview viene con un nails almacenados. Puede actualizarse la ciona Properties… del menú desplegable.
explorador de imágenes (Figura 1), que vista directamente en el servidor web. En la nueva ventana que aparece, hay que
está dividido en tres marcos: el árbol de La segunda característica sigue un prin- pulsar en la solapa con la información que
directorios, los thumbnails, arriba a la cipio parecido a la creación de Contact se desee ver en la parte superior de la ima-

18 Número 14 WWW.LINUX-MAGAZINE.ES
Xnview • PORTADA

gen. El elemento Edit IPC… del menú puede entrar directamente en el visua-
desplegable muestra la información IPTC lizador escribiendo Xnview
en modo de edición. nombre_de_fichero en la línea de coman-
dos.
Todo en uno
Las imágenes recién obtenidas de una Sólo para tus ojos
cámara tienen normalmente nombres tan Los botones de las flechas de la caja de
poco intuitivos como IMG_0815.JPG. herramientas permiten al usuario nave-
Xnview dispone de una herramienta de gar por las imágenes de un directorio. Se
renombre por lotes (Figura 2) para asig- puede seleccionar el tamaño de la ima-
nar nombres más significativos. Hay que gen a mostrar en View | Auto Image Size.
seleccionar todas las imágenes que se El menú proporciona opciones para Figura 1: El Navegador de Imágenes muestra
desean renombrar, luego se pulsa con el escalar la imagen al tamaño de la ven- una previsualización del thumbnail actual-
botón derecho del ratón y se selecciona tana y viceversa. La opción solamente mente seleccionado.
Batch rename… del menú contextual. Se afecta a la imagen actual. Para escalar
puede establecer un prefijo para todas las cualquier imagen que se muestre en el La ayuda Display Color Information
imágenes en la parte izquierda del cuadro visor, hay que seleccionar Tools | Options (Mostrar Información del Color) es una
de diálogo. Usemos Vacaciones# Start:0, para obtener la ventana de configu- característica que los diseñadores web y
Step:1 como ejemplo. Esto le indica al ración; luego se pulsa en View en la los artistas gráficos agradecerán. El ele-
programa que renombre todos los columna de la izquierda y se establece mento Display Color Information en View
ficheros basándose en el patrón Auto Image Size: con el valor deseado. habilita la característica que muestra los
Vacaciones0.jpg, Vacaciones1.jpg,… Si se Si se tiene un ratón con rueda, la selec- valores RGB y hexadecimales del color que
desea estandarizar el caso, pueden ción Mouse permite especificar si se se encuentran bajo la posición del cursor
establecerse los valores preferidos en desea utilizar la rueda para hacer scroll o del ratón. Desafortunadamente, la ventana
Filename case. para hacer zoom. Por defecto, los pasos es visible a través de cualquier otra ven-
del zoom son bastante bruscos y puede tana que esté por delante de la que se está
Fotografiando la Pantalla ser que se desee ajustar este parámetro. intentando ocultar y esto puede hacer que,
Xnview dispone de una utilidad para cap- Para ello, se pulsa en View en el cuadro después de un rato, el diseñador se ponga
turar la pantalla. Pulsando en el símbolo de diálogo Options y se habilita Change nervioso. No se sabría decir si esta persis-
de la cámara de la caja de herramientas se zoom in fixed steps. Entonces se intro- tencia es una característica o es un error.
obtiene el cuadro de diálogo de captura. duce el valor (en porcentaje) en el
Además de las aplicaciones individuales, cuadro para definir el paso del zoom.
que se organizan en una lista, se puede El elemento High zoom quality le indi-
capturar la pantalla completa, que se ca a Xnview que recalcule la imagen a
muestra en el visor. Desafortunadamente, ampliar. Esto hace que se obtengan ma-
la herramienta no proporciona la habili- yores niveles de detalles en factores altos
dad de ocultar el cuadro de diálogo de de ampliación. Como punto negativo, es
captura y esto hace que sea poco útil. necesario disponer de un hardware
razonablemente rápido para beneficiarse
El Visor de Imágenes de esta característica: una máquina lenta
Haciendo doble clic en un thumbnail, se puede tardar unos minutos en recalcular
abre la imagen correspondiente en el la imagen.
visor de imágenes (Figura 3). La imagen Pulsando en Full Screen de la caja de Figura 2: El Batch renombra las característi-
es una nueva instancia; viene con fun- herramientas o pulsando el atajo de cas permitiendo a los usuarios asignar nom-
cionalidades extendidas y con botones teclado [CTRL+F], pasa el programa a bres de archivos significativos a varios
que no aparecen en el navegador. Se pantalla completa. A continuación se archivos.
pueden utilizar los botones derecho e
Tabla 1: Licencias izquierdo del ratón para navegar a la Retocando las Imágenes
Comerciales de Xnview imagen siguiente o a la anterior. [Esc] El programa es francamente bueno cuan-
Número de Licencias Coste por cierra la vista a pantalla completa. do se necesitan retocar imágenes digitales.
Usuario Xnview ofrece la posibilidad de realizar Todas la herramientas que se necesitan
1 licencia 26.00 EUR una presentación para poder ver todas las para ello se encuentran ocultas en el menú
2-9 licencias 23.00 EUR imágenes en sucesión una tras otra. Para Image y Filter. Como en otras herramien-
10-19 licencias 20.00 EUR ejecutar la presentación hay que selec- tas de retoque fotográfico, los elementos
20-49 licencias 17.00 EUR cionar View | Slide Show… y luego, en el de Filter definen operaciones para
50-99 licencias 9.50 EUR diálogo que aparece, podremos selec- suavizar la imagen, mientras que Image
100-499 licencias 6.00 EUR cionar las imágenes o directorios que se contiene acciones que afectan al tamaño,
500-999 licencias 3.80 EUR desea queden incluidos. el contraste o la profundidad de color.
Más de 1000 licencias 3.50 EUR

WWW.LINUX-MAGAZINE.ES Número 14 19
PORTADA • Xnview

campo Directory para especificar el nom-


bre del directorio. Si no se selecciona un
directorio, Xnview escribirá los nuevos
ficheros en el directorio original.
En Directory se selecciona el formato
de imagen deseado del menú desple-
gable. El botón Options… permite especi-
ficar opciones como el nivel de compre-
sión. Ahora se abre el cuadro de diálogo
de selección de filtros pulsando en
Advanced Operations… En la lista de la
Figura 3: Algunos iconos del Image Viewer Figura 4: Ajuste del brillo y contraste en izquierda, se selecciona resize y
no son intuitivos. La falta de documentación Xnview. Brightness. Para realizar la selección de
nos lleva a hacer pruebas de ensayo y error. múltiples entradas al mismo tiempo hay
Xnview también dispone de una utili- que pulsar [Ctrl]. Cuando se haya fina-
La opción Image | Resize hace exacta- dad para la reducción de los ojos-rojos y lizado, se pulsa sobre el botón con la
mente lo que se espera de ella. Si se necesi- retocar las fotografías realizadas con flecha hacia la derecha para aplicar la
ta convertir una imagen a un tamaño no flash. Como la función reduce cualquier selección.
estándar, se puede seleccionar un tamaño tono rojo de la imagen a un tono más Para ajustar la operación, hay que pul-
desde el desplegable Custom. Por otro oscuro, es necesario especificar de forma sar en la operación de la ventana del lado
lado, es posible introducir la altura y la precisa el área donde se desea aplicar la derecho. Un cuadro de diálogo aparece
anchura de la imagen en Screen Size en el herramienta. Se aconseja trabajar sobre en la parte de abajo de la ventana,
cuadro de diálogo. Para evitar las distor- cada ojo por separado y luego seleccionar mostrando las opciones de la operación
siones de la imagen, hay que habilitar la Image | Edit red eye correction para actual. Finalmente, para empezar la con-
opción Keep ratio. realizar los cambios. Si los resultados no versión, hay que pulsar Go.
El programa contiene una selección de son de nuestro agrado, con tan sólo pul- Se puede pulsar en el icono Save
ocho algoritmos diferentes para modificar sar el botón Undo se restaurará el estado Script… para salvar la configuración.
el tamaño de la imagen, desde Nearest original. Téngase en cuenta que el script almace-
Neighbor hasta Lanczos. Ésta es una nará las opciones seleccionadas pero no
opción que no proporcionan programas Procesamiento por Lotes los formatos y los directorios.
como Gimp ni Photoshop. Si se necesita aplicar los mismos efectos
Para ajustar el brillo y el color, hay que a varias imágenes, puede ser de gran Conclusiones
seleccionar Adjust | Brightness/Contrast/ ayuda la característica de Xnview de Muchas de las características de Xnview
Color Balance en el menú Image (Figura 4). procesamientos por lotes. Éste ayuda a y su soporte para los 400 formatos de
Se pueden utilizar los deslizadores para aplicar todas las funciones de Xnview y imágenes disponibles lo convierten en
ajustar los valores. Si se tiene habilitada la sus filtros a múltiples imágenes. una herramienta universal. Por otro lado,
opción Auto view al pie de la ventana, se Para modificar el tamaño y el brillo a el programa carece de una docu-
pueden monitorizar los efectos producidos varias imágenes, hay que empezar selec- mentación genuina, pero se puede nave-
por los cambios. cionando Tools | Multi convert… (Figura gar sin ningún problema por sus sencil-
Para rotar u obtener la imagen especular 5), y luego pulsar en Add… para añadir los, pero poco intuitivos controles.
de las imágenes con formato JPEG, hay las imágenes que se quieren procesar. Si Contiene algunos fallos menores, como
que seleccionar JPEG Lossless desea almacenar las imágenes en un la molesta ventana Display Information
Transformations. Los cambios se aplican a nuevo directorio, hay que utilizar el que se muestra por encima de cualquier
la imagen inmediatamente y son sin pérdi- otra, pero quizás, aún sea más irritante
das, lo que implica que se pueden repetir que la característica Undo tan sólo sea
las acciones múltiples veces sin que se vea capaz de deshacer la última acción. El
afectada la calidad de la imagen. programa también carece de la posibili-
A excepción de los cambios globales dad de “arrastrar y soltar” que permite a
como la conversión del color o el escalado, los usuarios mover imágenes desde un
para el retoque de la imagen disponible directorio al programa. ■
pueden aplicarse cualquiera de las her-
ramientas, más o menos, a una selección
RECURSOS
de la imagen. Para definir un cuadro con la
[1] Página web de Xnview: http://www.
selección de la imagen deseada será pre-
Xnview.com
ciso pulsar el botón izquierdo del ratón y
arrastrarlo. Los cuadrados en las esquinas [2] Especificación de EXIF: http://www.
exif.org/specifications.html
de la imagen permiten escalar la selección
actual. Pulsando en las tijeras de la caja de Figura 5: El convertidor por lotes de Xnview [3] Especificación de IPTC: http://www.
iptc.org/IIM/
herramientas se recorta la selección. le permite procesar múltiples imágenes.

20 Número 14 WWW.LINUX-MAGAZINE.ES
Xsane • PORTADA

La
La interfaz
interfaz de
de usuario
usuario para
para el
el escáner
escáner XSane
XSane de
de Linux
Linux

ESCANEANDO

La interfaz Sane proporciona acceso a los dispositivos de procesamiento de imágenes como los escáneres.

Se puede manejar un escáner con soporte Sane desde Linux con la interfaz de usuario XSane.

POR KRISTIAN KISSLING

L
a mayoría de las veces un escáner corresponde con el escáner, el proceso primero a la ventana Preview (Figura 1).
se suministra con una colección de instalación es bastante sencillo (véase Coloque una fotografía en el escáner y
de programas gratuitos que se el cuadro “Configuración del Escáner”). pulse en Acquire preview.
pueden utilizar para manejarlo. Las operaciones de Sane son controladas Tras concluir una breve fase de
Desafortunadamente, casi siempre este por los front-ends. XSane es un ejemplo calentamiento, el escáner mostrará una
software sólo funciona en Windows o de front-end. Otros front-ends para Sane previsualización de la imagen en baja
(quizás) en Windows y OS X. Si usted es incluyen herramientas como Kooka [3] y resolución. El objetivo de esta
un usuario de Linux y está buscando un QuiteInsane [4]. Este artículo describe previsualización es el de ayudar al
GUI para comunicarse con su escáner, cómo manejar un escáner desde un usuario a definir una sección de la
pruebe con XSane. ordenador Linux usando el front-end imagen original para escanear y ajustar
XSane [1] es una interfaz de usuario XSane. los colores.
gráfica basada en la interfaz de
programación Sane [2]. Sane es el La Configuración Opciones
acrónimo de Scanner Access Now Easy Para ejecutar XSane, hay que pulsar [Alt- Los cinco iconos lupa de la parte de
(Ahora, Acceso Fácil al Escáner). La F2] para que aparezca una ventana de arriba permiten inspeccionar el
interfaz de programación Sane establece acceso rápido, y escribir xsane. El documento. La lupa con la cruz a la
un estándar para acceder a los programa puede que le solicite el izquierda muestra la imagen completa;
dispositivos de procesamiento de dispositivo gráfico que se desea utilizar la segunda de la derecha permite
imágenes. Los controladores para los antes de abrir varias ventanas. aumentar la selección actual.
dispositivos de procesamiento de La ventana principal se identifica Para seleccionar un área del
imágenes usados por XSane, incluido los fácilmente por la etiqueta xsane; el documento a escanear, hay que
escáneres, reciben el nombre, dentro de nombre de escáner aparece a la derecha. mantener pulsado el botón izquierdo del
la jerga de Sane, de back-ends. El menú Window permite ocultar o ratón mientras se arrastra sobre la zona
Si Sane dispone de un back-end que mostrar varias ventanas. Hay que ir deseada. El área a escanear se indica con

WWW.LINUX- MAGAZINE.ES Número 14 21


PORTADA •Xsane

luminoso, habrá que ocultar un color. Para


aplicar correcciones cambiar el brillo de la
manuales. Para este imagen, hay que mover
propósito se utilizan la los triángulos pequeños
ventana Histogram, la hacia la izquierda o
ventana principal y las hacia la derecha de la
tres pipetas en la barra.
Preview. Para modificar los
Se pueden usar las valores individuales,
pipetas para definir un hay que abrir la ventana
espacio de color para la principal y pulsar en el
imagen. Asignando las icono coloreado en la
pipetas (de izquierda a fila de botones de la
derecha) a los puntos izquierda. De este modo
blanco, gris y negro en Figura 2: El histograma muestra la se abre un menú de
la imagen distribución de color para la ima- características
previsualizada. XSane gen escaneada. Las barras de avanzadas para el ajuste
calcula los valores de desplazamiento le permiten modi- preciso del color (Figura
Figura 1: Utilice la ventana de vista previa brillo para la imagen ficar los valores. Los iconos de la 3); al mismo tiempo que
para comenzar a escanear. Puede ajustar los basándose en esta parte inferior de la ventana habili- se muestran en la
colores y seleccionar la parte de la imagen correspondencia. tan o deshabilitan un color. ventana Histogram los
que quiera escanear. La ventana Histogram selectores del color. Se
muestra la distribución del color de puede utilizar el selector junto al
la línea discontinua. Hay tres iconos forma gráfica (Figura 2). Se puede pulsar símbolo gamma para la corrección
flecha a la derecha de los iconos lupa; en los iconos I, R, G y B para mostrar u gamma (ésta modifica los valores del
pulsando la flecha de la izquierda se le
indica al programa XSane que seleccione
el área de la imagen a escanear de forma
Configuración del Escáner
automática. El icono de la derecha de la Por lo general, un escaneo correcto Para Ubuntu, necesita ejecutar Apt-get para
pantalla selecciona todo el área depende de si Xsane dispone de un instalar Sane, Sane-utils, Xsane, Xsane-
disponible. El icono de la calavera en el back-end para su escáner. Las posibili- common, Libsane y Libsane-extras. Debian
lado derecho borra la caché de la dades de que tenga un back-end requiere Xsane, Sane y Libsane. Los usua-
previsualización actual. aumentan cuanto más viejo y popular rios de Mandriva 10.2 pueden usar el centro
Supongamos que se necesitan sea su modelo. La instalación de la de control para instalar Sane, Sane-fron-
escanear una serie de imágenes Canon LiDE 30, que usamos para nues- tends y XSane. Tras completar la insta-
fotográficas de 10 x 15 cm; en este caso, tras pruebas, resultaba más cómoda lación de XSane y todas las herramientas
debería seleccionar 10 cm x 15 cm en vez con el interfaz plustek, no importa qué necesarias, puede proceder a añadir su
de full size del combo de la izquierda. distribución Linux tengamos. Vamos, escáner.
Esta opción permite escanear un área que Debian necesitó que lo usáramos
más pequeña y de este modo acelerar el en modo de root. En Mandriva, el centro de control le ayuda a
proceso. chequear si su máquina ha sido detectada
Si la foto está al revés después de Para averiguar cómo soporta Sane su correctamente. Tras completar el chequeo,
escanearla, el menú desplegable de la escáner, compruebe la descripción pro- presione [Alt-F2] y lance XSane intro-
derecha puede servir de ayuda. La porcionada por él en la página del duciendo el comando xsane. Los usuarios
entrada 180 (refiriéndose a 180 grados) proyecto [5]. La lista muestra que el con Suse 9.2/9.3 pueden lanzar Yast2 para la
permite poner la foto derecha; la entrada soporte a nuestro escáner es completo. instalación mediante la entrada en la pes-
000 volteará verticalmente la imagen. El Otra lista en [6] le dice qué escáneres taña Hardware. Para configurar el escáner,
menú de la derecha asigna a la selección son soportados por el interfaz plustek simplemente seleccione el modelo correcto
una relación de aspecto fija. además del modelo de Canon. de la lista. A continuación presione otra vez
[Alt+F2] e introduzca el comando xsane
Corrección de Color Asegúrese de instalar el software en para lanzar XSane.
La gestión del color se realiza en el modo primer lugar, antes de añadir su
de previsualización. Para aplicaciones escáner. Los paquetes se diferenciarán Lo que nos deja con Debian y Ubuntu. Los
normales, se puede optar por uno de los dependiendo de la distribución. Los comandos sane-find-scanner y scanimage
programas de selección de color usuarios de Suse 9.3 necesitan Sane, -L detectan el escáner y se deben ejecutar
automáticos de escaneo sin tener que XSane, Sane-frontends; los usuarios de estos comandos como root. A continuación
aplicar correcciones manuales. Suse 9.2 requieren Sane, Yast2-scanner presione [Alt+F2] e introduzca xsane para
Si el original está algo saturado de y XSane. lanzar el programa.
color o está demasiado pálido, oscuro o

22 Número 14 WWW.LINUX- MAGAZINE.ES


Xsane • PORTADA

color del espectro entre el negro y el original es un texto, un fax o una fotografía
blanco). El icono del sol es para ajustar en color, se selecciona Color, Grayscale o
el brillo, y el icono del círculo blanco y Lineart. Para originales positivos se
negro es para el contraste. requiere la opción Full color range, pero no
es necesario cuando se van a escanear
Pongámonos Serios negativos de fotografías. En este caso, hay
Si se tiene seleccionada un área para que seleccionar el vendedor de la lista.
escanear y también se han seleccionado los Pulsando en el segundo icono cuadrado
ajustes del color, ya se puede ir a la ventana de la parte de abajo a la izquierda se
principal para configurar el resto de los invierte el color de la imagen escaneada.
parámetros. En primer lugar, hay que Esto convierte negativos en positivos. Si se
pensar para qué se desea la imagen que se pulsa el icono de la derecha, XSane
va a escanear, y basándose en esto, es sugerirá una mejora del color. Si la
necesario establecer una resolución sugerencia no le es de su agrado, se puede Figura 4: El Viewer muestra la imagen
adecuada usando el cuarto botón de la pulsar R para volver a la distribución escaneada y da a los usuarios varias
parte superior. El valor dpi (puntos por original de colores de la imagen escaneada; opciones para rotar, reflejar o escalar.
pulgada) es importante. Para una buena para guardarla hay que pulsar M. Si lo
calidad de impresión, probablemente desee hacemos en el icono de la doble flecha se le opciones para los programas de
al menos 300 dpi, pero hay que tener indica a XSane que aplique valores medios manipulación de imágenes externos. Es
cuidado, ya que una imagen de tamaño A4 para el brillo y el color. posible enviar por correo una imagen
a esta resolución ocupará entre 20 y 50 Los números junto al botón Scan escaneada, ejecutar una herramienta de
MBytes de espacio en disco. proporcionan la resolución de pantalla del OCR, enviarla por fax o imprimirla. Por
Si se piensa continuar procesando la área seleccionada para escanear, la ejemplo, la solapa Copy proporciona la
imagen escaneada, hay que seleccionar cantidad de memoria que consumirá la posibilidad de seleccionar la resolución y
primero el valor por defecto de Viewer en el imagen escaneada y la profundidad del los bordes para imprimir las fotos.
menú XSane Mode. Luego se establece la color. El campo de abajo muestra el tamaño Se puede añadir la configuración de
calidad del escáner: dependiendo de si el del área a escanear en centímetros. SMTP del programa de correo usando la
Suponiendo que estos valores son los que opción E-Mail de XSane. Posteriormente
se necesitan, se puede comenzar el proceso cuando se seleccionen E-Mail, Copy o Fax
pulsando en Scan. como el XSane Mode de la ventana
La imagen escaneada aparece en el principal, XSane pasará las imágenes al
Viewer (Figura 4). Aquí se puede retocar, si programa de correo externo. ¡Permitiendo,
se desea, rotando, obteniendo la imagen incluso, enviar esas fotos comprometidas
especular o escalándola. Además se de la fiesta a todos sus amigos!
pueden eliminar manchas o aplicar una
herramienta de desenfoque. Incluso se Conclusión
puede ejecutar un Reconocedor Óptico de XSane es un front-end sencillo para
Caracteres (OCR), pero se precisa tener un manipular los dispositivos de captura
software de OCR externo para realizar esta soportados por la interfaz Sane [5].
tarea. Encontrará bastante fácil la tarea de
escanear documentos en Linux, si su
Inundando la Imagen escáner está lo suficientemente “Sano”. ■
La única cuestión pendiente hasta aquí es:

RECURSOS
¿qué se hace con la imagen escaneada?
Pues empecemos guardándola en el disco.
Para ello, hay que seleccionar Save en [1] XSane: http://www.xsane.org/
XSane mode de la ventana principal. XSane [2] Proyecto Sane: http://www.
usa el formato pnm por defecto, pero se sane-project.org/
puede utilizar el desplegable Type para [3] Kooka: http://www.kde.org/apps/
seleccionar un formato de imagen kooka/
diferente. Se puede elegir una tasa de [4] QuiteInsane: http://quiteinsane.
compresión estándar a la hora de guardar sourceforge.net/
la imagen en Configuration de la ventana [5] Soporte Sane scanner: http://www.
Preferences de XSane. sane-project.org/
Figura 3: Haciendo click en el símbolo co- La solapa Image permite seleccionar qué sane-supported-devices.html
loreado que parece un candelabro se muestra calidad hay que utilizar en los formatos de [6] El back-end de Sane para Canon LiDE
un número de controles para la puesta a imágenes JPEG, PNG y TIFF. Las otras 30 y chipsets relacionados: http://
punto gráfica. Estos controles también se solapas aquí son Copy, Fax o E-Mail; cada www.sane-project.org/man/
muestran en el histograma. una de ellas dispone de una serie de sane-plustek.5.html

WWW.LINUX- MAGAZINE.ES Número 14 23


LINUX USER • KTools: Yammi

Búsquedas rápidas y divertidas fiestas con la base de datos de música Yammi

CAJA DE MÚSICA

La base de datos musical Yammi [1] para KDE (Versión 3.2 o superior)

es un buen sustituto de un tocadiscos. POR FRANK WIEDUWILT de reproducción. La lista se localiza en la


parte izquierda de la ventana y el área
Quick Browser, situada inmediatamente

L
a base de datos de música Yammi yammi-1.2.2), e introducir el comando debajo, presenta una vista de árbol de
puede administrar incluso la mayor ./configure para crear los ficheros. Poste- todas las pistas clasificadas según distintos
de las colecciones de canciones y riormente, hay que introducir make para criterios, como artista, álbum, género y
ofrece una arquitectura flexible que per- comenzar a compilar el código fuente. año.
mite a sus usuarios aprovechar el poder de Cuando el proceso se ha completado, hay La lista de las pistas seleccionadas ocupa
los reproductores de medios. La página de que introducir su -c "make install" y la mayor parte de la ventana del programa.
inicio de Yammi solamente tiene el código escribir la contraseña de root para instalar Para oir una canción es necesario decirle a
fuente para la versión actual, yammi- el programa en un sitio adecuado en el Yammi qué reproductor usar. Settings |
1.2.2.tar.gz. Tambien se necesitan la libre- árbol del sistema de ficheros. Seguida- Configure Yammi | MediaPlayer nos lleva
ría Taglib [2] y los paquetes de desarrollo mente puede arrancarse Yammi intro- hasta la opción necesaria. El autor de los
para los reproductores Xmms [3], Noatum duciendo el nombre del programa en una programas describe al soporte para
[4] y Gstreamer[5]. ventana terminal. Gstreamer como experimental, aunque en
Tras la instalación de las librerías y de nuestras pruebas funcionó correctamente.
los reproductores de medios, se hace pre- ¡Qué no pare la música! Los otros candidatos son Xmms, Noa-
ciso desempaquetar el archivo código Cuando se arranca por primera vez el pro- tum y ArtsPlayer. Tras seleccionar el repro-
fuente Yammi introduciendo tar -xzvf grama, pregunta por el directorio con las ductor preferido, hacemos click en el
yammi-1.2.2.tar.gz, cambiar al nuevo pistas. Yammi soporta canciones en for- botón play de la barra de tareas para que
directorio del código fuente (cd mato MP3, OGG y WAV (Figura 1). La lec- comience a sonar la música. Presionando
tura de la información de la pista puede [F1] arranca el reproductor especificado.
llevarle un tiempo. Nuestro ordenador de
1.2 GHz tardó unos dos minutos en leer KTools
unos 1000 títulos. El software almacena
luego los datos de los títulos en un fichero En esta sección examinamos herramien-
tas que, mes a mes, nos han sido útiles
formateado en XML, ~/.kde/share/apps/
trabajando con KDE, nos han resuelto un
yammi/songdb.xml.
problema que de otra manera hubiera
Tras leer los datos de los títulos, Yammi
seguido sin resolver, o simplemente nos
presenta un interfaz de programa bien han hecho la vida más agradable. Si
definido con una barra de herramientas en necesitas saber qué aplicación hace qué
Figura 1: Yammi lee las canciones de un la parte superior de la pantalla que con- en KDE, KTools es tu sección.
directorio. tiene el campo de búsqueda y los controles

76 Número 14 WWW.LINUX- MAGAZINE.ES


KTools: Yammi • LINUX USER

artista, las plugin para el diseño de las cubiertas del


pistas del CD usando la herramienta Cdlabelgen [6].
mismo Algunos plugins se localizan en Settings
álbum o | Configure Yammi | Plugins. Haciendo
canciones click sobre Placeholders, se abre una lista
con el de campos para pasar datos a programas
mismo externos. Los scripts que acompañan al
nombre. El programa son un buen punto de comienzo
programa para el trabajo de desarrollo personal.
resalta en
verde las De Fiesta
canciones Como Yammi puede ser controlado usando
que ya se el teclado, y como no tiene problemas para
han repro- utilizar medios externos, es una buena
Figura 2: El programa presenta las pistas que emparejan la búsqueda actual ducido, elección como sustituto de un tocadiscos
con las mejores coincidencias primero. mientras para fiestas. Una segunda tarjeta de sonido
que la en el ordenador permite oir una pista
[F2] salta a la pista siguiente, [F3] hacia selección actual se resalta en rojo. Esto mientras otra se está reproduciendo sin
atrás y [F4] detiene la reproducción. hace que sea más fácil seguir la pista a las interrumpir el programa. De nuevo son
Yammi tiene una característica de canciones en una fiesta. necesarias tres funciones: [F9] reproduce
autoreproducción muy interesante: De Yammi también lee pistas de CDs que no el comienzo, [F10] reproduce la sección
forma similar a los iPods de Apple, el pro- se encuentran en la base de datos. Si se central y [F11] el final de la pista selec-
grama reproduce pistas aleatoriamente selecciona Database | Scan removable cionada.
desde una lista, sacando las viejas y olvi- Media…, el programa pedirá una ruta al
dadas melodias de una colección. CD y añadirá todas las pistas del disco a la Conclusiones
Siempre muestra la ultima pista y las base de datos. Si más tarde se desea repro- Yammi cumple lo prometido: es simple y
cuatro siguientes en la lista de reproduc- ducir una de esas pistas, el software pedirá compacto. Los controles del programa
ción. Si se prefiere no escuchar una de esas que se introduzca el CD. parecen estar bien diseñados y son intui-
pistas, se presiona [F8] para eliminarla. tivos para los nuevos usuarios. Una fun-
Ordenadito y limpio ción de búsqueda madura ayuda a los
Busca y Encuentra Si se necesita leer o editar la información usuarios a encontrar pistas que no se
Presionando la tecla [Esc] permite buscar de una pista, la seleccionamos de la lista y encuentran en la lista actual. El programa,
en la base de datos de música Yammi. Esto presionamos [I]. Esto hace que aparezca además, es muy estable. Estuve usándolo
lleva al cursor al campo de búsqueda de la un diálogo en el que pueden editarse el diariamente durante un período de
parte superior izquierda de la ventana del artista, título, álbum y género. Al mismo algunos meses sin que el software se col-
programa y elimina el contenido actual. tiempo, Yammi informa de la última vez gara ni una sola vez.
Mientras se está escribiendo, el programa que se reprodujo la pista. El programa no Es, por tanto, una buena elección para
parte como un rayo hacia adelante para almacena esta información en la pista en sí aquellos que encuentran que el gran
mostrar cualquier entrada que coincida con misma, sino almacena los datos históricos número de características de Amarok [7],
la búsqueda. en una base de datos separada. por poner un ejemplo, es algo excesivo,
La búsqueda usa lógica borrosa y pero que siguen necesitando algo más que
devolverá un nombre de un grupo tal como Personalización un simple reproductor de medios. ■
Housemartins incluso si se teclea algo Yammi puede personalizarse para que
como Housmartins. EL programa muestra refleje las preferencias de cada usuario,
los resultados de la búsqueda en la parte permitiendo, además, añadirle funcionali- RECURSOS
derecha de la ventana, situando las mejores dades mediante la inclusión de plugins.
coincidencias para la clave de búsqueda en Por ejemplo, si no nos gusta la disposición
[1] Página de inicio de Yammi: http://
la parte superior de la lista (Figura 2). de la lista de reproducción, puede selec-
yammi.sourceforge.net
Presionando [F5] se añade la pista selec- cionarse Settings | Configure Yammi |
[2] Taglib: http://developer.kde.org/
cionada al final de la lista de reproducción; Playqueue Theme. La lista de reproducción
~wheeler/taglib.html.
[F6] lo coloca para hacer que sea el siguien- es un documento formateado bajo HTML
te en reproducirse; y haciendo doble click que puede editarse suponiendo que se [3] Xmms: http://www.xmms.org
sobre la pista, se reproduce de inmediato. posean los conocimientos necesarios. [4] Noatun: http://noatum.kde.org
El menú contextual para cada pista con- Los plugins y los scripts extienden la [5] Gstreamer: http://gstreamer.
tiene unas cuantas opciones para selec- funcionalidad del programa. Yammi viene freedesktop.org
cionar más pistas que coincidan con la con un número de plugins para la [6] Cdlabelgen: http://www.aczoom.com/
selección actual. grabación de pistas seleccionadas a CD tools/cdinsert
El botón Search for similar… ofrece una que funciona en conjunción con el soft- [7] Amarok: http://amarok.kde.org
lista con todas las canciones del mismo ware de grabación K3b. También existe un

WWW.LINUX- MAGAZINE.ES Número 14 77

También podría gustarte