Linux Magazine - Edición en Castellano, Nº 07

100
Sistemas Virtuales Wine Mac-on-Linux Active Directory Cochecitos apt4rpm Linux en Sparc Email anónimo Zope X3.0 Debianiza tu SuSE Uso de APT para la descarga e instalación de paquetes p41 Juguetes Controlamos un coche teledirigido de un “Todo a 100” a través del puerto paralelo p52 NÚMERO 7 P.V.P 5,95 SoundJuicer Ripea CDs desde el escritorio Gnome SUSE 9.2 PROFESIONAL SUSE 9.2 PROFESIONAL Versión profesional completa DVD de 7.5 GB Kooldock Un panel de control vistoso WWW.LINUX - MAGAZINE.ES LINUX MAGAZINE NÚMERO 07 Edición en Castellano SISTEMAS VIRTUALES Emulación de Windows, Mac y Linux Programas Windows con Wine p12 Linux en Linux con UML p21 Active Directory bajo Samba sobre Linux p25 Corre MacOS X en PPC y en PC p31 BlueFish p35 Un completo IDE para el desarrollo web

description

Puesto a la venta en junio 2005. Tema de Portada: Sistemas Virtuales. DVD: Suse 9.2 - Versión Comercial.

Transcript of Linux Magazine - Edición en Castellano, Nº 07

Page 1: Linux Magazine - Edición en Castellano, Nº 07

Siste

ma

s Virtu

ale

sW

ine

Ma

c-o

n-Lin

ux

Ac

tive D

irec

tory C

oc

he

cito

s ap

t4rpm

Linu

x e

n S

pa

rc E

ma

il an

ón

imo

Zo

pe

X3.0

Debianiza tu SuSEUso de APT para la descarga

e instalación de paquetes p41

JuguetesControlamos un coche teledirigido de un

“Todo a 100” a través del puerto paralelo p52

NÚMERO 7 • P.V.P 5,95 €

SoundJuicerRipea CDs desde el escritorio Gnome

SUSE 9.2PROFESIONAL

SUSE 9.2PROFESIONAL

Versión profesionalcompleta DVD de 7.5 GB

KooldockUn panel decontrol vistoso

W W W . L I N U X - M A G A Z I N E . E S

LIN

UX M

AGAZIN

E

NÚMERO 07

Edición enCastellano

SISTEMAS VIRTUALESEmulación de Windows, Mac y Linux

Programas Windows con Wine p12

Linux en Linux con UML p21

Active Directory bajo Samba sobre Linux p25

Corre MacOS X en PPC y en PC p31

BlueFish p35

Un completo IDE para

el desarrollo web

Page 2: Linux Magazine - Edición en Castellano, Nº 07

• Número 1: Especial Redes - Servidores de correo TLSMediaWiki - Konversation - DVD Fedora Core 3 ...

¡Hazte con tus ejemplares atrasados!

¡No esperes a que se agoten!

#1

#2

#3

#4 #5

• Número 2: Hardware Linux - PCs Silenciosos - Gestorde ventanas Twin - Backups con Konserve ...

• Número 3: Seguridad para todos - Configuracióniptables con Shorewall - Ruby Rails - Domótica ...

• Número 4: Redes Wireless - Scribus - Radio USBHackeando con Zaurus - DVD Mandrake 10.1 ...

• Número 5: Email seguro - Seguridad Wireless - Gimpcon Python - Bluetooth - QEMU - QTCanvas - Scribus (II)

• Número 6: Multimedia - MLDonkey - OpenOfficeJuegos DOS con SCUMMVM y DOSBox - Scribus (III)

¡pídelos ya!

#6

WWW.LINUX-MAGAZINE.ES

Page 3: Linux Magazine - Edición en Castellano, Nº 07

Me imagi-

no que

serían

hasta buena gente

en el fondo, que

amarán a sus

familias y respeta-

rán al prójimo y

todo eso. Tenían cara de buena gente.

Pero estaban ahí para defender las

patentes de software.

Los dos ponentes lo eran en una sesión

sobre patentes en el ámbito de la TI, cele-

bradas en el Parque Tecnológico de

Andalucía, donde tenemos la redacción de

la revista. “Jopé,” me dije cuando apare-

ció el tríptico anunciando el evento en mi

bandeja “el enemigo a las puertas”. Me

apresuré para allá, con una carpeta repleta

de argumentos contundentes con los cua-

les atizarles.

Mr. X, era el responsable de

Investigación y Tecnología de una empre-

sa de desarrollo de software. El otro, Mr. Y,

era profesor de un departamento de la

Universidad de Málaga.

La postura de Mr. X aún lo puedo medio

entender: pertenece a una empresa y está

metido de lleno en esa carrera de ratas en

el que se ha convertido el mundo del

desarrollo comercial de software. Pero la

de Mr. Y… si el tema de patentes de soft-

ware ya es un terreno harto resbaladizo, el

promocionar las patentes desde la univer-

sidad, institución diseñada para la disemi-

nación del conocimiento, me parece un

gran error.

La cuestión es que ambos tenían a su

nombre un par o tres de patentes, descara-

damente de software, descaradamente

infringiendo la directiva en vigor aproba-

da en el 2003. No habían acabado sus

ponencias, cuando yo ya tenía la mano

levantada, dispuesto a no dejar pasar la

oportunidad de hacerles ver lo erróneo de

sus posturas.

Mr. X, al principio de su ponencia, esta-

ba bastante orgulloso de sus logros.

Normal: estaba sacando una empresa ade-

lante y tenía en cartera tres o cuatro

patentes de software para su compañía.

Todo un logro. Mas, cuando le

hice notar que sus patentes pro-

bablemente eran ilegales según

la actual directiva, se puso muy

serio e hizo una nota mental de

llamar a su abogado por la

mañana. Por su lado, Mr. Y me

preguntó si no estaría citando

una ley antigua, de 1929, o así.

“Directiva sobre las patentes

de software del 2003” le respon-

dí, levantando el fardo de folios del que se

compone la actual directiva. Pero eso es

irrelevante. Como si la ley es del Siglo de

la Luces: es la ley vigente y hay que aca-

tarla.

Después vino la absurda pregunta, que-

riendo saber por qué los desarrolladores

del software libre no patentan y quedó en

evidencia la ignorancia imperante relativa

tanto a la naturaleza de los patentes como

a las bases del software libre. Muy peligro-

so todo esto. Por supuesto que hay

muchas razones. Una, y la que esgrimí en

aquella ocasión, es que entra en conflicto

con el espíritu - y la letra - de la mayor

parte de las licencias del software libre,

incluyendo la GPL.

Otra es que muchos proyectos de SL no

vienen auspiciado por grandes empresas

como Sun con OpenOffice o IBM con

Eclipse, sino que son el producto de

pequeñas empresas o simples grupos de

usuarios que ni tienen los recursos, ni el

tiempo, ni las ganas de ponerse a investi-

gar si están infringiendo la patente de

alguien. Bastante tienen con escribir pro-

gramas. Si en esa batalla se metieran,

nunca escribirían ni una línea de código.

Básicamente toda la argumentación en

favor de las patentes se reduce a que hay

que patentar por que otros patentan y, si

no patentas, te patentarán. Lo malo es que

casi nadie se ha parado a pensar en las

consecuencias de esta loca carrera suici-

da. ¿A qué me suena todo esto? Desde la

fría lógica y el sentido común, parece un

sistema intrínsecamente perverso, perver-

so en el sentido en que trastoca los mismo

principios que alega defender, es decir, los

del libre mercado.

Todo el mundo estuvo de acuerdo que

debía existir el software privativo y el

libre, pero de nuevo, el desconocimiento

(¿he dicho que la ignorancia es peligrosa?)

le hizo soltar a uno de los ponentes:

“Bueno, entonces para que los dos convi-

van, los del Software Libre han de permi-

tirnos patentar a los del Software

Privativo”. Brillante. O sea que hemos de

darle la libertad a las megacorporaciones

(o minicorporaciones, me da igual) acapa-

radoras de patentes a registrar cada una

de las ideas que se les ocurra y ellos nos

darán la libertad de defendernos en el jui-

cio cada vez que infrinjamos una de sus

chaladuras, como el doble clic, los interfa-

ces con pestañas o el XOR aplicado a gráfi-

cos. Me parece que no.

Sin embargo, la más peligrosa de todas

las cosas peligrosas que se malinterpreta-

ron ese día por el desconocimiento gene-

ral reinante, al menos para Mr. X y Mr. Y,

es que, estaban tan metidos en su fabulo-

so mundo donde las restricciones artificia-

les al mercado promueven la innovación y

permiten a PYMEs codearse con las gran-

des megacorporaciones, que no se daban

cuenta de que con la aprobación de la

nueva directiva, serían los primeros en

sucumbir a la presión legal que ejercerían

sobre ellos esa liga a la cual tanto ansia-

ban pertenecer.

Que miedo.

3

EDITORIAL

3Número 07W W W . L I N U X - M A G A Z I N E . E S

Estimado Lector de Linux Magazine

Nos sentimos orgullosos de nuestrosorígenes como publicación, que seremonta a los primero días de la revo-lución Linux.Nuestra revista hermana,la publicación alemana Linux Maga-zin, fundada en 1994, fue la primerarevista dedicada a Linux en Europa.Desde aquellas tempranas fechashasta hoy, nuestra red y experienciahan crecido y se han expandido a lapar que la comunidad Linux a lo anchoy largo del mundo. Como lector deLinux Magazine, te unes a una red deinformación dedicada a la distribucióndel conocimiento y experiencia téc-nica. No nos limitamos a informarsobre el movimiento Linux y de Soft-ware Libre, sino que somos parteintegral de él.

LA IGNORANCIA ES FUERZA

Paul C. Brown

Director

Page 4: Linux Magazine - Edición en Castellano, Nº 07

4 Número 07

CONTENIDOS • Linux Magazine nº 7

W W W . L I N U X - M A G A Z I N E . E S

PRÁCTICO

35 BlueFish

El editor de HTML Bluefish es útil en los

grandes proyectos web y también para

los proyectos de programación más

pequeños.

37 Zope

Vemos las novedades que aporta la

nueva versión X3.0 al universo de los

servidores de aplicaciones web.

41 AptEn este artículo explicamos como

podemos usar Apt con distribuciones

Linux basadas en RPM.

45 Sparc

Vemos la manera de empezar con la

configuración de Linux en una máquina

Sun.

PORTADA PORTADA

31 Mac en Linux

Gracias a los emuladores los usuarios ya

pueden ejecutar su querido Mac OS X

bajo Linux, permitiendo un reencuentro

entre hermanos.

48 Cochecitos

Primera parte de una serie que nos mues-

tra como controlar dispositivos (en este

caso un cochecito teledirigido de un “Todo

a Cien”) a través del puerto paralelo.

52 Correos anónimos

El protocolo Mixmaster ofrece a los

usuarios una tecnología para el envío

anónimo y el cliente Mixmaster de una

aplicación libre para el envío anónimo.

56 Perl

En nuestra entrega mensual de Perl,

echamos un vistazo al depurador inte-

grado en Perl.

61 Jython

Este mes utilizamos librerías Java y

analizamos la reproducción de sonidos

desde Java para crear un mini reproduc-

tor de MP3.

65 La Columna de Charly

66 BackUp

Con una estrategia de copias de seguri-

dad adecuada no tendremos problemas

para restablecer archivos perdidos.

PRÁCTICO

LINUX MAGAZINE

3 Editorial

6 Inseguridades

8 DVD Linux Magazine

10 Noticias

95 Suscripciones

97 Eventos

97 Información de Contacto

98 Próximo Número

ADMINISTRACIÓN

12 Wine

Hemos investigado las versiones libre y

comercial de Wine para ver como se

comportan ante situaciones reales de

uso.

17 PCs en PCs

En este artículo os contaremos las

novedades de VMware Workstation

4.5.2 y enseñaremos como inicializar y

hacer funcionar Linux en VMware.

21 Linux dentro de Linux

Encontraremos cientos de usos para

UML, el rápido y práctico sistema

virtual de Linux

25 Samba

Descubrimos como integrar Windows

con Linux (y viceversa) con Samba.

DESARROLLO

Page 5: Linux Magazine - Edición en Castellano, Nº 07

5Número 07W W W . L I N U X - M A G A Z I N E . E S

� Versión Completa yComercial

� DVD de arranque, capadual, 7.5 GB de software

� KDE 3.3, GNOME 2.6,OpenOffice.org 1.1.3

� Conexión WLAN, Blue-tooth e IR Mejorada

� Firewall Automático

� Herramientas yCompiladores para elDesarrollo

� Incluye versión de 32 y 64bits

SUSE LINUX 9.2pROFESSIONAL

SUSE LINUX 9.2pROFESSIONAL

68 VPNs

Mostramos una solución que propor-

ciona backups transparentes para las

conexiones IPSec.

72 Ktools

Basket es un cómodo contenedor de

documentos, notas, imágenes, sonidos,

gráficos, hojas de cálculo, y otros

archivos que puede que queramos

encontrar en otro momento.

74 Desktopía

WMI es un gestor de ventanas elegante

y rápido con un buen soporte para el

control por teclado.

76 KoolDock

Si el panel de KDE no te parece suficien-

temente espectacular, puedes mejorarlo

con KoolDock o KXDocker.

78 SoundJuicer

En este artículo presentamos una de las

herramientas dedicadas al ripeado de

múscia bajo Gnome: Sound Juicer.

80 Kim

Con Kim, se puede modificar y manipu-

lar ficheros de imágenes desde un menú

contextual.

82 Educación

En esta segunda parte sobre accesibili-

dad bajo Linux, abordamos uno de las

áreas más interesantes de esta ciencia:

la tiflotecnología.

87 Línea de ComandosVemos navegadores en modo texto para

el acceso a la web desde la consola.

92 Trucos

Alberto Planas y Paul C. Brown, después

de instalar Linux, se enfrentan a un

recalcitrante partición Windows que se

niega a arrancar.

ADMINISTRACIÓN LINUX USER

LINUX USER

COMUNIDAD

Page 6: Linux Magazine - Edición en Castellano, Nº 07

Distribuidor Fuente Seguridad ComentarioDebian 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

Referencia:DSA-…1) se proveen como páginas HTML con

enlaces a los parches. Los avisos también

incluyen una referencia a la lista de

correo.

Gentoo Info:http://www.gentoo.org/security/en/index.xml Los avisos de seguridad actuales para

Foro:http://forums.gentoo.org/ la lista Gentoo en el sitio web de

Lista:http://www.gentoo.org/main/en/lists.xml seguridad de Gentoo enlazan desde la

Referencia:GLSA:… 1) página principal. Los avisos se presentan

en HTML con códigos para fusionar las

versiones corregidas.

Mandrake Info:http://www.mandrakesecure.net Mandrakesoft posee su propios sitio web

Lista:http://www.mandrakesecure.net/en/mlist.php que versa sobre temas relacionados con

Referencia:MDKSA:… 1) la seguridad.Entre otras cosas,incluye

avisos seguridad y referencias a las

listas de correo.Los avisos son páginas

HTML,pero no contienen enlaces a los

parches.

Red Hat Info:http://www.redhat.com/errata/ Red Hat archiva los fallos de seguridad

Lista:http://www.redhat.com/mailman/listinfo/ bajo lo que denominan erratas.A

Referencia:RHSA-… 1) continuación los problemas para cada

versión de Red Hat se agrupan.Los avisos

de seguridad se proveen como una

página HTML con enlaces a los parches.

Slackware Info:http://www.slackware.com/security La página de inicio contiene enlaces al

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

seguridad en Slackware.

Suse Info:http://www.suse.de/en/private/support/ Ya no existe un enlace a la página de

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

Referencia:SUSE-SA… 1) seguridad para versiones individuales de

SuSE Linux se muestran de color rojo en el

sitio de actualizaciones generales.

Contiene una corta descripción de la

vulnerabilidad que soluciona el parche.1) Todos los distribuidores muestran correos de seguridad en el campo Subject.

POLITICAS DE SEGURIDAD DE LAS DISTRIBUCIONES MAYORITARIAS

6

INSEGURIDADES

Schlagwort sollte hier stehenLINUX USERNOTICIAS

6 Número 07 W W W . L I N U X - M A G A Z I N E . E S

�KRB5Kerberos es un sistema de autenticación

en red que utiliza un tercero de confian-

za (un KDC) para autenticar clientes y

servidores entre sí.

El paquete krb5-workstation incluye

un cliente telnet compatible con

Kerberos. Se descubrieron dos desborda-

mientos de búfer en la manera en que el

cliente telnet maneja mensajes del servi-

dor. Un atacante podría ser capaz de eje-

cutar código arbitrario en la máquina del

cliente si se consigue engañar a un usua-

rio para que se conecte a un servidor tel-

net malicioso.

El proyecto de Vulnerabilidades y

Exposiciones Comunes (Common

Vulnerabilities and Exposures o CVE –

http://cve.mitre.org) ha asignado los

nombres CAN-2005-0468 y CAN-2004-

0469 a este problema. �

-Referencia Debian: DSA-703-1 krb5

-Referencia Gentoo: GLSA 200504-04

/telnet

-Referencia Mandriva:

MDKSA-2005:061

-Referencia Red Hat: RHSA-2005:330-06

�MYSQLMySQL es un servidor de bases de datos

multi-usuario y multi-hilo.

Stefano Di Paola descubrió dos errores

en la manera en que MySQL maneja fun-

ciones definidas por el usuario. Un usua-

rio con la capacidad de ejecutar funciones

definidos por el usuario, podría, poten-

cialmente, ejecutar código arbitrario en el

servidor MysQL. El proyecto CVE ha asig-

nado los nombres CAN-2005-0709 y CAN-

2005-0710 a estos problemas.

Stefano Di Paola también descubrió un

error en la manera en que MySQL crea

tablas temporales. Un usuario local

podría crear un enlace simbólico mani-

pulado que podría dar como resultado

que MySQL sobreescribiera el fichero. El

proyecto CVE ha asignado el nombre

CAN-2005-0711a este problema. �

-Referencia Gentoo: GLSA 200503-19

/ mysq

-Referencia Mandriva:

MDKSA-2005:060

-Referencia Red Hat: RHSA-2005:334-07

-Referencia Suse: SUSE-SA:2005:019

� TELNETEl paquete Telnet aporta un cliente telnet

desde la línea de comandos. El paquete

servidor telnet incluye un demonio telnet,

telnetd, que soporta un login remoto a un

máquina host. El proyecto de

Vulnerabilidades y Exposiciones Comunes

(Common Vulnerabilities and Exposures o

CVE – http://cve.mitre.org) ha asignado los

nombre los nombres CAN-2005-0468 y

CAN-2004-0469 a este problema. �

-Referencia Debian: DSA-703-1krb5

-Referencia Gentoo: GLSA 200504-04 /

telnet

-Referencia Red Hat:

RHSA-2005:327-10

� MOZILLAMozilla es un navegador web, cliente de

correo y de grupos de noticias, cliente

IRC y editor HTML de código abierto.

Se ha descubierto un desbordamiento

de búfer en la manera en que Mozilla pro-

cesa imágenes GIF. Sería posible para un

atacante crear una imagen GIF manipula-

da que ejecutase código arbitrario cuando

fuese visualizado por la víctima. El proyec-

to CVE ha asignado el nombre CAN-2005-

0399 a este problema.

Page 7: Linux Magazine - Edición en Castellano, Nº 07

NOTICIAS

7Número 07W W W . L I N U X - M A G A Z I N E . E S

Se descubrió un error en la manera en

que Mozilla muestra ventanas de de diá-

logo. Es posible que una página web

maliciosa en una pestaña en el fondo

presente un diálogo que parezca prove-

nir de la pestaña activa. El proyecto de

Vulnerabilidades y Exposiciones

Comunes ha asignado el nombre CAN-

2004-1380 a este problema.

Se descubrió un bug en la manera en

que Mozilla permitía a plug-ins a cargar

contenidos privilegiados en un marco.

Es posible que una página web malicio-

sa pudiera engañar a un usuario para

que hiciera clic en ciertos sitios para

modificar parámetros de configuración o

ejecutar código arbitrario. El proyecto de

Vulnerabilidades y Exposiciones

Comunes ha asignado el nombre CAN-

2005-0232 a este problema.

Se encontró un error en la manera en

que Mozilla Mail maneja cookies cuan-

do se carga correo a través de HTTP,

indistintamente de las preferencias del

usuario. Es posible que se pudiera trazar

a un usuario específico utilizando un

mensaje malicioso que cargara conteni-

do a través de HTTP. El proyecto de

Vulnerabilidades y Exposiciones

Comunes ha asignado el nombre CAN-

2005-0149 a este problema.

Se descubrió un error en la manera en

que Mozilla responde a peticiones de

autenticaciones de proxy. Es posible que

un servidor malicioso robe credenciales

desde el navegador de una víctima emi-

tiendo una petición 407 de autenticación

de proxy. El proyecto de

Vulnerabilidades y Exposiciones

Comunes ha asignado el nombre CAN-

2005-0147 a este problema.

Otro error se encontró en la manera en

que Mozilla maneja ciertas etiquetas de

inicio seguidos por un carácter nulo. Una

página maliciosa podría hacer que

Mozilla se colgara cuando fuese visualiza-

da por la víctima. El proyecto de

Vulnerabilidades y Exposiciones

Comunes ha asignado el nombre CAN-

2004-1613 a este problema.

Se encontró un error en la manera en la

que Mozilla establece permisos al instalar

paquetes XPI. Es posible que un XPI insta-

le ficheros con permiso de lectura y escri-

tura globales, permitiendo a un usuario

local malicioso robar información o ejecu-

tar código malicioso. El proyecto de

Vulnerabilidades y Exposiciones Comunes

ha asignado el nombre CAN-2004-0906 a

este problema.

Se descubrió un error en la manera en

que Mozilla carga enlaces en las cuales

se pulsan con el botón central del ratón

en una nueva pestaña. Una página web

maliciosa podría leer ficheros locales o

modificar parámetros chrom privilegia-

dos. El proyecto de Vulnerabilidades y

Exposiciones Comunes ha asignado el

nombre CAN-2005-0141 a este problema.

Se encontró un error en la manera en

que Mozilla muestra el icono de sitio

seguro. Una página web maliciosa puede

utilizar una URL de visualización de

código para página segura dirigida a la

página segura mientras se carga otra

página insegura, mostrándose el icono

del estado previo de seguridad. El pro-

yecto de Vulnerabilidades y Exposiciones

Comunes ha asignado el nombre CAN-

2005-0144 a este problema. �

-Referencia Gentoo: GLSA 200503-30 /

Mozilla

-Referencia Red Hat: RHSA-2005:323-10

Page 8: Linux Magazine - Edición en Castellano, Nº 07

8

También se incluye el paquete ofimático

OpenOffice 1.1.3, así como TextMaker y

PlanMaker, dos alternativas compatibles

con Microsoft Word y Excel respectiva-

mente. Suse 9.2 viene con herramientas

gráficas como el programa de retoque de

bitmaps The GIMP versión 2, el progra-

ma de diseño vectorial Inkscape y la

herramienta de dibujo para niños

TuxPaint. En el apartado de navegadores,

Suse anda muy sobrado, con versiones

de Opera, Konqueror, Epiphany, Mozilla

y Firefox, al igual que en el área de clien-

tes de correo, pudiéndose escoger entre

Kmail, Thunderbird, así como clientes

en modo texto como Mutt y Pine.

El DVD también proporciona una gran

variedad de herramientas multimedia, tales

como RealPlayer, amaroK y el reproductor

de música XMMS, así como el administra-

dor de colecciones de música, juK.

Computación MóvilSuse Linux 9.2 viene con muchas carac-

terísticas que soportan ordenadores

móviles y dispositivos de bolsillo. La ver-

sión 9.2 viene con soporte WLAN mejo-

rado. También se incluye características

de administración energética avanzada y

herramientas de sincronización tales

como KitchenSync y Kpilot.

Suse Linux también ofrece soporte

inalámbrico Bluetooth y administración

insignia de la línea de productos Suse

orientadas al escritorio. En el DVD

encontrará un sistema Linux estable

y fiable que viene con centenares

de útiles aplicaciones.

Instalación SencillaLa versión 9.2 de Suse Linux de

Linux Magazine es muy senci-

lla de utilizar. No hay más que

insertar el DVD en la unidad y

rearrancar el ordenador. El ins-

talador de Suse localiza el hard-

ware y recomienda las opciones

de instalación pertinentes.

La mayoría de los detalles se

manejan automáticamente y se acce-

den a las opciones de instalación a través

de un interfaz claro y simple.

YaSTSuse viene con YaST, el asistente gráfico

universal que le ayuda a administrar

importantes tareas de configuración en

su sistema. Suse ha estado desarrollando

y perfeccionando YaST desde 1994 y el

resultado es uno de las herramientas de

configuración más respetadas en el

mundo Linux.

EscritorioSuse Linux 9.2 Profesional viene con los

escritorios KDE 3.3.4 y Gnome 2.6.

Nos sentimos orgullosos de poder

incluir como DVD de portada la

versión comercial y completa de

Suse Linux 9.2. Ha leído bien: este no es

la versión de descarga de escasamente

más de un gigabyte. El DVD de portada

de Linux Magazine te trae la versión

íntegra y de pago que precisa de un DVD

de capa dual, puesto que trae más de 7.5

gigas de software.

Suse Linux es una de las distribucio-

nes Linux más populares del mundo y

Suse Linux Professional es el buque

DVD LINUX MAGAZINE

8 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: El escritorio predeterminado de Suse Linux 9.2 es KDE 3.3. Figura 2: Administra tu correo, contactos y calendario con Kontact.

DVD DE LINUXMAGAZINE

Page 9: Linux Magazine - Edición en Castellano, Nº 07

energética ACPI con suspensión a disco

avanzado.

Servidores y Herramientasde AdministraciónSuse suministra un amplio abanico de

servicios de red y herramientas de admi-

nistración. Estos servicios incluyen FTP,

DNS, Samba, NFS y NIS. También pode-

mos encontrar entre los paquetes el ser-

vidor web Apache, servidores de correo,

servidores de bases de datos SQL y utili-

dades para configuración remota. El

Suse Linux Firewall 2 aporta protección

contra la intrusión de terceros y es fácil

de configurar a través de YaST.

Instálelo YaSuse Linux es una de las más prestigio-

sas distribuciones del mundo y espera-

mos que satisfaga todas las necesidades

de los lectores de Linux Magazine. El

formato de DVD escogido aporta un

conveniente medio que agrupa todas las

aplicaciones y sus librerías dependien-

tes en un mismo disco. Suse Linux le

trae una de las mejores y mejor integra-

das distribuciones Linux para su escri-

torio y si nunca ha utilizado Suse Linux,

ésta es una excelente ocasión para pro-

barlo. Si ya tiene una instalación de

Suse anterior, utilice el DVD para actua-

lizarse.

Tanto si es un principiante, recién lle-

gado al mundo Linux como si es un

experto de años, sabemos que encontra-

rá en Suse 9.2 Profesional el Linux que

estaba esperando. �

DVD LINUX MAGAZINE

9Número 07W W W . L I N U X - M A G A Z I N E . E S

Componentes Base

• Linux kernel 2.6.8

• X.Org 6.8.1

• KDE 3.3

• GNOME 2.6

• GCC 3.3.4

Gráficos

• GIMP 2

• Digikam

• Inkscape

• Tux Paint

Ofimática

• OpenOffice.org 1.1.3

• Kontact

• TextMaker

• PlanMaker

• Scribus 1.2

• Adobe Reader

• Quanta

• ReKall 2.2.1

Internet

• Firefox

• Thunderbird 0.8

• Mozilla 1.7.2

• Opera 7.5.4

• Kmail

• Evolution 2.0.1

Móvil e Inalámbrico

• Soporte para WLAN

• Bluetooth

• ACPI

• KitchenSync

• KPilot

Multimedia

• RealPlayer

• amaroK

• XMMS

• Kaffeine

• Xine

• Totem

• K3b

• vdr

• MainActor 5 demo

Administración de Sistemas

• Apache 2.2.0.50

• Bind 9.2.4

• Servidores LDAP

• NIS

• Samba 3.0.7

• NFS

• SSH

• Kerberos

• Suse Linux Firewall 2

• Servidor de terminal VNC

Suse Linux 9.2

Suse Linux soporta los componente de

PC más comunes. Para una lista de dis-

positivos soportados, recomendamos

visitar http://www.novell.com/. El hard-

ware mínimo es:

• Procesador: Pentium 1-4, AMDx,

Duron, Athlon XP, Athlon MP o Athlon

64.

• RAM: Al menos 128 MB, 256 MB reco-

mendado.

• Disco duro: al menos 500 MB; 2.5 GB

para sistema estándar recomendado.

Se ha de disponer de un lector de DVDs

para poder instalar Suse Linux utilizando

el DVD Suse Linux 9.2 de Linux

Magazine. Si su sistema dispone de un

lector de CDs que no es un lector de

DVDs, no podrá instalar el software de

este DVD. Si el sistema no arranca al

DVD automáticamente cuando el siste-

ma se inicia, acceda al menú de arran-

que y modifíquelo o introduzca los

comandos necesarios para arrancar

desde DVD. Vigile los mensajes de inicio

cuando acceda al menú de arranque o

consulte la documentación de su hard-

ware.

Requisitos del Sistema

Como es habitual, es casi imposible

meter todo lo que Suse tiene que ofrecer

en un sólo DVD, aunque sea de las carac-

terísticas que este mes presentamos con

Linux Magazine. Por ello, las empresas o

grupoes de usuarios responsables de las

distribuciones ponen al servicio de sus

usuarios repositorios de software para

que se puedan bajar aplicaciones, pro-

gramas y juegos, que no vienen en la dis-

tro por defecto.

Desde España, podemos acceder a la

red Iris que contiene un mirror del repo-

sitorio de Suse. También podemos insta-

lar paquetes desde repositorios no ofi-

ciales que suelen incluir paquetes no

disponibles en la versión oficial. Uno de

dichos repositorios es Packman, infor-

mación sobre la cual se encuentra dispo-

nible en http://www.links2linux.de/.

Para configurar a Yast con estas direccio-

nes, abrimos Yast desde el menú de

Inicio > Sistema > Yast y seleccionamos

Cambiar Fuente de Instalación. Una vez

se abra el diálogo, pulsamos en Añadir y

escogemos, por ejemplo, FTP. En el diá-

logo de configuración, en el campo

Nombre de Servidor, introducimos el

nombre del servidor, sin el protocolo.

Por ejemplo, si deseamos utilizar el

repositorio en la red Iris, escribiríamos

ftp.rediris.es

en este cuadro.

A continuación, hemos de decirle a Yast

donde en el servidor debe encontrar el

repositorio propiamente dicho. En la red

Iris está bajo

/sites2/ftp.suse.com/pub/suse/i38

6/9.2/

Para el repositorio de paquetes no oficia-

les de Packman, el servidor es

ftp.links2linux.de

y el directorio es

/pub/packman/suse/9.2/

Una vez configurado todas las direccio-

nes de repositorios, Yast actualiza la base

de datos y podremos instalar paquetes

indistintamente desde cualquiera de las

fuentes.

Más allá del DVD

Page 10: Linux Magazine - Edición en Castellano, Nº 07

10

NOTICIAS LINUX

Schlagwort sollte hier stehenLINUX USERNOTICIAS

10 Número 07 W W W . L I N U X - M A G A Z I N E . E S

La empresa malagueña Animatika aca-

bar de lanzar un sistema de código

abierto que permite que una máquina

Linux se comporte exactamente igual

que un servidor Active

Directory en una red tanto

sólo Windows, como híbrida.

El producto, denominado

ArcherNAS se encuentra en

fase de producción, habiendo

llegado a su versión 1.0 y

todo el código desarrollado

en su creación ha sido volca-

do al proyecto SAMBA bajo licencia

GPL.

Active Directory, una tecnología pro-

pietaria, cerrada e indocumentada de

Microsoft, sintetiza en un mismo paque-

te la funcionalidad de Kerberos, LDAP y

DNS. La futura versión 4 de SAMBA (pla-

neado para mediados del 2006), replica-

rá completamente la funcionalidad de

Active Directory.

“Lo realmente novedoso de nuestro

producto es que permite la inyección

ACTIVE DIRECTORY PORTADO A LINUXautomatizada de DNSs en la máquina

Active Directory” explica Jose María

Ruíz, líder del proyecto en Animatika. La

administración de un servidor

ArcherNAS es mínima.

“Hemos tomado un enfoque

de electrodoméstico” declara

Ruíz. “Configurar nuestro NAS

es bastante más sencillo que

configurar un router de

Telefónica”.

David Santo Orcero, CTO de

Animatika comenta: “Una vez

se ha dado de alta en Active Directory,se

puede administrar nativamente desde

Windows o Linux, al utilizar un panel de

control accesible por web”.

Según sus creadores, se han obtenido

con ArcherNAS rendimientos superiores

con SAMBA y NAS que con Windows.

Además, ArcherNAS funciona en máquinas

de alta gama, donde Windows no llega.

Animatika planea aplicar su tecnología

de integración con Active Directory en

toda una gama de productos Linux,

como pueden ser firewalls, puertas de

enlace y servidores de correo.

ArcherNAS se añade a la línea de pro-

ductos de Animatika. como pueden ser

sus clusters de alto rendimiento y de alta

disponibilidad.

Animatika cuenta con un largo histo-

rial de desarrollo de aplicaciones de soft-

ware libre.

Más información en:

http://us1.samba.org/samba/ftp/

tsig-gss/

http://www.animatika.net

Sun ha estado contribuyen-

do al clima general de

esquizofrenia y paranoia

que se respira

últimamente en

el mundo del

software libre,

al desvelar casi

simultáneamen-

te que es la

empresa que

más software

ha contribuido

al código abier-

to a la vez que

piensa oficial-

mente que la GPL es una

licencia depredadora.

Con la liberación de su pro-

pio sistema operativo, Open

Solaris, junto con NFS y

OpenOffice, entre otros, Sun

EL SOL Y LA LUNAha superado oficialmente a la

Universidad de Berkeley de

California en lo que se refiere

a a cantidad de

código libera-

do… mas, eso sí,

Sun ha liberado

su propio siste-

ma bajo su pro-

pia licencia, la

CDDL, una licen-

cia que permite

desarrollar soft-

ware propietario

a partir del códi-

go base libre

(¿no estaba la licencia BSD

para eso? En fin, que por

variedad de licencias que no

quede).

PERO el presidente de Sun,

Jonathan Schwartz, reciente-

mente realizó declaraciones

destinadas a levantar ampo-

llas en la comunidad a la cual

tanto dona. Y es que tildó a la

GPL de “depredadora” y a sus

apóstoles de “perros imperia-

listas estadounidenses”.

El razonamiento va más o

menos como sigue: si toma-

mos un ejemplo como Brasil

(escogido por el mismo

Schwartz), país donde se

están desarrollando tantas

herramientas GPL, como que

no se dan cuenta de que

están contribuyendo a que

Estados Unidos (el resto del

mundo no existe) sea más

fuerte debido a que la GPL

obliga a devolver a la comu-

nidad toda modificación y

mejora, y que, por tanto,

Brasil siempre estará en infe-

rioridad de condiciones.

Recuérdese que este es el

mismo señor que se refirió a

Linux en general como “el

Linux de Red Hat”, obviando

a Mandriva, Debian, Knoppix,

Suse, Slackware, Ubuntu…

¿Cómo llegarán semejantes

elementos a presidente? Por

que mira tu GWB…

Más información en:

http://blogs.sun.com/

jonathan

http://www.technewsworld.

com/story/news/42027.html

Page 11: Linux Magazine - Edición en Castellano, Nº 07

mienta rápida, equilibrada y barata para

ejecutar Linux como un sistema virtual

en Linux. Describiremos como configu-

rar su propio sistema virtual con UML y

le mostraremos por que los usuarios, los

desarrolladores y los administradores

han encontrado miles de aplicaciones

para UML.

Active Directory: El “killer applica-

tion” de los servidores de ficheros llega a

Linux. Vemos como empotrar Active

Directory en una máquina Linux de

manera transparente para su red

Windows, Linux o lo que sea.

Mac-on-Linux: Mac-on-Linux es una

herramienta libre para ejecutar Mac-OS

sobre un sistema Linux basado en

Power-PC. Le enseñaremos como obte-

ner lo mejor de ambos mundos sin

arranque dual. �

Herramientas para la computación virtual en Linux

ANFITRIONES E INVITADOS

11

Multimedia • PORTADA

11Número 07W W W . L I N U X - M A G A Z I N E . E S

Antes había que elegir un solo sis-

tema operativo. Después se

podían elegir más, pero habia

que reiniciar. En la actualidad, los usua-

rios prefieren tener toda la variedad pero

en un solo paquete.

¿Por qué no ejecutar aplicaciones

Windows en Linux? ¿Por qué no imple-

mentar una versión completa de

Windows, o Mac OS X, o Linux dentro

de un anfitrión Linux? A los desarrolla-

dores les gustan los sistemas virtuales

porque una aplicación sin probar puede

romper el PC virtual sin colgar el anfi-

trión. Los administradores de sistema

utilizan sistemas virtuales para probar

versiones del núcleo o para experimentar

con configuraciones de red. Los usuarios

solamente quieren hacer funcionar sus

aplicaciones preferidas en su sistema

operativo preferido. Este mes los siste-

mas virtuales son la historia de portada,

le ayudaremos a iniciarse en la computa-

ción virtual en Linux.

Aplicaciones Windows con Wine .12

VMWare 4.5.2 . . . . . . . . . . . . . . . . . . .17

User-Mode Linux . . . . . . . . . . . . . . .21

Active Directory . . . . . . . . . . . . . . . . .25

Mac-on-Linux . . . . . . . . . . . . . . . . . . .31

EN PORTADA

Nuestros artículos de este mes cubren

temas tales como:

Aplicaciones Windows con Wine:

Wine y las aplicaciones derivadas de él

le permiten ejecutar aplicaciones

Windows bajo Linux. Le mostraremos

como dar soporte a programa Windows

con Wine e introduciremos un par de

variantes de Wine: CrossOver Office y

Cedega.

VMWare 4.5.2: Si está buscando una

herramienta estable y bien probada

que le ayude a ejecutar una

versión completa de

Windows dentro de un

sistema Linux, inten-

te la respetable

VMware.

User-Mode

Linux: El

popular User-

Mode Linux

(UML) es

una herra-

Page 12: Linux Magazine - Edición en Castellano, Nº 07

12

Si se necesita que una aplicación Windows se ejecute en Linux, no hay otra

alternativa que usar Wine. Hemos investigado las versiones libre y comercial

de Wine para ver como se comportan ante situaciones reales de uso.

POR BERND VILLIGER, OLIVER FROMMEL Y JÖRG LUTHER

Wine, Crossover Office y Cedega

¿AGUA O VINO?

PORTADA • Wine

12 Número 07 W W W . L I N U X - M A G A Z I N E . E S

En 1993, Sun Microsystems des-

arrolló una herramienta que per-

mitía a los usuarios ejecutar las

aplicaciones Windows en Solaris, sin

necesidad de tener que portar la aplica-

ción. Unos cuantos meses después, se

hizo un intento para hacer que la herra-

mienta se ejecutara en BSD y Linux y

estos pasos marcaron el nacimiento de lo

que ha llegado a conocerse con el nom-

bre de Proyecto Wine. El nombre Wine

(vino en inglés), es un acrónimo al estílo

típico de GNU, y corresponde a “Wine is

not an Emulator” (Wine no es un

Emulador).

Y, es cierto, Wine [1] no es realmente

un emulador en el sentido tradicional. La

herramienta ni emula un CPU diferente,

ni, estrictamente hablando, emula un

sistema operativo. En realidad, Wine es

una capa de abstracción entre Linux y la

aplicación Windows que el usuario

desea ejecutar. Intercepta cualquier lla-

mada a la API de Windows realizada por

la aplicación e intenta convertirlas en lla-

madas equivalentes en el sistema Unix y

las X11. Desde un punto de vista técnico,

Wine es un cargador, que carga y ejecuta

programas Windows, y un conjunto de

bibliotecas que traducen o emulan las

llamadas a la API de Windows.

La mayoría de los problemas de Wine

reflejan el rol de traductor entre la apli-

cación Windows y Linux. Una traduc-

ción nunca puede ser tan buena como el

conocimiento de la lengua y la cultura

que posea el traductor. Es bien conocido

que a Microsoft no le gusta que los extra-

ños conozcan el funcionamiento interno

de su sistema operativo y sus aplicacio-

nes. Pero MS no es la única compañía de

software que le gusta tener secretos;

muchas otras compañías son reacias a

portar sus aplicaciones a Linux.

Acrobat Professional de Adobe es un

ejemplo de ello y es por este motivo por

el que hemos optado por usar Acrobat

Pro como conejillo de indias en nuestras

pruebas. La máquina que hemos usado

en la prueba es un portátil HP con un

Pentium 4 a 1,7GHz y 256 Mbytes de

RAM. Como sistema operativo hemos

escogido Suse Linux 9.0 Professional.

Instalación de WineLa mayoría de las distribuciones inclu-

yen Wine como componente estándar,

aunque el paquete no se suele instalar

por defecto. Para averiguar si Wine está

ya instalado en el sistema, se puede

introducir el siguiente comando para una

distribución basada en paquetes RPM:

rpm -qa | grep -i wine

Si Wine está instalado, se debería ver el

mensaje wine-20040505-1 (Suse 9.0) o

wine-20040813-7 (Suse 9.2). Como se

puede ver, la fecha de lanzamiento es al

mismo tiempo el número de versión.

Si se desea reemplazar cualquier ver-

sión antigua de la herramienta por una

más reciente (2005) es bastante fácil de

hacer y proporcionará la ventaja de tener

una configuración básica por defecto en

Page 13: Linux Magazine - Edición en Castellano, Nº 07

la mayoría de los casos. Sin embargo

habrá que desinstalar primero la versión

previa con el objeto de evitar problemas

(véase el Cuadro 1: “Eliminación de

Wine”).

La instalación no tiene nada de espec-

tacular. Primero, se descarga el paquete

(que ocupa unos 12Mb) desde WineHQ

[2]. Luego hay que conectarse como root

e instalarlo. En Suse 9.0, por ejemplo:

#rpm -ivh wine-20050111-U

SuSELinux90.i586.rpm

Preparing...U

######################## [100%]

1:wine...U

######################## [100%]

Este proceso completa la configuración

del tirón, ya que la versión actual viene

preconfigurada. Si se desea ver o modifi-

car la configuración, tan sólo hay que

ejecutar la herramienta winecfg, que per-

mite ver o cambiar las asignaciones de

las letras de los discos virtuales para los

dispositivos (Figura 4).

Instalación de AplicacionesWindowsAhora ya se puede instalar la primera

aplicación Windows. En nuestro caso,

hemos optado por una aplicación popu-

lar que oficialmente no está soportada

por Wine: Adobe Acrobat 5.0.

La fuente de instalación es el CD de la

aplicación y la letra del CD-ROM, en

nuestro laboratorio es la “Z:”; así que

podemos ejecutarla tecleando:

wine 'Z:\media\cdrom\AcrobatU

5\Setup.exe'

Hay que asegurarse de usar las rutas al

estilo Windows. También hay que usar

las comillas simples (‘) o las comillas

dobles (“) para la ruta de los programas.

Si no se hace, provocará que la shell de

Linux manipule el comando, los espa-

cios y el texto que le sigue.

La instalación de Adobe Acrobat

(Figura 1) tardó 15 minutos en nuestro

laboratorio y eso que tan sólo fue una

única aplicación. Pero valió la pena la

espera: después de terminar la configu-

ración, el siguiente comando

wine 'C:\Program Files\AdobeU

\Acrobat.exe'

nos proporcionó una instancia operativa

de Adobe Acrobat, como se puede ver en

la Figura 2.

No todas las instalaciones de progra-

mas son tan sencillas como esta. El

13

Wine • PORTADA

13Número 07W W W . L I N U X - M A G A Z I N E . E S

intentar instalar cualquier versión de

NetObjects Fusion (otro programa que

no está oficialmente soportado) demues-

tra los fallos típicos. La aplicación no se

puede instalar sin tener instalado previa-

mente Internet Explorer.

Alternativa: CrossoverOfficeSi realmente se está interesado en usar

Wine en un entorno de producción, sería

interesante que se le echara un vistazo al

paquete Crossover Office de CodeWeavers

[3], una versión comercial de Wine que

cuesta entre 39.95 US$ (versión estándar)

y 69 US$ (versión profesional multiusua-

rio). Crossover Office proporciona una

GUI y un manejo más amigable para el

usuario. Sin embargo, Crossover Office no

elimina los problemas habituales a los

que se enfrenta Wine (véase el Cuadro 2:

“Wine no es un emulador”). Además,

Crossover Office Standard es básicamente

un envoltorio que hace que sea más fácil

el uso de Wine.

Primero, veamos como Crossover

maneja una instalación de Acrobat. Esto

debería permitirnos probar las cualida-

des del producto en un escenario real.

Hemos usado el paquete de demostra-

ción de Crossover, que funciona durante

un mes tras instalarse, aunque hace falta

Independientemente de lo que haga, no

intente controlar instalaciones de Wine

múltiples o paralelas. Antes de instalar

una nueva versión, vale la pena eliminar

la versión anterior. Antes de nada, nece-

sita encontrar la versión que tiene insta-

lada:

# rpm -qa | grep -i wine

wine-20040505-1

Su sistema debería contestar con la eti-

queta de la versión, que debe indicar al

programa que la va a eliminar. En nues-

tro ejemplo sería rpm -e

wine-20040505-1. Luego eliminamos los

directorios que Wine crea para cada

cuenta:

# rm -rf /root/.wine

# rm -rf /home/user/.wine

[...]

Este paso debería limpiar los ficheros

basura, dejando el camino libre para la

actualización de Wine. Puede utilizar

este mismo método para quitar una ins-

talación de Wine que ha ido mal.

Cuadro 1: Eliminando Wine

Figura 1: Una imagen muy extraña: arranque del instalador de Windows de Acrobat en el escri-

torio de Linux con un emulador Wine…

Page 14: Linux Magazine - Edición en Castellano, Nº 07

(Figura 3). En la mayoría de los casos,

tan sólo hay que aceptar la configuración

por defecto. Cuando se haya acabado, se

debería ver la ventana principal tal como

se muestra en la Figura 6.

Tan solo hemos encontrado un punto

criticable: para evitar conflictos en una

etapa posterior, hay que instalar las fuen-

tes que Windows instala habitualmente.

La solapa Fonts en la ventana principal

realiza el trabajo por nosotros, de modo

que tan solo hay que descargarse las fuen-

tes requeridas para eliminar el problema.

De nuevo, probamos la instalación de

Adobe Acrobat Professional 5.0. Para ello

simplemente se hace clic en Install en la

solapa Add/Remove. En la ventana que

aparece, se selecciona Unsupported

Software y luego se apunta a la fuente de

instalación.

registrarse para poder acceder a la des-

carga del programa.

El proceso de instalación está basado

en un script de la shell:

install-crossover-standardU

-demo-4.1.sh

La instalación no tiene nada de especial

y los resultados son autoexplicativos

PORTADA • Wine

14 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Si queremos ejecutar juegos de

Windows en Linux, necesitamos Cedega

de Transgaming [4]. Cedega es una ver-

sión del emulador Wine API para el cual

los desarrolladores han añadido las fun-

ciones de las librerias multimedia

DirectX. Cedega hasta soporta juegos

actuales de Windows con gráficos com-

plejos tal como Half Life 2 o Far Cry.

Sin embargo, este tipo de funcionamien-

to no es gratis: Transgaming cobra 5

USD/EUR por mes con una suscripción

mínima de tres meses.

Si estamos interesado en echarle un vis-

tazo a Cedega, podemos descargarlo y

compilar la mayoría del software. Sin

embargo, la descarga carece de unos

cuantos componentes críticos, lo que

significa que muchos juegos protegidos

no se cargarán.

Cedega desde el CVS

Sin una suscripción el código está sólo

disponible vía sistema de control de ver-

siones CVS y necesitaremos el progra-

ma cvs para descargarlos. Suponiendo

que tenemos cvs en el equipo, primero

necesitaremos identificarnos en el servi-

dor:

cvs -d:pserver:cvs@U

cvs.transgaming.U

org:/cvsroot login

Si se nos pregunta por una clave,

simplemente teclearemos cvs. Si

esto funciona, el programa no

nos dará ninguna respuesta, pero

se quejará si las cosas van mal.

Luego descargaremos los fiche-

ros de la máquina:

cvs -z3U

-d:pserver:[email protected]

ming.U

org:/cvsroot co winex

Tras un rato, tendremos el código

completo en el directorio winex.

La compilación sigue los pasos

normales, aunque Fedora Core 3 requie-

re algunas opciones adicionales:

./configure --enable-openglU

--enable-pthreads

El comando make arranca el compilador

y su -c 'make install' coloca al programa

en el directorio correcto en el disco. A

continuación podemos copiar el fichero

de configuración de ejemplo al lugar

correcto:

cp documentation/samples/U

config ~/.wine/config

Antes de empezar, necesitaremos crear

unos cuantos ficheros y directorios.

Cedega espera encontrarse con parte de

la estructura de directorios de Windows.

El fichero de ejemplo supone que se

tiene un directorio llamado ~/.transga-

ming. Hay que crear un directorio con

este nombre o cambiar este a

~/.wine/config; si hacemos esto, utilizare-

mos este directorio para los siguientes

pasos. Añadamos el subdirectorio

siguiente como sigue:

mkdir -p ~/.transgaming/c_driveU

/windows/system32

mkdir ~/.transgaming/c_drive/U

windows/fonts

Necesitaremos añadir una entrada para

una unidad de CDROM en el fichero de

configuración. La entrada para el primer

disco duro IDE es como sigue:

[Drive H]

"Path" = "/media/cdrom"

"Type" = "cdrom"

"Label" = "CD-ROM"

"Filesystem" = "win95"

"Device" = "/dev/hdc"

Ahora podemos instalar el juego de

Windows. Utilizamos la edición de

invierno del juego Moorhuhn que es

muy popular en Europa. Con Cedega,

necesitamos lanzar wine para instalar el

juego:

wine moorhuhn_we.exe

Completamos los pasos requeridos para

poner el programa Moorhuhn en su

“disco” Cedega, o sea, su directorio

.transgaming/c_drive, que es el equiva-

lente al C: de Windows.

Para asegurarnos de que el juego encon-

trará los ficheros, cambiaremos el direc-

torio de instalación y lo arrancaremos

desde ahí:

cd .transgaming/c_drive/Program\

U

Files/Phenomedia\ AG/Moorhuhn\ U

Winter-Edition

wine MoorhuhnWinter.exe

El juego se ejecutará sin ningún

tirón y a una velocidad normal

(ver Figura 5). Los otros juegos

que hemos probado bajo Cedega,

nos dieron mensajes de error y se

colgaron cuando intentamos

arrancarlos ya que sospecharon

que Cedega atentaba contra el

sistema de protección de copia.

La versión comercial de Cedega

tiene código que evita estos

acontecimientos. Si quiere ejecu-

tar juegos actuales, de copia pro-

tegida, no hay más remedio que

optar por las versiones comer-

ciales.

Jugando con Cedega

Figura 5: El juego Moorhuhn ejecutándose en Cedega.

Page 15: Linux Magazine - Edición en Castellano, Nº 07

Después de instalar una aplicación, se

puede usar la solapa Menus en la venta-

na principal de Crossover o usar la línea

de comandos para ejecutar la aplicación

Windows:

tarse mejor si se mantiene las configura-

ciones por defecto. Las aplicaciones

Windows que explícitamente necesiten

NT 4 o NT 5 (Windows 2000), normal-

mente no se ejecutarán (o por lo menos

Wine • PORTADA

Figura 3: Los pasos de instalación y configuración tienen lugar en la

ventana principal de Crossover Office.

Figura 2: Aunque oficialmente no está soportado por Wine, Adobe

Acrobat se muestra cooperativo.

~/cxoffice/bin/acrobat

No tiene mucho sentido especificar la

versión de Windows como entorno. Los

programas Windows tenderán a ejecu-

Page 16: Linux Magazine - Edición en Castellano, Nº 07

Conclusión

Wine es un intento ambicioso para

ejecutar aplicaciones nativas

Windows en sistemas Unix. Como

aplicación minimalista, Wine se res-

tringe a sí misma a proporcionar un

servicio de traducción entre el sistema

operativo y la aplicación. La simplici-

dad del soporte tanto del hardware

como del software es una de

sus mayores ventajas.

Crossover Office ayuda a

los usuarios no técnicos

de Linux a acceder a la

potencia de Wine. Pero

antes de comprarlo, se debería probar

la versión de demostración de

Crossover para asegurarse de que la

aplicación Windows que se necesita

realmente funciona. Si una aplicación

no se ejecuta ni en Wine ni en

Crossover, la única alternativa que

resta es probarla en una máquina vir-

tual, como la aplicación comercial

VMware o la gratuita Qemu. �

no funcionarán bien) en Wine, como nos

sucedió con nuestra prueba de Adobe

Acrobat 6: El instalador inmediatamente

falló. Por el contrario, Crossover Office

tiene una solución simple para reiniciar

Windows. Para ello, se teclea el siguiente

comando:

./cxoffice/bin/cxreboot

La Figura 7 muestra una captura

de pantalla del mensaje que

aparece luego. Desde

luego, el mensaje

puede ser fácilmente

incomprendido.

PORTADA • Wine

16 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] WineHQ: http://www.winehq.org/

[2] Paquetes de Wine: http://www.

winehq.org/site/download

[3] Codeweavers: http://www.

codeweavers.com/

[4] Transgaming: http://www.

transgaming.com/

RECURSOS

Figura 6: Tras completar la instalación simple, podemos configurar directamente Crossover

Office.

Figura 7: ¿Quién sabe si el icono de reiniciar

significa una inicialización de Crossover o

algo más drástico?

Figura 4: El programa winecfg nos ayuda a configurar la instalación de Wine.

A diferencia de Wine, un emulador real

crea un área aislada en la que simula un

ordenador. Hay incluso que instalar un

sistema operativo de forma separada

para poder usar “esta máquina dentro

de otra”. Se puede instalar y usar cual-

quier aplicación escrita para el sistema

operativo de la máquina virtual. La pér-

dida de rendimiento debido a la sobre-

carga de la simulación y el coste de la

licencia (la máquina virtual necesita un

sistema operativo completo) son las

principales reticencias a esta solución.

Wine implementa una alternativa lógica:

en vez de simular el sistema operativo

completo, se limita a simular un entorno

que haga que las aplicaciones Windows

se sientan en casa. Y esto nos lleva al

nombre que se usa internamente en

Wine, “Fake Windows”:

# ls -a /home/user/.wine

dosdevices fake_windows [...]

Las aplicaciones que acceden a elemen-

to específicos de Windows a menudo se

estrellan contra un muro (virtual).

Cuadro 2: Wine no es unEmulador

Page 17: Linux Magazine - Edición en Castellano, Nº 07

Apesar del éxito de la compatibili-

dad de aplicaciones basadas en

WINE, es posible que tengamos

la necesidad de emular todo el PC. Por

ejemplo, puede ser que deseemos probar

un programa Windows que no funciona

en WINE, configurar un número de

máquinas de prueba sin estar limitado

por las tablas de partición, o simplemen-

te probar su nuevo website usando unos

cuantos sistemas operativos y navegado-

res. Si es así, una máquina virtual es la

forma de conseguirlo.

EngañosA diferencia de los emuladores de API

como WINE, VMware workstation emula

un ordenador completo como un progra-

ma de software. El denominado sistema

operativo invitado funciona dentro de la

emulación VMware sin que pueda distin-

guir este entorno de un PC de verdad.

VMware [1], la empresa del mismo nom-

bre que está tras este producto (converti-

da en filial de EMC corporation en 2004),

tiene versiones Linux y Windows del

emulador. La versión en caja cuesta 199$

en la tienda VMware [2]. La versión para

descarga cuesta solamente 10$ menos

[3].

Para que la emulación ejecute cual-

quier cosa, con una velocidad aceptable,

es necesario que el PC anfitrión sea bas-

tante rápido. VMware recomienda un

Pentium II o una CPU AMD equivalente,

256 MBytes de RAM, un adaptador gráfi-

co de 16 bit y por lo menos 20 Mbytes de

espacio libre en el disco duro para el

software VMware. Por supuesto que

habrá que añadir espacio en disco en el

anfitrión para que esté disponible para el

sistema invitado y una tarjeta de red;

Acaba de publicarse la versión 4.5.2 del emulador comercial de PC VMware. Para muchos usuarios VMware

es el PC virtual más destacado. En este artículo os contaremos las novedades de VMware Workstation 4.5.2 y

enseñaremos como inicializar y hacer funcionar Linux en VMware. POR HAGEN HÖPFNER

PCS EN PCS

El emulador de PC VMware Workstation 4.5.2 para Linux

PCS EN PCS

17

WMware • PORTADA

17Número 07W W W . L I N U X - M A G A Z I N E . E S

suponiendo que el PC emulado necesite

acceder a la red.

Estas especificaciones deben conside-

rarse como la configuración mínima

necesaria para que VMware pueda hacer

funcionar mínimamente como sistema

invitado a cualquier producto de

Microsoft, desde MS-DOS hasta

Windows 2003 Server, la mayoría de las

distribuciones principales de Linux,

Novell Netware 5/6, Solaris 9/10 para

x86 y FreeBSd. Pero extraoficialmente,

VMware dará soporte a un amplio rango

de otros sistemas operativos. El sistema

engaña al SO invitado detectando el

hardware listado en “Cuadro 1:

Hardware emulado.”

Nuestro laboratorio de sistemas utilizó

para este artículo VMware para Linux

4.5.2 y un PC anfitrión con Suse Linux

9.1, una CPU AMD Athlon XP 1900+,

Page 18: Linux Magazine - Edición en Castellano, Nº 07

Adquisiciónde VMwareComo acabamos

de mencionar, una

licencia de

VMware, no es

exactamente bara-

ta. Si prefiere pro-

bar el emulador

antes de invertir

199$, hay disponi-

ble una licencia de

prueba durante 30

días. VMware

solamente le pedi-

rá que se registre

antes de descar-

garla [3] y le

enviara una clave

de prueba por email. Los usuarios regis-

trados pueden descargar un paquete rpm

y un fichero tar. en nuestro laboratorio

usamos el paquete RPM, que se instala

fácilmente tecleando su -c "rpm -Uhv

VMware-workstation-4.5.2-8848.i386.rp

m".

Si intenta lanzar el programa teclean-

do directamente vmware tras la instala-

ción, recibirá el saludo de error mostrado

en la Figura 2. VMware precisa que se

lance el guión de configuración

vmware-config.pl antes de utilizar el pro-

grama. El guión inserta el anfitrión y el

emulador. El PC virtual accede en parte

al hardware físico y necesita sus propios

módulos del núcleo en el sistema anfi-

trión para hacerlo.

VMware no tiene un módulo del

núcleo precompilado para Suse Linux

9.1; en vez de eso el guión de configura-

ción genera el módulo. Para hacerlo,

necesita un compilador de C, que en

Linux suele ser gcc. En Suse 9.1 el com-

pilador está localizado en /usr/bin/gcc

tal como nos indica whereis gcc.

Usa la fuerza… digoooo, lafuenteEl modulo VMware no se compilará a

menos que se tengan las fuentes del

núcleo actual. Suse tiene las fuentes en

el paquete kernel-source, el cuál proba-

blemente necesitaremos instalar y modi-

ficar para que se corresponda con el

núcleo. Esto es fácil de hacer con la

ayuda de YaST y así podremos pasar a

preparar las fuentes:

cd /usr/src/linux

su -c "make cloneconfig && makeU

prepare-all"

Tras completar estos pasos, tecleamos su

-c vmware-config.pl para arrancar el

guión de configuración. El guión le invita

a leer y aceptar el acuerdo de licencia.

Cuando el guión de configuración nos

pregunta donde se almacenan los archi-

vos de las cabeceras del núcleo simple-

mente pulsamos la tecla [ENTER] para

aceptar la configuración predeterminada

512 Mbytes de RAM, un adaptador gráfi-

co basado en el chipset de NVIDIA

GeForce MX4000 (con el controlador de

dispositivo comercial de NVIDIA) y un

adaptador WLAN.

PORTADA • WMware

18 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: VMWare nos permite ejecutar un sistema Windows comple-

to dentro de su ordenador Linux.

Figura 2: Si se intenta ejecutar VMware, des-

pués de completar la instalación, sin haberlo

configurado, se mostrará este mensaje de

error.

VMware emula un PC completo con una

plataforma hardware determinada. El

hardware emulado no tiene nada que

ver con el equipo que hace de anfitrión,

ya que el sistema invitado solo ve los

componentes virtuales.

Procesador:

• Intel Pentium o posterior

• AMD Athlon o posterior

(Dependiendo de la CPU original)

• Soporte experimental para las proce-

sadores AMD64 y IA 32e RAM:

• Hasta 3.6 GBytes dependiendo de la

memoria física

• Un máximo de 4 GBytes para todas

las máquinas virtuales

Unidades IDE:

• Hasta 4 unidades IDE

• Discos físicos y virtuales (máx. 128

GBytes)

• Unidades CD/DVD-ROM

Unidades SCSI:

• Hasta 7 Unidades

• Discos físicos y virtuales (máx. 256

GBytes)

• Soporte de SCSI genérico

• Soporte para escáneres, CD/DVD-

ROM, unidades de cinta, etc.

• Controlador de entrada salida LSI

LOGIC LSI53C1030 Ultra320

• Anfitrión compatible con el adaptador

de bus Mylex (BusLogic) BT958 (sola-

mente sobre Windows XP con contro-

ladores de dispositivo adicionales)

Medios extraíbles

• Unidades CD-ROM/CD-R/CD-RW (físi-

cas o imágenes ISO)

• Unidades DVD-ROM

• Un máximo de 2 unidades de 1.44

Mbytes (físicas o como imágenes)

Hardware gráfico

• VGA y SVGA con BIOS VESA

Puertos:

• Hasta un máximo de 4 puertos serie

(COM)

• Hasta 2 puertos paralelos bidireccio-

nales (LPT)

• Dos controladores USB 1.1 UHCI

• Teclado Windows de 104 teclas

• Ratón PS/2

Dispositivos de red:

• Un máximo de tres adaptadores de

red virtuales (Ethernet)

• Tarjeta de sonido compatible con

AMD Pcnet PCI II

• Compatible con Sound Blaster Audio

PCI (sin soporte para MIDI ni para

joystick) BIOS:

• Soporte para la versión 6 VESA BIOS

de PhoenixBIOS 4.0 con DMI-v2.2/

SMBIOS

Cuadro 1: Hardware emulado.

Page 19: Linux Magazine - Edición en Castellano, Nº 07

del guión. Tras un breve instante, durante el cual el

guión de configuración construye el binario, se nos pre-

guntará si necesitamos la versión con capacidades de

red de VMware. Si deseamos la versión con capacidades

de red, además deberemos optar por el soporte de NAT

y permitir que el guión asigne una subred privada.

Compartición de Disco y RedContestamos “sí” cuando cuando nos pregunte Do you

want to be able to use host-only networking in your virtual

machines? (¿Desea habilitar la conexión del Anfitrión

solamente a través de la red?), si queremos que esta

variante de la red esté disponible más adelante. “Anfitrión

sólo por red” significa que el PC emulado sólo puede

tener acceso al sistema anfitrión a través de la red. El PC

emulado puede utilizar la conexión a Internet del anfi-

trión con NAT o en modo bridge. En modo puente

(bridge), el PC emulado se comporta como si estuviera

conectado directamente a la LAN. Esto necesita una direc-

ción IP propia que debe ser valida en la red local. Si quie-

re que VMware monte el sistema de archivos del anfi-

trión, el guión creara un dispositivo de red solo para el

anfitrión (host-only). El guión solo necesita un nombre de

usuario y contraseña para configurar Samba; sin embargo

el usuario Samba debe ser un usuario normal en el anfi-

trión. Para añadir usuarios posteriormente, hay que ser

root y teclear /usr/bin/vmware-smbpasswd vmnet1 -a

username; donde vmnet1 es el dispositivo de red Samba.

ComienzoTras completar la configuración, arranca vmware tal

como se ve en la Figura 3. Ahora puede hacer clic en

New Virtual Machine para lanzar el asistente. El asisten-

te le pide que seleccione el sistema operativo invitado

que se instalará, especificar el archivo que emulará el

sistema de archivos y ajustar el tamaño del mismo. El

resultado se puede apreciar en la Figura 4.

Haciendo click sobre Start this virtual machine se ini-

ciara el PC virtual. La máquina emulada aún no tiene

un sistema operativo, hay que instalar el sistema opera-

tivo como si fuera un ordenador de verdad. Para insta-

lar el sistema operativo invitado se debe insertar el CD

de instalación en la unidad del anfitrión.

Antes de iniciar el sistema, la versión no registrada de

VMware le recordará que necesita un número de serie.

Si se adquiere una licencia, ésta incluye un número de

serie. El número de serie para la versión de prueba se

envía por email. Introduzca el número de serie en la

ventana, como muestra la Figura 5; la entrada del menú

Help|Enter Serial Number le llevará al sitio correcto.

@ZT Instalación del invitado

En la versión de prueba, tuvimos que habilitar el

soporte legacy de nuestro CD ROM para instalar directa-

mente desde el CD. El elemento DVD/CD-ROM, que

permite configurar esta opción, está situado en el menú

Devices de la ventana del PC virtual.

Si el programa de instalación le invita a entrar datos,

primero debe estar seguro de que el PC emulado está

usando su teclado y su ratón. Para verificar el teclado y el

Page 20: Linux Magazine - Edición en Castellano, Nº 07

cargue un Cd simulado en la unidad de

CD emulada. El controlador de dispositi-

vo necesario está en el CD.

Cuidado con las NuevasDistrosEn nuestro laboratorio, hemos sido inca-

paces de hacer funcionar VMware sobre

Suse Linux 9.2. A pesar de haber com-

pletado las distintas fases de instalación

y configuración tal como se ha descrito,

VMware no ha colaborado mucho que

digamos. El sistema anfitrión fue incapaz

de configurar su adaptador USB WLAN y

arrancar desde el CD dentro del PC vir-

tual fue una cuestión de suerte.

VMware le hará saber si el sistema que

se está intentando utilizar es demasiado

nuevo. Antes de comenzar, debe echar

una ojeada a la lista de las distribuciones

Linux a las que se da soporte oficial (véase

el “Cuadro 2: Distribuciones Anfitrión”) y

hay que tomarse esta lista en serio. Si se

decide intentar con un Linux que no está

en el listado, descargaremos primero la

licencia de prueba durante 30 días para

cerciorarse de que VMware funciona de

correctamente con la distro elegida. �

ratón, haga click en la ventana del emula-

dor. En ese momento VMware secuestrará

el teclado y el ratón; pero puede pulsar

[Ctrl] y [Alt] simultáneamente para salir

de esta jaula. Si está instalando Windows

o Linux como sistema operativo invitado,

es preferible que instale las herramientas

de instalación [4]. Estas herramientas

aceleran la salida gráfica, dan soporte de

alta resolución y le dice a VMware que

deje el ratón si lo arrastra fuera del borde

de la ventana. Esto le ahorrará tener que

estar pulsando continuamente [Ctrl] y

[Alt].

El elemento del menú VM|Install

VMware Tools... le indica a VMware que

PORTADA • WMware

20 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] Página de VMware: http://www.

vmware.com/

[2] Tienda VMware: http://www.vmware.

com/vmwarestore/newstore/

[3] Página de descarga: http://www.

vmware.com/download/workstation.

html

[4] Herramientas VMware: http://www.

vmware.com/support/ws4/doc/

new_guest_tools_ws.html

RECURSOS

Figura 3: La primera vez que arranca, VMware está desconfigurado.

Se puede crear una nueva máquina virtual o cargar una configuración

ya existente.

Figura 4: El usuario ha decidido instalar Windows XP en la máquina

virtual.

Figura 5: VMware no funcionará hasta que se

introduzca un número de serie correcto.

Recibiremos un número de serie cuando

compremos una licencia o al descargar la

versión de prueba de 30 días.

La versión Linux de VMware funciona

sobre un cierto numero de las principa-

les distribuciones. Como VMware viene

con sus propios módulos del núcleo,

usar VMware en cualquier otra variante

de Linux es complicado. Los fabricantes

dan soporte a las siguientes distribucio-

nes:

• Mandrake Linux 9.0 (Núcleo 2.4.19)

• Mandrake Linux 8.2 (Núcleo 2.4.18-

6mdk)

• Red Hat Enterprise Linux 3.0 (Núcleo

2.4.21 or 2.4.21-15.EL)

• Red Hat Enterprise Linux 2.1 (Núcleo

2.4.9-e3)

• Red Hat Linux Advanced Server 2.1

(Núcleo 2.4.9-e3)

• Red Hat Linux 9.0 (Núcleo 2.4.20-8 o

2.4.20-20.9)

• Red Hat Linux 8.0 (Núcleo 2.4.18)

• Red Hat Linux 7.3 (Núcleo 2.4.18)

• Red Hat Linux 7.2 (Núcleo 2.4.7-10,

2.4.9-7, 2.4.9-13, 2.4.9-21 o 2.4.9-31)

• Red Hat Linux 7.1 (Núcleo 2.4.2-2 o

2.4.3-12)

• Red Hat Linux 7.0 (Núcleo 2.2.16-22 o

2.2.17-14)

• Suse Linux 9.1 (Núcleo 2.6.4-52)

• Suse Linux 9.0 (Núcleo 2.4.21-99)

• Suse Linux Enterprise Server 8

(Núcleo 2.4.19)

• Suse Linux 8.2 (Núcleo 2.4.20)

• Suse Linux 8.1 (Núcleo 2.4.19)

• Suse Linux 8.0 (Núcleo 2.4.18)

• Suse Linux Enterprise Server 7

(Núcleo 2.4.7 y parche 2)

• Suse Linux 7.3 (Núcleo 2.4.10)

Cuadro 2: Distribuciones Anfitrión

Page 21: Linux Magazine - Edición en Castellano, Nº 07

El versatil

y popular User-

Mode Linux (UML) [1] crea un sis-

tema Linux completamente funcional en

un host Linux. UML tiene numerosas apli-

caciones en el mundo de Linux. Muchos

desarrolladores confían en UML para pro-

bar sus aplicaciones sin poner todo el sis-

tema en peligro. Los usuarios de Linux

pueden ejecutar UML para experimentar

con versiones del kernel sin tener que

preocuparse de parches nuevos o experi-

mentales. Los administradores de siste-

mas usan UML para probar configuracio-

nes. Es posible incluso ejecutar varias ver-

siones de UML

en el mismo equipo

para simular una red.

¿Qué es User-Mode Linux?User-Mode Linux no es realmente un

emulador, ni una API. La mejor manera

de explicarlo es comenzar con un vistazo

al papel del kernel de Linux.

El kernel ejecuta procesos y se comu-

nica con el hardware. Cuando un proce-

User-Mode Linux parece Linux porque es

Linux. Encontraremos cientos de usos

para este rápido y práctico sistema virtual

de Linux. POR FABRIZIO CIACHI

Primeros pasos con User-Mode Linux

LINUX DENTRO DELINUX

21

UML • PORTADA

21Número 07W W W . L I N U X - M A G A Z I N E . E S

Encontraremos un documento muy inte-

resante que explica cómo configurar un

sistema UML con SELinux en [15]. Un

sistema UML con SELinux habilitado

puede ser muy útil para crear servidores

más seguros y probar los principios de

SELinux sin poner el sistema en peligro.

SeLinux dentro de UML

Page 22: Linux Magazine - Edición en Castellano, Nº 07

Esta orden instala el kernel UML y tam-

bién otras utilidades. Con otros adminis-

tradores de paquetes el proceso es igual-

mente simple, pero si aparecen proble-

mas con estos, o tenemos problemas de

memoria durante el arranque [2], pode-

mos descargar un kernel Linux normal

(recomendamos la versión 2.4.27 [3]) y

el parche UML [4]. Podemos encontrar

otros paquetes UML en [5]. Cuando

hayamos descargado los archivos del

parche y el kernel (en el mismo directo-

rio), abrimos un terminal y ejecutamos

las siguientes órdenes:

$ bunzip2 linux-2.4.27.tar.bz2

$ tar -xvf linux-2.4.27.tar

$ bunzip2 uml-patch-2.4.27-1.bz2

$ patch -p1 -d linux-2.4.27U

< uml-patch-2.4.27-1

$ cd linux-2.4.27

$ make menuconfig ARCH=um

$ make linux ARCH=um

$ strip linux

Después de completar con éxito estas

órdenes,tendremos un arhivo llamado

“linux” en nuestro directorio original.

Este archivo es el kernel de User-Mode

Linux que usaremos para arrancar el sis-

tema virtual Linux.

Para conseguir que UML funcione

adecuadamente, necesitamos incluir

so quiere comunicarse con un dispositi-

vo (por ejemplo para mostrar algo por

pantalla, imprimir un documento o

copiar un archivo a un disco), el proceso

le pide al kernel de Linux controlar la

comunicación con el hardware (ver

Figura 1).

User-Mode Linux es un kernel de

Linux que se ejecuta como un proceso.

La diferencia entre un kernel UML y un

kernel ordinario es que el kernel UML no

se comunica directamente con el hard-

ware. En su lugar, los comandos pasan al

kernel real del sistema que lo alberga, el

cual controla la comunicación con el

hardware.

Debido a que el sistema virtual y el sis-

tema host son ambos Linux con estruc-

turas prácticamente idénticas, la comu-

nicación pasa muy eficientemente del

sistema virtual al host, requiriendo muy

pocas cabeceras de abstracción o traduc-

ción.

Configurar UMLPodemos instalar User-Mode Linux con el

administrador de paquetes. Por ejemplo,

con Debian necesitamos teclear las

siguientes líneas como root:

#apt-get installU

user-mode-linuxU

uml-utilitiesU

kernel-patch-uml

PORTADA • UML

22 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: Estructura habitual de procesos en

Linux .

Figura 2: UML se ejecuta como un proceso.

En esta figura, Proc1 se ejecuta en el sistema

host Linux, mientras que Proc2 lo hace en

un sistema virtual User-Mode Linux.

Quizás la mejor manera de entender las

ventajas de UML es considerar que exis-

ten tres posibilidades en este tipo de

software:

*Emulación del software

*Emulación del hardware

*Sin emulación

Bochs es uno de los sistemas de emula-

ción del software más famosos. Su prin-

cipal característica es emular la arquitec-

tura hardware IA-32, llamada también

x86 por encima del sistema operativo, ya

sea Windows, MacOS o Linux. Dado que

es el hardware lo que se emula, se

puede instalar cualquier sistema operati-

vo x86 sobre él (Linux, Windows, Dos y

demás), pero la ejecución es muy lenta,

ya que se necesita traducir cada instruc-

ción del sistema operativo invitado al

sistema operativo que lo alberga.

La emulación del hardware consiste en

código compilado en la arquitectura

hardware nativa. Un emulador hardware

es más eficiente que el emulador softwa-

re, pero necesita interceptar todas las lla-

madas al hardware. Esta solución tiene

como gran desventaja que el código

debe particularizarse para una arquitec-

tura hardware que debe ser la misma

tanto para el entorno del host como del

alojado. Un ejemplo de este tipo de

emulador es VMware [5], un sistema de

emulación comercial.

User-Mode Linux pertenece a esta últi-

ma categoría. No necesita emular un

hardware específico, sino que se comu-

nica casi directamente con el hardware

real. Las instrucciones pasan eficiente-

mente desde el kernel de UML hasta el

kernel del host. UML puede ejecutar

código nativo, y alcanza un retardo de un

20% como máximo respecto de la ejecu-

ción del mismo código en el host.

Elegir emulación

Etherap, TUN/TAP Transportes usados para intercambio de paquetes entre el sistema virtual y

el host real.

Switch daemon Un transporte diseñado para la interconexión de redes virtuales con otros

sistemas UML.

Multicast Otro transporte diseñado para interconexión de redes virtuales

Slip, slirp Transporte usado principalmente cuando Etherap o TUN/TAP no están dis

ponibles o si no tenemos acceso como root a la configuración de redes del

host.

Pcap Un transporte que facilita una interfaz de red de sólo-lectura y es, por tanto,

una buena opción para monitorización de redes.

Tabla 1: Tipos de transporte

Si nuestro interés en UML es probar dis-

tribuciones Linux, podemos optar asi-

mismo por el programa de emulación

de sistemas QEMU [12]. QEMU (que

está basado en Bochs [13]) es muy fácil

de instalar, configurar y usar. Puede

encontrar más información sobre QEMU

en el artículo “Mundos Virtuales:

Emulación de Sistemas con QEMU” en

Linux Magazine #5, de abril de 2005 [14].

QEMU: Una buena alternativa

Page 23: Linux Magazine - Edición en Castellano, Nº 07

otros dos elementos mas en el puzzle:

un sistema de ficheros (una imagen

comprimida de una partición de Linux

que contenga todos los programas) y

las utilidades UML. Para el sistema de

ficheros raíz, podemos encontrar todas

las imágenes disponibles en [6].

Necesitaremos descargar las utilidades

UML desde [7] y teclear las siguientes

órdenes:

$ bunzip2 uml_utilitiesU

_XXXXXXXX.tar.gz

$ tar -xvf uml_utilitiesU

_XXXXXXXX.tar

$ cd tools

$ make all

$ make install DESTDIR=/

Ahora tenemos un directorio que contie-

ne un sistema de archivos raíz. No olvi-

demos colocar el programa linux en un

lugar donde podamos usarlo (si no lo

hemos movido, estará aún en el directo-

rio del linux-2.4.27). Tecleamos las

siguientes órdenes para leer el sistema

de archivos raíz:

$ bunzip2 U

root_fs_toms1.7.205.bz2

$ linux U

ubd0=root_fs_toms1.7.205

El parámetro ubd0= le indica al sistema

virtual que use el archivo especificado

como el sistema de archivos raiz.

Si todo ha ido bien, veremos el sistema

virtual arrancando (véase Figura 3), y

podemos entonces entrar en el sistema

virtual con el nombre de usuario root y

contraseña root.

Compartir el sistema dearchivos raízPodemos arrancar dos o más máquinas

virtuales usando el mismo sistema de

ficheros raíz. El driver udb0 usa un

mecanismo llamado Copy-On-Write

(COW), que lee el sistema de archivos

raíz como un dispositivo compartido de

sólo-lectura y guarda los cambios en un

archivo privado de lectura/escritura (el

archivo COW). Por ejemplo, si queremos

arrancar dos máquinas virtuales (VM1 y

VM2) con el mismo sistema de ficheros,

necesitamos abrir dos sesiones de termi-

nal y teclear las siguientes órdenes:

[xterm 1]$ linuxU

ubd0=uml_vm1.cow,U

root_fs_toms1.7.205

[xterm 2]$ linuxU

ubd0=uml_vm2.cow,U

root_fs_toms1.7.205

Todas las modificaciones de los dos hosts

virtuales se escribirán con sus respectivos

archivos COW. En realidad, el sistema de

archivos no se comparte, dado que ambas

ejecuciones son independientes una de la

otra. Al crear dos archivos COW es impor-

tante evitar el arranque del sistema de

ficheros directamente (con

ubd0=root_fs_XXX), por que cada archi-

vo COW registra el tamaño y la marca de

tiempo del sistema de archivos raíz, y

cualquier modificación hará que los fiche-

ros COW queden inutilizados. La sintaxis

correcta para el siguiente reinicio, cuando

tengamos un archivo COW es la siguien-

te:

[xterm 1]$ linuxU

ubd0=uml_vm1.cow

[xterm 2]$ linuxU

ubd0=uml_vm2.cow

Redes Virtuales y rRealesUML nos ofrece unas cuantas opciones

interesantes para redes virtuales en siste-

mas Linux. Una vez tengamos nuestro

sistema virtual UML listo y ejecutándose,

puede que queramos experimentar la

conexión entre el sistema virtual con su

sistema host o con otros siste-

mas virtuales.

Encontraremos una

descripción exhausti-

va de interconexión

de redes con UML

en [8].

La idea principal

en la intercone-

xión de redes

con UML es

que

UML • PORTADA

23Número 07W W W . L I N U X - M A G A Z I N E . E S

Figura 3: Arranque del sistema virtual UML.

Page 24: Linux Magazine - Edición en Castellano, Nº 07

nos facilitan distintas opciones en la

capa de transporte para la administra-

ción de paquetes entre el sistema virtual

y su host. La tabla 1 muestra algunos de

los tipos de transporte disponibles en

UML.

Para habilitar un dispositivo de red en

la máquina virtual, le pasamos una cade-

na como la siguiente en la línea de

comandos del kernel:

eth<n>=U

<transport>,<transport

args>

Donde <n> representa la

interfaz del host real (p.ej.:

eth0) al que se conectará la

máquina virtual. La explica-

ción teórica de esto es que en

la máquina virtual UML hay

un dispositivo eth0 que corresponde al

dispositivo tap0 en el host real. Esta

interfaz tap0 se conecta directamente a

la interfaz eth0 del host real.

Por lo tanto podemos teclear:

linux ubd0=root_fs_slack8.1U

eth0=ethertap,tap0,U

fe:fd:0:0:0:1,192.168.0.254

para permitir a UML configurar eth0 en la

máquina virtual con su propia dirección

IP.

La dirección IP del tap0 real y el eth0

virtual puede ser la misma para simplifi-

car la configuración. (Véase [8] para

configuraciones de red más complejas).

Necesitaremos configurar la interfaz

en la máquina virtual (/etc/hosts,

/etc/resolv.conf, /etc/network, etc.)

para tener un acceso a Internet ple-

namente operativo en el entorno

UML.

ConclusiónUser-Mode Linux nos permite una

manera rápida y conveniente de crear

sistemas virtuales Linux dentro de

Linux. Podemos utilizar UML como

herramienta para planificar, modelar,

probar y buscar fallos en sistemas

Linux. UML es también la base de

muchos otros proyectos de código

abierto y experimentos, así como de

aplicaciones para negocios y servicios

personalizados de hospedaje. Puede

que User-Mode Linux no sea fácil de ins-

talar y configurar, pero si somos capaces

de ponerlo en marcha, le encontraremos

multitud de usos. �

PORTADA • UML

24 W W W . L I N U X - M A G A Z I N E . E S

[1] Página de User-Mode Linux: http://

user-mode-linux.sourceforge.net

[2] UML en hosts 2G/2G: http://

user-mode-linux.sourceforge.net/

UserModeLinux-HOWTO-4.

html#2G-2G

[3] Kernel Oficial de Linux 2.4.27: http://

ftp.ca.kernel.org/linux/kernel/v2.4/

linux-2.4.27.tar.bz2

[4] Parche UML para el kernel 2.4.27:

http://prdownloads.sourceforge.net/

user-mode-linux/uml-patch-2.4.27-1.

bz2

[5] Descargas UML: http://

user-mode-linux.sourceforge.net/

dl-sf.html

[6] Lista de sistemas de archivos: http://

user-mode-linux.sourceforge.net/

dl-jails-sf.html

[7] Utilidades UML: http://prdownloads.

sourceforge.net/user-mode-linux/

uml_utilities_20040406.tar.bz2

[8] Configuración de redes en UML:

http://user-mode-linux.sourceforge.

net/networking.html

[9] Compilación del kernel: http://

user-mode-linux.sourceforge.net/

compile.html

[10] Depurado del Kernel: http://

user-mode-linux.sourceforge.net/

debugging.html

[11] Sesión de depurado UML: http://

user-mode-linux.sourceforge.net/

debug-session.html

[12] Página de QEMU: http://fabrice.

bellard.free.fr/qemu/

[13] Página de Bochs: http://bochs.

sourceforge.net

[14] Artículos obre QEMU: http://www.

linux-magazine.es/issue/05

[15] SELinux y UML: http://www.

golden-gryphon.com/software/

security/selinux-uml.xhtml

RECURSOS

Figura 6: Una máquina virtual UML con los

servicios de red disponibles.

Figura 4: Arranque del segundo sistema vir-

tual UML.servicios de red disponibles.

Figura 5: Ficheros COW de dos máquinas virtuales UML.

Fabrizio Ciacchi (http://fabrizio.

ciacchi.it – [email protected]) es

un estudiante italiano de Ciencias

de la Computación en la

Universidad de Pisa. Sus activida-

des principales son estudiar Linux,

desarrollar páginas Web con PHP

y programar en Java. Trabaja tam-

bién como consultor para distin-

tas compañías y escribe artículos

sobre Linux.

EL

AU

TO

R

Número 07

Page 25: Linux Magazine - Edición en Castellano, Nº 07

1994. En ese entonces quiso conectar elequipo con Windows de su mujer alsuyo, que ejecutaba Linux. Se acordódel pequeño servidor que programó dosaños antes y lo probó. Para su sorpresa¡funcionaba!

Investigó un poco y descubrió que losprotocolos NetBIOS y SMB, que usan lasmáquinas de Microsoft, estaban docu-mentados aunque se dejaban muchosparámetros sin especificar. Decidió reali-zar una programa serio, ahora que tenía

Hace mucho, mucho tiempo, en una galaxia muy, muy lejana, el mundo del software libre y el de Microsoft

se encontraban aislados. Pertenecías a una red o a la otra, pero no a ambos. Entonces a un pequeño grupo

de valientes pensaron que esto podía arreglarse. Así nació Samba.. POR JOSE MARÍA RUÍZ

DIRECTORIOSINTELIGENTES

Active Directory en Linux

DIRECTORIOSINTELIGENTES

25

Active Directory • PORTADA

25Número 07W W W . L I N U X - M A G A Z I N E . E S

Acomienzos de 1992 AndrewTridgell, un ingeniero informáti-co australiano que se encontra-

ba realizando sus estudios de doctorado,se encontró con un problema. Trabajabaen una máquina UNIX (Linux estabaaún en la mente de Linus Torvalds) ynecesitaba montar en una máquina MS-DOS un directorio de su UNIX a travésde la red. Lo había hecho hasta entoncesusando NFS, pero ahora necesitaba quefuncionase sobre NetBIOS.

Se armó de paciencia, programó unfiltrador de paquetes y comenzó a reali-zar pruebas para poder replicar el com-portamiento del protocolo de Microsoft.NetBIOS es la base de la tecnología deMicrosoft para compartir ficheros a tra-vés de red. Cuando consiguió un progra-ma que le permitió realizar esta hazañalo liberó. Eran los primeros 90 y lo quesería Samba daba sus primeros pasos.

Ese pequeño programa pasó inadverti-do, incluso para el propio Andrew, hasta

Page 26: Linux Magazine - Edición en Castellano, Nº 07

Windows como directorios en equiposLinux. De esta manera el acceso a sucontenido era como el acceso a un direc-torio local. También se añadió la posibi-lidad de usar impresoras remotas o com-partir las propias.

Microsoft, ya por aquel entonces,comenzó a explotar el filón empresarialcon la versión NT de su sistema operati-vo. Windows NT incorporaba la posibili-dad de gestionar el acceso a las máqui-nas Windows NT o 95 a través de losdominios. La gente de Samba decidiópasar a la acción y trabajó intensamenteen la replicación de este servicio.

Sus esfuerzos fueron recompensados yfue posible registrar a una máquinaSamba en una máquina NT en esta tarea.Al poco tiempo, entre 1999 y el año2000, hubo un fork (una escisión) y secreó un proyecto paralelo denominadoSamba TNG. La misión de este otro pro-yecto, que comparte gran parte del códi-go de Samba, es realizar un reemplazototal de las características de WindowsNT como controlador de dominio.Samba TNG ha ido apagándose poco apoco, y aunque persisten algunos de suscolaboradores muchos lo dan por aban-donado.

La gente de Samba avanzó por sucuenta, siguiendo otros criterios. En sep-tiembre del 2003 se pudo registrar una

máquina Samba en una máquina ActiveDirectory.

Y a finales de 2003, en diciembre, seconsiguió replicar completamente undominio Windows NT, incluyendo lamigración de usuarios y claves. Sambaestaba entonces en la versión 3.0.x.Samba podía sustituir a un Windows NTServer completamente. Esto supuso unboom, puesto que muchas empresas seinteresaron por la tecnología ya que asíse ahorraban licencias, bastante caras,de Windows NT Server.

Pero la gran desventaja de Samba esque siempre va unos pasos por detrás deMicrosoft. Este seguimiento continuo hallevado a un código fuente difícil demantener y de cambiar. Por eso AndrewTridgell y otros se han lanzado al de-sarrollo de Samba4: una reescritura par-cial de Samba3 buscando la modulari-dad y el reemplazo total de una máqui-na Active Directory.

Primeros pasos con SambaLo primero que haremos será instalarSamba. La manera de hacerlo dependeráde la distribución que usemos. Puedeque tengamos que descargar el paqueteo que exista una herramienta que lo ins-tale por nosotros. Hay que asegurarse deinstalar tanto el servidor de Sambacomo las herramientas cliente. Existen

la experiencia necesaria. Y, como uno desus primeros pasos, Andrew buscó nom-bre para el proyecto. Escogió smb, peroentonces se percató de que estaba regis-trado. Así que ni corto ni perezoso intro-dujo smb en un editor de textos y esperóque el corrector ortográfico decidiese porél. La primera palabra que apareció fueSamba y así fue llamado desde entonces.

Samba ha crecido sin parar desdeentonces, añadiendo más funcionalida-des y batiendo en numerosas ocasionesal propio software de Microsoft en cuan-to a seguridad y rendimiento. El nombredel proyecto Samba apareció en losfamosos documentos de Halloween

donde Microsoft se quejaba del dañoprovocado por los proyectos libres.

Samba cuenta ahora con gran canti-dad de programadores voluntarios, tieneuna conferencia anual (SambaeXPerience) y el apoyo de grandesempresas como Silicon Graphics, Novello IBM.

La Situación ActualSamba ha ido amoldándose a la situa-ción a medida que Microsoft añadía fun-cionalidades o modificaba sus protoco-los. En un principio Samba permitía auna máquina Linux compartir directo-rios con una máquina Windows. Era elfamoso compartir carpeta.

Posteriormente fue posible montarcarpetas compartidas por máquinas

PORTADA • Active Directory

26 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 [global]

02 workgroup = MIGRUPO

03 netbios name = MILINUX

04 server string =

Pruebas con Samba

05 security = user

06 wins support = yes

07 os level = 33

08 local master = yes

09

10 winbind use default

domain = yes

11 winbind separator = /

12

13 [datos]

14 path =

/usr/local/datos

15 comment = Mis datos

16 writable = yes

Cuadro 1: smb.conf paraconfiguración local

Figura 1: Esquema típico de una red Linux.

Page 27: Linux Magazine - Edición en Castellano, Nº 07

W W W . L I N U X - M A G A Z I N E . E S

algunas distribuciones que los separanen dos paquetes.

Una vez instalado Samba tenemosque localizar el archivo de configura-ción. Generalmente está en \texttt{/etc/smb.conf}. El fichero de configura-ción de Samba es muy complejo debi-do a la cantidad de opciones que haido acumulando con el tiempo. Soloveremos un conjunto de esas opciones,pero nos permitirán compartir unaserie de directorios con máquinasWindows.

smb.confLa sintaxis del fichero de configuraciónde Samba, el fichero smb.conf, no esmuy complicada. Se divide en seccio-nes, y cada una de ellas tiene un nom-bre. Algunas secciones son obligatoriasy tienen nombres específicos mientrasque otras son opcionales.

El aspecto general será así:

[sección 1]

clave1 = valor1

clave2 = valor2

[sección 2]

clave3 = valor3

Dentro de cada sección, como podemosobservar, hay una serie de lineas en lasque se relaciona una entrada o clave conun valor. De esta manera establecemoslos parámetros en Samba.

Estos ficheros pueden volverse muygrandes, por eso es posible incluircomentarios. Los comentarios comien-zan con ; y se extienden hasta el fin dela línea.

[global]

; Esta sección es muyU

importante

; ...

Configuración GlobalLa primera sección que debe aparecer es[global]. En ella, como podemos ver porel nombre, configuramos el comporta-miento global de Samba. Las redesWindows, antes de la llegada de los sis-temas Windows NT, se separan en gru-

pos de trabajo y cada máquina pertenecea uno y sólo uno. Las máquinas tambiéntienen nombres que podemos ver cuan-do exploramos los grupos de trabajo. Eslo primero que configuraremos:

[global]

workgroup = MIGRUPO

netbios name = MILINUX

Bueno, ya tenemos nombre y pertenece-mos a un grupo. Ahora toca establecerla seguridad. Existen varias maneras decontrolar el acceso a un directorio com-partido:

• Control por usuario• Control por máquina• Control delegado en dominio• Control delegado en Active

DirectoryEn los dos primeros es nuestra máquinaque controla el acceso y en los dos últi-mos otra máquina. Como buscamos algosencillo usaremos autentificación basa-da en usuario. Cuando hacemos esto, lapersona que intente acceder a uno denuestros directorios compartidos veráaparecer una ventana que le preguntarásu nombre de usuario y su clave.

Este usuario y esta clave son gestiona-dos por Samba, como veremos luego,pero deben relacionarse con un usuariolocal de la máquina donde se ejecutaSamba. Éste es el gran problema resuel-to por Samba. Cuando un usuario deWindows crea un directorio en uno denuestros directorios compartidos conSamba… ¿qué permisos y a quién perte-necerá ese directorio?

En Windows el control de permisos ypropietarios en los ficheros es mínimo.De hecho ni siquiera es excluyente. Sidigo que un fichero pertenece a Pepe elusuario Juan puede hacer lo que quieracon él. Este sistema tan inseguro fue eli-minado por Microsoft al introducir NTFSy el control estricto de permisos en sussistemas NT y 2000.

Lo que Samba hace es establecer unarelación entre el usuario de red Windowsy un usuario local. Por ejemplo, podemosrelacionar todos los usuarios que accedanal directorio compartido Finanzas con elusuario finanzas que hemos creado enLinux. Cada fichero en ese directorio ten-drá como propietario a finanzas, a pesarde que el usuario que lo está haciendo seha registrado al acceder al directorio comoJoseManuel. Por tanto, pondremos:

security = user

Configuraciones LocalesCon sólo 3 parámetros ya hemos defini-do unas cuantas opciones básicas, ahora

Page 28: Linux Magazine - Edición en Castellano, Nº 07

[datos] comment = MisU

datos compartidos

Si ejecutásemos el servidor de Sambaahora aparecería una máquina llamadaMILINUX en el grupo de trabajo MIGRU-

PO. Podríamos entrar en ella, y veríamosuna carpeta datos pero no podríamosentrar en ella.

¿Qué nos falta? Pues el sitio en el querealmente existe esa carpeta. El famoso“What you see is what you get” (Lo que

ves es lo que tienes) no se aplica almundo de Samba ;). A pesar de ver unacarpeta compartida datos, esa carpetano existe. Al menos hasta que nosotroslo configuremos correctamente. Esto sehace mediante el parámetro path:

path = /usr/local/datos

Ahora sí será posible acceder, pero antestenemos que configurar el usuario ousuarios que podrán acceder a ella.Cuando realizamos la configuración glo-bal establecimos criterios que afectan atodos los recursos compartidos, a menosque se especifique algo más concreto enlos mismo.

El resto de parámetros, que podemosobservar en el Cuadro 1, son para permi-tir el uso de WINS (una especie de DNSque usa Microsoft) y para indicar el“tipo de Windows” que somos (en estecaso un Windows NT Server).

Samba nos da la posibilidad de usargran cantidad de mecanismos para guar-dar a los usuarios. Tenemos desde sim-ples ficheros de texto donde listamosqué usuario local corresponde con quéusuarios de Samba hasta bases de datoscomo Postgres o incluso LDAP. Tambiénpodemos usar un mecanismo que el pro-pio Samba nos proporciona usando unaespecie de base de datos de usuarios. EnSamba4 habrá un enfoque unificadopara este tema.

Como buscamos simplicidad, no espe-cificaremos el backend para almacenarlos usuarios, lo que significa que dejare-mos que sea Samba quien lo elija.

Primer ArranqueY ahora, después de tanta ceremonia,vamos a arrancar el servidor de Samba ya realizar unos cuantos experimentos.

Para ello ejecutaremos el servidor deSamba, que de nuevo depende de la dis-tribución de Linux que usemos.Generalmente requerirá ejecutar el dae-

mon smbd, en el caso de Mandrake con-sigue ejecutando como root:

# /etc/init.d/smb start

Con esto ya deberíamos tener el servidorde Samba funcionando, pero no hemoscreado usuarios Samba. Este proceso esmuy simple, se realiza empleando elcomando pdbedit que viene con Samba(ver cuadro “Creación del usuario prue-ba”):

He puesto toda la salida para que noos asustéis al verla. Solo es informaciónde configuración para ese usuario, ennuestro caso la configuración por defini-ción. El usuario prueba debe existir pre-viamente en Linux, en caso contrariotendremos que indicarlo al ejecutarpdbedit de manera que pueda relacionarel usuario Samba con algún usuario deLinux.

Es necesario darle permisos al directo-rio [datos] para que el usuario corres-pondiente en Linux a “prueba” (ennuestro caso también se llamará “prue-ba”) pueda escribir sobre él. Con esto yatenemos la configuración básica. Ahoravamos a comprobar que todo está bien.Vamos a listar los servicios que ofrece-mos (ver cuadro “Consulta a nuestropropios servidor”).

Podemos ver como aparece el directo-rio datos que compartimos, pero tam-bién otros recursos como IPC$ oADMIN$. No nos debemos preocuparpor ellos, entrar en los detalles de su uti-lidad ¡nos llevaría casi un libro!

Ahora vamos a realizar una pruebaaccediendo por red al directorio compar-tido datos y copiando algo en su interior.Como se puede ver en las Figuras 2 y 3,nuestro ordenador con Samba y el direc-torio aparecen dentro de la red deWindows como el resto. Cuando inten-tamos acceder nos saldrá una pantallade Login donde tendremos que registrar-nos como usuario prueba.

Y ya podemos crear, modificar, borrary copiar ficheros en nuestro directoriocompartido desde una máquinaWindows. Si queremos tener un controlmás exhaustivo, por ejemplo permitirque algunos usuarios solo puedan leermientras otros tengan control total,deberemos especificarlo en smb.conf. Lamanera más sencilla es hacer que eldirectorio compartido solo pueda serleído:

vamos a compartir algo. Digamos quehemos creado el directorio \texttt{/usr/local/datos} y queremos que otros pue-dan acceder a él desde sus máquinasWindows.

Tenemos que crear una sección paraeste directorio, la llamaremos [datos].Todo directorio compartido en una redWindows, share en argot Microsoft,debe tener un comentario que lo defina.Así que pondremos uno:

PORTADA • Active Directory

28 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 [josemaria@localhost josema-

ria]# pdbedit -a prueba

02 new password:

03 retype new password:

04 Unix username: prueba

05 NT username:

06 Account Flags: [U

]

07 User SID:

S-1-5-21-2193370309-2470947842

-1102485009-2004

08 Primary Group SID:

S-1-5-21-2193370309-2470947842

-1102485009-2005

09 Full Name:

10 Home Directory: \\mili-

nux\prueba

11 HomeDir Drive:

12 Logon Script:

13 Profile Path: \\mili-

nux\prueba\profile

14 Domain: MILINUX

15 Account desc:

16 Workstations:

17 Munged dial:

18 Logon time: 0

19 Logoff time: Fri, 13

Dec 1901 21:45:51 GMT

20 Kickoff time: Fri, 13

Dec 1901 21:45:51 GMT

21 Password last set: Thu, 28

Apr 2005 09:35:12 GMT

22 Password can change: Thu, 28

Apr 2005 09:35:12 GMT

23 Password must change: Fri, 13

Dec 1901 21:45:51 GMT

24 Last bad password : 0

25 Bad password count : 0

26 Logon hours :

FFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

FFFFFFFFFFFF

27 [josemaria@localhost josema-

ria]#

Cuadro 2: Creación delusuario de prueba

Page 29: Linux Magazine - Edición en Castellano, Nº 07

Active Directory • PORTADA

29Número 07W W W . L I N U X - M A G A Z I N E . E S

read only = yes

; o

writable = no

La opción writable = no es equivalentea read only = yes. Pero si ponemos wri-

table = yes o read only = no entoncespermitimos tanto la lectura como laescritura. Es un poco lioso por lo querecomiendo que se use writable o read

only y no mezclar. Podemos ser más res-trictivos solo permitir que puedan leer eldirectorio algunos usuarios.

valid users = prueba

De esta manera sólo el usuario prueba

puede acceder al directorio que hemoscompartido. Podríamos entrar en másdetalles, pero requeriría muchas máspáginas. Con esta configuración mínimapodemos ya compartir con los ordena-dores de una red Windows uno o variosdirectorios y controlar el acceso desdenuestra máquina.

Active DirectoryMicrosoft ha realizado una gran campa-ña de publicidad alrededor de su tecno-logía Active Directory y, la verdad, esque no conozco mucha gente que sepalo que es realmente esa cosa llamada“Active Directory”.

Active Directory es un sistema quepermite gestionar el acceso a los objetos

de una red de manera centralizada.Estos objetos pueden ser muchas cosas:usuarios, máquinas, impresoras o fiche-ros.

Ahora imaginemos una red de ciertotamaño, digamos 100 máquinas.Tenemos que administrarlas y entrenuestras funciones estaría el gestionarel acceso a los ficheros de todas lasmáquinas. Ya puestos no estaría mal

Figura 2: Vemos a nuestro equipo, Milinux,

dentro de la red de Windows.

que me pudiese sentar en cualquierade las 100 máquinas, introducir misdatos y que allí apareciese mi escrito-rio.

Esto puede ser una pesadilla paracualquier administrador de sistemas.Pero esto también es lo que ActiveDirectory promete realizar. Para elloActive Directory necesita realizar variasfunciones:

• Tiene que proporcionar unmecanismo para mantenerseguras las comunicaciones.

• Debe llevar un control de losusuarios del sistema.

• Debe llevar un control de lasmáquinas de la red.

• Debe llevar un control de losficheros en cada máquina.

Estas funciones las realizan variasmáquinas en las redes UNIX. Por ejem-plo, la identificación distribuida se reali-za con NIS/NIS+ y el control de lasmáquinas de la red con una mezcla deDHCP y DNS. Las máquinas ActiveDirectory hacen todo estoy y tambiéngestionan otros recursos como la sincro-nización horaria (NTP).

Configuración de Sambapara Active DirectoryEl uso de Active Directory y Samba esun tema candente en muchos foros. Laidea de poder delegar la autenticaciónen una máquina Active Directory haceque Samba entre en la nueva era de lasredes Microsoft.

Antes dimos una descripción un pocosimplista sobre lo que es y hace Active

Directory, la realidad es mucho máscomplicada. Active Directory se basa enun diseño enorme con el que Microsoftpretende atacar el problema de la admi-nistración de redes cada vez más gran-des. El equipo de Samba siempre hatenido en la mira a Active Directory,pero una serie de problemas tecnológi-cos les han apartado de la simulacióntotal.

El primer problema es el propioSamba. Con un código fuente que adole-ce de más de 10 años de desarrollo conti-nuo no se pueden hacer demasiadosexperimentos. Por ello el equipo se hacentrado en Samba4 que incorpora lareescritura desde cero, con un diseñomás lógico, de la mayoría de código.

Aún así han ido introduciendo poco apoco en versión 3 algunas de las tecno-logías que permiten al sistema interac-tuar con Active Directory.

Active Directory deja absolutamenteanticuado al anterior diseño de Microsoft.

Figura 3: Cuando nos pida la clave tenemos

que darle la que introducimos al crear al

usuario “prueba”.

[josemaria@localhost lib]# smbclient -L //localhost -U prueba

Password:

Domain=[MILINUX] OS=[Unix] Server=[Samba 3.0.15pre2-SVN-build-]

Sharename Type Comment

--------- ---- -------

datos Disk Mis datos

IPC$ IPC IPC Service (Samba

3.0.15pre2-SVN-build-)

ADMIN$ IPC IPC Service (Samba

3.0.15pre2-SVN-build-)

Domain=[MILINUX] OS=[Unix] Server=[Samba 3.0.15pre2-SVN-build-]

Server Comment

--------- -------

Workgroup Master

--------- -------

[josemaria@localhost lib]#

Cuadro 3: Consulta a nuestro propio servidor

Page 30: Linux Magazine - Edición en Castellano, Nº 07

PORTADA • Active Directory

30 Número 07 W W W . L I N U X - M A G A Z I N E . E S

José María Ruiz es programador de

sistemas y director de proyectos en

Animatika, una empresa dedicada

al software libre, mientras intenta

acabar su proyecto fin de carrera en

Ingeniería Técnica Informática de

Sistemas.

EL

AU

TO

RFigura 4: Tipos de interacción con Active Directory.

El sistema de autentificación y listado derecursos es nuevo. Esto ha supuesto unreto, puesto que el equipo de Samba loca-liza los cambios filtrando los paquetes dela red cuando las máquinas Windowsestán realizando operaciones.

La primera sorpresa, aunque fueampliamente publicitado por Microsoft,fue el uso de Kerberos como protocolode autentificación. Por ello es muyimportante que tengamos alguna de lasimplementaciones de Kerberos instala-das. La configuración de cada una deellas es distinta, pero el fin es elmismo: hacer que la máquina ActiveDirectory sea la entidad emisora de cer-tificados.

Una vez que Kerberos esté correcta-mente configurado pasaremos a configu-rar nuestro servidor Samba. Es impor-tante tener las versión más modernaposible de Samba. Los cambios en elcódigo fuente se están sucediendo conrapidez durante los últimos meses.

El fichero de configuración tendrá laforma que se ve en el cuadro“Configuración para Active Directory”:

Como podemos ver la configuraciónde [datos] no ha cambiado. Son losparámetros globales, y los de autentifi-cación en particular, los que tenemosque cambiar. El modo de autentifica-ción, el parámetro security, pasa a serads.

Este modo es temporal, aunque pro-bablemente esté en Samba3 durante un

buen tiempo, y se debe a que Sambaaún no es capaz de auto-detectar lapresencia de una servidor ActiveDirectory.

El realm es el mismo que establezca-mos en la configuración de Kerberos yse suele corresponder con el dominioque establezca Active Directory, mien-tras que password**server tiene que serla IP o nombre de la máquina que seencarga de las autentificaciones ennuestra red Active Directory.

Con esta simple configuración conse-guimos que nuestro Samba esté prepara-do para funcionar con Active Directory,así que volvemos a arrancar Samba.

Existe un paso intermedio aún.Aunque estemos configurados para fun-cionar con Active Directory tenemos queunirnos al dominio. Para ello ejecuta-mos:

[josemaria@localhost ~]# net adsU

join -U [email protected]

password:

[josemaria@localhost ~]#

Cuando realizamos esta acción nuestramáquina se registra en el servidor ActiveDirectory y debería aparecer, puede tar-dar unos segundos debido al cacheo querealiza Active Directory, en el dominio

configurado. Si todo ha ido bien, alejecutar net ads user -U

[email protected]

deberíamos obtener un listado con todoslos usuarios de Active Directory.

C o n n e t a d s i n f o - U

[email protected]

podremos obtener información genéricasobre el servidor Active Directory.

ConclusiónAunque el soporte de Samba3 es muyreciente, y por tanto posee fallos, el pro-yecto Samba se mueve a pasos agiganta-dos hacia la emulación total de un servi-dor Active Directory. A Samba4 aún lequeda tiempo, dicen que un año ymedio, pero puede que esté ahí cuandoMicrosoft lance una versión para servi-dor de su famoso Longhorn. Entre lagente que querrá obtener la primeracopia seguro que habrá unos cuantoscolaboradores de Samba. �

01 [global]

02 workgroup = MiDominio

03 netbios name =

Pruebas-AD

04 security = ads

05 wins support = yes

06 winbind use default

domain = no

07 realm = midominio.com

08 password server =

srv.midominio.com

09

10 [datos]

11 path =

/usr/local/datos

12 comment = Directorio

de prueba

13 writable = yes

Cuadro 4: Configuracionpara Active Directory

Page 31: Linux Magazine - Edición en Castellano, Nº 07

La manera más fácil de ejecutar pro-

gramas para Mac en Linux es el

software libre Mac-on-Linux [1].

Mac-on-Linux no ofrece emulación hard-

ware, por lo que requiere un ordenador

Apple. Mac-on Linux soporta teóricamen-

te otras aquitecturas PowerPC [2], como

Pegasos [3], pero instalar el sistema opera-

tivo de Apple, Mac Os, en estas arquitectu-

ras supone incumplimiento de la licencia.

Linux para ApplePodemos usar Mac-on-Linux en cual-

quier ordenador Apple. Obviamente,

nuestra distribución tendrá que soportar

el procesador PowerPC [4], cosa que per-

miten Fedora Core 3 [4], Gentoo [6],

Debian [7], Ubuntu [8] y Yellow Dog [9].

Mac-on-Linux no emula hardware, sólo

pasa comandos a la CPU. También ofrece

drivers de dispositivos que se han optimi-

zado para esta aplicación, de manera

similar a Vmware, lo cual explica que

Mac-on-Linux vaya más rápido que un

emulador.

Mac Os como ProgramaLinuxMac-on-Linux arranca un sistema opera-

tivo Apple como un programa en Linux.

En nuestro ejemplo usaremos Mac OS X,

pero Mac-on-Linux también ejecuta ver-

siones anteriores, como System 9, que

aún estén bastante

extendidas.

Los usuarios de

Gentoo pueden descar-

gar y compilar Mac-on-

Linux de la manera típi-

ca en Gentoo: usando

Gracias a los emuladores los usuarios ya pueden ejecutar su querido

Mac OS X bajo Linux, permitiendo un reencuentro entre hermanos.

POR OLIVER FROMMEL

Mac Os X en Linux

PEDIR MANZANAS AL OLMO

31

Mac en Linux • PORTADA

31Número 07W W W . L I N U X - M A G A Z I N E . E S

emerge mol. Yellow Dog incluye el progra-

ma por defecto.

Hemos usado la distribución Ubuntu

para el procesador PowerPC, puesto que

nos resultó imposible arrancar una inter-

faz gráfica ni con Gentoo ni con la distri-

bución comercial Yellow Dog en nuestro

iBook G4/800 con el chip gráfico Radeon

Mobility 9200.

El instalador de Ubuntu trabaja con el

gestor de paquetes de Debian apt-get, que

descarga los archivos de Internet. Mac-

on-Linux necesita algunos módulos del

kernel para PPC Linux, y tendremos que

compilarlos nosotros mismos. Compilar

estos módulos significa instalar algunas

herramientas, si es que no están ya insta-

ladas. Con las siguientes órdenes descar-

gamos los paquetes y los instalamos:

sudo apt-get install build-U

essential linux-headers-2.6-U

powerpc

Si nos pide un password, tecleamos el

password de usuario normal, dado que

Ubuntu no tiene por defecto una cuenta

de administrador (véase [8]). Por tanto,

los usuarios pueden ejecutar órdenes que

necesitan normalmente privilegios de

root cuando usamos sudo.

Desafortunadamente, el repositorio

estándar de Ubuntu no incluye los archi-

vos, por lo que necesitaremos añadir el

repositorio Multiverse previamente, que

incluye paquetes que no forman parte de

la distribución estándar. Para ello debe-

mos añadir las líneas especificadas en el

cuadro 1 a /etc/apt/sources.list.

A continuación actualizamos la caché

local con el nuevo repositorio tecleando

sudo apt-get update. Seguidamente insta-

lamos el código fuente de los módulos

del kernel para Mac-on-Linux:

Figura 1: Si arrancamos Mac-on-Linux con la opción --loadonly se

muestran los módulos requeridos.

Page 32: Linux Magazine - Edición en Castellano, Nº 07

sudo dpkg -i mol-modules-U

2.6.8.1-3-powerpc_0.9.70+U

ubuntu0_powerpc.deb

Con esto terminamos la preparación pre-

via, y podemos continuar con la instala-

ción del resto de paquetes de Mac-on-

Linux:

sudo apt-get install mol mol- U

drivers-macosx

El gestor de paquetes resuelve las

dependencias e instala mol y mol-dri-

vers-linux, y también mol-drivers-linux,

el cual usaremos sólo si queremos eje-

cutar una versión PPC de Linux con

Mac-on-Linux.

Si especificamos -loadonly al lanzar el

programa, nos indica si el módulo del

kernel está cargado (véase Figura 1). El

error más frecuente es tener versiones

de kernel y módulo que no concuerden.

Aunque el parámetro -a permite diferen-

tes números de versiones, no debemos

esperar que la configuración funcione si

los números no concuerdan.

Tras cargar el módulo, podemos pasar

a la configuración gráfica. Con sudo

molvconfig lanzamos el programa nece-

sario, que trata de encontrar los modos

por sí sólo, o bien permite configurarlos

manualmente. En nuestras pruebas

ambos modos funcionaron bien con las

configuraciones por defecto.

El comando starmol nos ayuda a orga-

nizar las asignaciones de teclado. El pará-

metro -keyconfig lanza un programa

interactivo que muestra el nombre de la

tecla (por ejemplo Return o Apple-Key) y

nos pide que la tecleemos.

Una vez terminemos la configuración,

podemos arrancar Mac Os X en una ven-

tana tecleando sudo startmol -X.

Automáticamente aloja la instalación en

el disco duro y arranca el sistema. Mac-

on-Linux usa una ventana de terminal

para mostrar los mensajes que se pro-

duzcan durante en arranque. Estos men-

sajes se almacenan permanente en un

archivo en /var/log, y deberemos mirar-

los si algo va mal.

Túnel de RedConfigurar la red es algo más complica-

do y, desafortunadamente, no tenemos

un asistente que nos indique el camino.

Podemos empezar habilitando la interfaz

del túnel en /etc/mol/molrc.net. Esta

interfaz carga automáticamente en

módulo del kernel adecuado y le asigna

una dirección IP. Para habilitar la inter-

faz del túnel tenemos que borrar el # de

la línea netdev:tun0 -tun. La línea de

mensajes debe mostrar algo como

Ethernet Interface 'tun-<tun0>' @

00:00:0D:EA:DB:EE.

Aparece un nuevo disco en Mac OS X.

Podemos abrirlo haciendo doble clic.

Contiene unos drivers especiales que

Mac OS X necesita para acceder a la red

desde el modo emulación. Para instalar

los drivers, pulsamos sobre el paquete

Pkg y seguimos las instrucciones.

Probablemente querremos usar Mac-

on-Linux para acceder tanto a la red local

como a Internet. Para derivar tráfico a

Mac-on-Linux, necesitamos editar el

script /etc/mol/tunconfig, que lanzamos

desde startmol. La versión por defecto de

tunconfig lanza un servidor DHCP y usa

iptables para mapear direcciones IP.

En nuestro laboratorio usamos un tun-

config alternativo con una dirección IP

estática (véase Cuadro 2). En Mac OS X,

asignamos la dirección IP 192.168.40.2 a

la interfaz de red en3 y la dirección

192.168.40.1 al router.

Una vez hayamos terminado esta com-

pleja configuración, Mac-on-Linux tendrá

acceso a Internet.

sudo apt-get install mol

modules- source

Lanzamos un editor para abrir una cabe-

cera de un fichero en C de este paquete,

y poder así borrar un error que de otra

manera impide la compilación de los

módulos. Podemos usar alternativamen-

te otro editor de texto, reemplazando vi

con el nombre del otro editor que prefira-

mos.

sudo vi /usr/src/linux- U

headers-2.6.8.1-4-powerpc/ U

include/asm/setup.h

Borramos la línea que contiene #include

<asm-m68/setup.h> y guardamos el

archivo de nuevo. Nos vamos al directo-

rio con el código fuente de Linux y des-

comprimimos el archivo que apt-get ha

guardado allí.

cd /usr/src

sudo tar xzvf mol-modules.tar.gz

Necesitamos configurar algunas variables

de entorno para asegurarnos que los

módulos concuerdan con nuestra versión

del kernel:

export KVERS="$(uname -r)"

export KSRC="/usr/src/linux

headers-$(uname -r)"

export KDREV="ubuntu0"

Desde el subdirectorio Mac-on-Linux eje-

cutamos el script de compilación:

cd modules/mol

sudo debian/rules build

Tras unos instantes, debe concluir la

compilación. Ahora podemos crear un

paquete Debian con los archivos que

hemos generado:

sudo debian/rules binary-U

mol-modules

El resultado final debe aparecer en

/usr/src. Nos vamos a ese directorio y

hacemos la instalación del sistema desde

allí:

PORTADA • Mac en Linux

32 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 deb http://archive.ubuntu.com/ubuntu warty multiverse

02 deb-src http://archive.ubuntu.com/ubuntu warty multiverse

Cuadro 1: Líneas a añadir a /etc/apt/sources.list

01 #!/bin/bash

02 /sbin/ifconfig tun0 192.168.40.1

03 /sbin/iptables -D POSTROUTING -t nat -s 192.168.40.0/24 -d !

192.168.40.0/24 -j MASQUERADE

04 /sbin/iptables -t nat -s 192.168.40.0/24 -d ! 192.168.40.0/24 -A

05 POSTROUTING -j MASQUERADE

06 /sbin/iptables -t filter -P FORWARD ACCEPT

07 echo 1 > /proc/sys/net/ipv4/ip_forward

Cuadro 2: /etc/mol/tunconfig

Page 33: Linux Magazine - Edición en Castellano, Nº 07

El acelerador

Para lanzar Mac-on-Linux a pantalla com-

pleta en las X, necesitamos modificar un

archivo llamado /etc/mol/molrc.video.

En la línea enable_xvideo:..., cambiamos

el valor de yes a no. Este valor hace que

Mac OS X vaya mucho más deprisa, al eli-

minar un gran número de operaciones

gráficas. Se puede conseguir el mismo

efecto lanzando Mac-on-Linux directa-

mente desde una consola de texto.

Véanse más detalles en [10].

Para habilitar la carga de CD ROMs,

necesitamos añadir una línea al archivo

molrc.osx como la siguiente:

blkdev: /dev/sg0 -cd

Esta línea da por hecho que estamos

usando el módulo IDE-SCSI para habilitar

la emulación SCSI en nuestro CD ROM

IDE.

Mac OS sin hardware AppleSi no disponemos un ordenador Apple

pero aún así queremos echarle un vistazo

a este sistema operativo lleno de color,

necesitamos otra alternativa. Es decir,

necesitamos un emulador que haga creer

a Mac OS X que está ejecutándose en un

ordenador Apple. Nuestro espíritu de

experimentación será de gran ayuda, y

por supuesto necesitaremos los CDs de

instalación de Mac OS X.

PearPC[11] implementa una CPU

PowerPC y un conjunto de periféricos. La

instalación es tan simple como:

tar xfj pearpc-0.3.1.tar.bz2

cd pearpc-0.3.1

./configure --enable-ui=sdl U

--enable-cpu=jitc_x86

make

su -c 'make install'

En este ejemplo, PearPC está usando la

librería SDL para dibujar un escritorio

gráfico, aunque también podemos usar

-enable-ui=x11 como alternativa.

Tras la compilación, creamos un archi-

vo vacío que PearPC usará como disco

virtual. El siguiente comando crea un

archivo de 3Gbyte llamado macosx.img:

dd if=/dev/zero of=macosx.U

img bs=516096 seek=6241 count=0

Por contra a lo expuesto en la documen-

tación de PearPC, podemos particionar el

disco duro virtual sin necesidad de

Darwin OS. Darwin OS es la versión libre

de Mac OS X. Sin embargo, sólo incluye

los componentes basados en texto. No

incluye por tanto la interfaz gráfica de

usuario ni otros componentes del núcleo.

Para llevar la cuenta de los archivos que

necesita PearPC, sería recomendable

crear un nuevo directorio para el emula-

dor, al que llamaremos ppc por ejemplo.

A continuación copiamos los archivos de

configuración de muestra a ese directorio:

cp pearpc-0.3.1/ppccfg.exampleU

ppc/ppccfg

Para imitar el adaptador gráfico, PearPC

necesita también el archivo video.x, que ten-

dremos que copiar asimismo al directorio de

usuario. También vamos a mover la imagen

del disco duro, macosx.img, al mismo direc-

torio para tener todos los archivos que nece-

sitamos en el lugar adecuado.

Podemos editar la configuración ppccfg

con un editor de texto. Por el momento,

las entradas existentes funcionarán, pero

necesitaremos modificar el nombre de

nuestra imagen de disco duro. Para ello,

cambiamos la línea como se indica a con-

tinuación:

pci_ide0_master_image =U

"macosx.img"

La entrada prom_bootmethod, especifica

cómo arranca PearPC. El valor auto, usa

la primera partición arrancable. Si cam-

biamos el valor a select, el emulador nos

requerirá que seleccionemos una parti-

ción (véase Figura 2).

Introducimos el primer CD de

Mac OS X para comenzar la instalación.

Si aún no estamos en el directorio ppc,

nos vamos a él y lanzamos el emulador,

especificando el archivo de configuración

como parámetro:

ppc ppccfg

Si seleccionamos ahora arrancar desde

CD aparecerá la pantalla de comienzo de

Mac OS X, como muestra la Figura 3. Si

presionamos [Alt-Enter] podemos con-

mutar entre pantalla completa y modo

ventana.

Después de unos instantes, aparece el

programa de instalación. Si vamos

siguiendo los pasos, se nos pide una uni-

dad como objetivo, pero desafortunada-

mente aún no la tenemos. Tenemos que

hacer una partición en nuestro disco duro

Mac en Linux • PORTADA

33Número 07W W W . L I N U X - M A G A Z I N E . E S

Figura 2: Navegación con Mac OS X en una ventana de Linux. Figura 3: La ventana inicial de PearPC nos permite seleccionar la par-

tición de arranque.

Page 34: Linux Magazine - Edición en Castellano, Nº 07

Mac OS X detecta la tarjeta de red

Ethernet virtual automáticamente. Para

localizarla, comprobamos la configura-

ción de red dentro de la configuración del

sistema. Asignamos la dirección IP estáti-

ca a 192.168.1.1, que es la que configuró

PearPC en scripts/ifppc_up.La dirección

del router es 192.168.1.80.

/etc/resolv.conf dentro de Linux nos pro-

porciona un servidor de nombres.

Al igual que Mac-on-Linux, PearPC

configurará la red virtual de manera prác-

ticamente automática en segundo plano,

e incluso hará lo propio con la NAT. Para

ello, necesita algunos archivos del direc-

torio de software. Simplemente copiamos

el subdirectorio scripts al lugar adecuado:

cp -R pearpc-0.3.1/scripts ppc

Como el programa hace cambios en la confi-

guración de red de Linux, necesitamos privi-

legios de root para este paso. En otras pala-

bras, necesitamos arrancar PearPC como

administrador o asignar privilegios de root al

SUID de los programas ifppc_up.setuid y

ifppc_down.setuid (chmod +s).

Por defecto, PearPC crea una interfaz de

red llamada ppc con direccion 192.168.1.80

en el sistema Linux. Podemos verificarlo

tecleando /sbin/ifconfig ppc.

Una Feliz AlianzaTanto Mac-on-Linux como PearPC impre-

sionan por sus amplias características,

facilidad de uso y velocidad. El hecho de

que Mac-on-Linux supere en velocidad a

su competidor no debe sorprender.

Después de todo, hablando estrictamente,

Mac-on-Linux no es un emulador, sino un

programa que ejecuta Mac OS X (y otros

programas) bajo Linux. De hecho, es sufi-

cientemente rápido como para desarrollar

trabajos serios en un ordenador moderno.

Ambos programas tienen una configu-

ración de red bastante complicada, pero

esto es debido más bien a la complejidad

de las funciones que necesita Linux para

soportar la conexión de red virtual.

El paquete QEMU, comparable a los

programas comentados, nos muestra que

es posible emular la red sin necesidad de

NAT. Ambos proyectos podrían benefi-

ciarse de los conceptos aportados por

QEMU. �

virtual. Lanzamos la herramienta de par-

ticiones con Installer | Hard disk tool.

En esta herramienta pulsamos en la

pestaña Partitioning y seleccionamos la

opción 1 Partition para Volume Schema.

Pulsamos en Partition y confirmamos en

el cuadro de diálogo que aparece a conti-

nuación. El programa hará la partición en

el disco virtual y la formateará. Después

de salir de la herramienta, la partición

debe ser visible en el instalador.

Si el instalador da problemas de espacio

en disco, podemos deseleccionar algunos

paquetes como Language packages y

Additional voices. Tras completar la selec-

ción de paquetes, el instalador copiará los

paquetes al disco duro virtual.

Una vez hayamos terminado este paso,

salimos de PearPC e insertamos el segun-

do CD de instalación. Cuando reinicie-

mos, seleccionamos como partición de

arranque la creada anteriormente. El ins-

talador copiará unos cuantos ficheros

más y completará la instalación.

Podemos saltarnos las preguntas relativas

al registro de la cuenta de usuario.

Redes para ExpertosPara permitir a Mac OS X usar la red en

un entorno PearPC, necesitamos modifi-

car la entrada para la tarjeta de red en el

archivo de configuración:

pci_rtl8139_installed = 1

Cuando reiniciemos, el emulador puede

indicarnos problemas por la ausencia de

una interfaz de tunel de red /dev/net/tun.

En este caso, ejecutamos modprobe tun en

modo root para cargar el módulo del kernel.

PORTADA • Mac en Linux

34 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] Mac-on-Linux: http://www.

maconlinux.org

[2] Procesador PowerPC: http://www.ibm.

com/chips/products/powerpc

[3] Pegasos Computer: http://www.

pegasosppc.com

[4] Página Linux-PPC: http://www.

penguinppc.org

[5] Fedora Core 3 PPC: http://

fedoraproject.org/fedorappc/FC-3

[6] Gentoo PPC: http://www.gentoo.org/

doc/en/handbook/handbook-ppc.xml

[7] Debian PPC: http://www.debian.org/

ports/powerpc

[8] Ubuntu: http://www.ubuntulinux.org

[9] Yellow Dog: http://www.

yellowdoglinux.com/

[10] Modo pantalla completa en Mac-on-

Linux: http://www.maconlinux.org/

userguide/cvideo.html

[11] PearPC: http://pearpc.sourceforge.net

RECURSOS

Figura 4: El instalador de Mac OS X en ejecución en el emulador

PearPC.

Figura 5: Cuando termina la instalación funciona hasta el Dock.

Page 35: Linux Magazine - Edición en Castellano, Nº 07

Construir complejos proyectos web

que soporten CGIs se puede con-

vertir rápidamente en algo confu-

so. Un editor HTML como Bluefish [1],

con soporte para gestión de proyectos y

los lenguajes de guiones más populares,

nos puede ayudar a mantenernos en el

camino correcto. La versión actual 1.01

ofrece a los usuarios un montón de

características nuevas e interesantes.

El programa no es oficialmente parte

del proyecto Gnome, pero es utilizado a

menudo en el entrono de Gnome.

Bluefish se basa en el toolkit GTK y

requiere la versión 2.0 o posterior de

GTK. La versión 3.0 o posterior de libp-

cre proporciona un resaltado de sintaxis

muy útil, aunque el corrector ortográfi-

co, basado en Aspell, es opcional.

Los usuarios también pueden acceder

a los recursos en linea, tales como servi-

dores FTP o directorios WebDAV, de

forma transparente, a través de Gnome

VFS, una capa de abstracción al sistema

de archivos. Bluefish accede a los recur-

sos, como si estuvieran en directorios

locales.

Diseño de la interfazLa interfaz de Bluefish tiene tres paneles:

Una barra de menú con las funciones

estándar en la parte superior de la venta-

na, un panel principal y una barra

lateral por debajo

de ella. El panel principal es donde los

usuarios editan los archivos. La ventana

de Bluefish utiliza pestañas para permitir

a los usuarios intercambiar entre docu-

mentos rápidamente. Según los desarro-

lladores, el programa puede manejar

hasta 3500 documentos abiertos, aunque

sea casi imposible que esto ocurra en

condiciones normales de producción.

La barra lateral cumple tres tareas:

Primero, es un pequeño navegador de

archivos que facilita al usuario un rápido

acceso a sus archivos. Segundo, los de-

sarrolladores pueden añadir documenta-

ción sobre alguno de los guiones y len-

guajes web a los que da soporte el pro-

grama y los usuarios pueden mostrar la

documentación en la barra lateral si es

necesario. Tercero, los usuario pueden

añadir marcadores a los directorios a los

que accedan con mayor regularidad en la

barra lateral.

En lo alto de la barra de edición está el

menú multi-pestañas que ofrece al usua-

rio acceso rápido a los bloques de cons-

trucción HTML. Las pestañas está orga-

nizadas por funciones, permitiendo a los

usuarios que añadan tablas, formularios

o elementos CSS con el mínimo esfuer-

zo. Para las estructuras más complejas,

como los formularios, el programa indica

al usuario que especifique los paráme-

tros necesarios para mostrar los ele-

mentos correcta-

mente.

Debajo de las pestañas, el software

tiene algunas herramientas adicionales

para la edición de guiones. En función

del lenguaje, el menú ofrece bloques de

construcción comunes para bucles,

includes o sentencias SQL. Esto da a los

usuarios la capacidad de agrupar peque-

ños proyectos con solo apuntar, pulsar y

completar los diálogos.

El editor también facilita las adaptacio-

nes locales de las páginas Web. Los

usuarios pueden utilizar el botón dere-

cho del ratón sobre la ventana de edición

para alternar entre diversas versiones del

código. El programa utiliza Unicode para

guardar los archivos de forma predeter-

minada.

Entorno de DesarrolloLigeroLos desarrolladores no enfocaron su pro-

yecto como un simple editor de HTML.

El hecho de que Bluefish de soporte a

lenguajes de guiones y lenguajes tradi-

cionales de programación tales como C

significa que Bluefish está más cerca de

un entorno integrado de gestión de de-

sarrollo. Esto es siempre útil ya que un

IDE hecho y derecho pude ser demasia-

do molesto para, por ejemplo, proyectos

más pequeños; pues a menudo un IDE

ofrece a los programadores característi-

cas no deseadas que probablemente con-

funden más que ayudan.

Otra característica útil es que los usua-

rios pueden buscar en la documentación

integrada de Python y PHP directamente

en la barra lateral. Aquí es donde se pue-

den buscar descripciones cortas de las

funciones estándares y sus valores de

retorno. La identación automática, los

números de línea, y el sofisticado realza-

do de sintaxis facilitan el trabajo con el

código fuente.

Bluefish da a los usuarios la capaci-

dad de evaluar los makefiles y de

Bluefish • PRÁCTICO

35Número 07W W W . L I N U X - M A G A Z I N E . E S

El editor de HTML Bluefish es útil en los grandes proyectos web y también para los proyectos de progra-

mación más pequeños. El resaltado sintáctico y los bloques de código ayudan a los desarrolladores a cons-

truir proyectos de manera más eficiente. POR ANDREAS GRYTZ

35

El editor del HTML e IDE integrado Bluefish

UN PEZ LLAMADO…

Page 36: Linux Magazine - Edición en Castellano, Nº 07

extensible. Por ejemplo, los usuarios

podrían aprovechar esta capacidad para

agregar sus herramientas de desarrollo

preferidas.

Gestión de ProyectoBluefish realmente es brillante cuando

es necesario manejar archivos múlti-

ples en un proyecto a gran escala. El

programa tiene

un diálogo para

este propósito.

Los usuarios

pueden especifi-

car un directorio

objetivo para el

proyecto y asig-

nar un nombre

interno en

Bluefish; un clic

con el botón derecho le permitirá agre-

gar carpetas y archivos a la barra late-

ral.

El diálogo de proyecto tam-

bién permite que los usuarios

definan un directorio remoto

para el proyecto local.

ImpresionesAunque los desarrolladores

afirman que la versión actual

1.0 es estable, el software

todavía tiene una o dos extra-

vagancias. Por ejemplo, el

programa se bloqueó en varias

ocasiones mientras creábamos

un proyecto, al intentar selec-

cionar una plantilla para el

proyecto. Asegúrese de tener

una copia de seguridad antes

de comenzar a trabajar con datos de pro-

ducción.

Según el sitio web de Bluefish, los

desarrolladores están trabajando en

incorporar, donde sea posible, las direc-

trices del interfaz humano del proyecto

Gnome (Gnome Project Human

Interface Guidelines). A pesar de esta

compromiso para mejorar, el interfaz

del programa es confuso en algunos

lugares y diálogos, tales como el diálo-

go de configuración de la barra lateral,

al que cuesta adaptarse.

En resumen: Bluefish es un editor

robusto que nos puede echar una mano

con la web y con el trabajo de programa-

ción, una vez que aprendamos como

desenvolvernos. Los bloques de código

eliminan la necesidad de repetir pulsa-

ciones de teclado y así evitar los errores

asociados a esto.

Además de las dependencias ya men-

cionadas, que en un sistema de Gnome

normalmente estarán resueltas por los

valores predeterminados, el software

necesita algunas bibliotecas de Gnome.

Sin embargo, la mayoría de las distribu-

ciones modernas deben tener estas

bibliotecas. El programa no necesita

mucho espacio en disco y hace un buen

uso de los recursos de la memoria

haciendo que sea útil para los progra-

madores que trabajen con hardware

obsoleto. �

mostrar las llamadas en una ventana

separada. Utiliza esta misma aproxima-

ción para llamar a programas externos

tales como Tidy, un verificador de sinta-

xis HTML [2].

Algunos programas externos son pre-

configurados por la instalación estándar

de Bluefish, sin embargo, la rutina de

instalación no comprueba si los progra-

mas están real-

mente instalados

y se encuentran

en las rutas espe-

cificadas. Esto

puede causar

confusión, ya

que si no se tiene

cuidado, el soft-

ware puede mos-

trar entradas en

el menú a programas que no existen.

A pesar de todo, los programas exter-

nos integrados hacen que el software sea

PRÁCTICO • Bluefish

36 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Figura 1: Bluefish ofrece un interfaz de tres paneles que se puede

configurar para ajustarlo a nuestras necesidades.

Figura 2: Las advertencias y mensajes de error aparecen en el Output

box, localizada debajo del panel principal.

Figura 3: Bluefish nos permite añadir herramientas

externas.

Figura 4: Creación de un proyecto Bluefish.

[1] Página principal de Bluefish: http://

bluefish.openoffice.nl/

[2] HTML Tidy: http://tidy.sourceforge.net/

RECURSOS

Page 37: Linux Magazine - Edición en Castellano, Nº 07

Desde el lanzamiento del sistema

de administración de contenido

(CMS) Plone [1], ha sido difícil

imaginar un mundo de servidores de apli-

caciones web gratuito sin Zope [2].

Python, el lenguaje en el que fué escrito

originariamente Zope, trae al mundo de

Zope la tecnología de la orientación a

objetos y la posibilidad de estructurar el

código fuente en módulos, además de la

facilidad y flexibilidad que habitualmente

aportan los lenguajes de script de la web.

Desde CMF hasta NuevosDesarrollosZope es una plataforma popular para

CMS. La mayoría de los sistemas CMS

Zope gratuitos (como Plone [1], Silva [3]

y CPS [4]) usan un producto Zope cono-

cido como infraestructura de administra-

ción de contenidos (CMF – Content

Manager Framework). El marco CMF

para Zope 2 no sólo tenía las herramien-

tas necesarias para desarrollar un siste-

ma de administración de contenido, sino

que también proporcionaba una arqui-

tectura basada en componentes que

soportaba modificaciones flexibles de

componentes individuales. La experien-

cia obtenida desarrollando el CMF se

suponía que iba a ser incorporada en el

proceso de desarrollo de Zope.

En vez de rehacer el laberinto de códi-

go que constituye Zope, la Zope

Corporation optó hace tres años por

empezar de nuevo. Ya que uno de los

principios de la empresa es el software

libre, Zope siempre ha contado con el

apoyo de una gran comunidad. Los pro-

gramadores experimentados de Zope y

Zope X3.0 • PRÁCTICO

37Número 07W W W . L I N U X - M A G A Z I N E . E S

Zope, un servidor de aplicaciones web escrito en Python, es una plataforma de administración de contenido

de código abierto muy popular. Recientemente acaba de aparecer la nueva versión X3.0. En este artículo

vamos a mostrar las novedades que aporta. POR PHILIPP VON WEITERSHAUSSEN

37

Desarrollo Aplicaciones Web con Zope X3

FÓRMULA XDesarrollo Aplicaciones Web con Zope X3

FÓRMULA X

Cuando empezó el desarrollo de Zope 3,

pronto quedó claro que había que dese-

char la compatibilidad con la API de

Zope 2. El prefijo “X” de la versión origi-

nariamente significaba la naturaleza

“eXperimental” del proyecto. Por

supuesto, la versión estable Zope X3.0

es cualquier cosa menos experimental,

pero la “X” permanece en el nombre

para recordar a los usuarios que Zope

X3 no es compatible con la versión pre-

via.

Xs y Us

Page 38: Linux Magazine - Edición en Castellano, Nº 07

como almacenamiento de datos, proceso

de datos y presentación.

Muchos lectores estarán familiarizados

con ZODB (Zope Object Database) ya

presente en Zope 2. ZODB permite a los

objetos ser fácilmente persistentes en la

base de datos de forma transparente y al

mismo tiempo proporciona niveles

empresariales como transacciones, revi-

siones y servicios de almacenamiento.

ZEO (Zope Enterprise Objects) incluso

soporta clusters de múltiples instancias

de Zope, proporcionando de esta forma

una fácil escalabilidad.

Un sistema de seguridad flexible per-

mite al usuario asignar permisos para

proteger componentes, propiedades y

métodos. Los usuarios que deseen acce-

der a un componente protegido tienen

que estar autorizados. Los componentes

modulares autentican y autorizan a los

usuarios, dando a los operadores la posi-

bilidad de adaptar la seguridad a la situa-

ción presente sin tener que rehacer la

aplicación subyacente.

Zope no sólo proporciona las herra-

mientas para la internacionalización de

las aplicaciones que necesitan los pro-

gramadores, sino que es por sí mismo

completamente internacional. Un amplio

abanico de características, tales como

SMTP o servicios de correo basados en

sendmail, y un sistema de notificaciones

de eventos y soporte para XML RPC, sur-

gen de la paleta de Zope.

Cambio de Paradigma

Zope X3 elimina algunos de los fallos que

afectaban a Zope 2. Por ejemplo, la ver-

sión anterior esperaba a que las instan-

cias de clase proporcionaran los atributos

y métodos que necesitaban para interac-

cionar con Zope. Esto permitía que los

programadores sobrecargaran objetos con

una variedad de métodos, limitando la

portabilidad y haciendo que los siguientes

cambios fueran difíciles de hacer.

los recién incorporados al proyecto,

organizaron sesiones principales y

secundarias de desarrollo (llamadas

“sprints”) por todo el mundo para man-

tener al proyecto en marcha. Métodos

como Programación Extrema (XP) y

pruebas de unidades proporcionaron

calidad al proyecto. Además, el hecho de

que Zope 2 es un producto estable y con

éxito, permitió a los programadores el

tiempo suficiente para optimizar las

características claves en múltiples ciclos

de pruebas. Y nadie se quejaba si el códi-

go tenía que ser desechado para dejar

paso a una implementación mejor.

CaracterísticasEl núcleo de Zope X3 es su arquitectura

basada en componentes. Se les asigna a

los diferentes componentes respon-

sabilidades para las tareas espe-

cíficas. Por ejemplo, las

tareas de administra-

ción de compo-

nentes

PRÁCTICO • Zope X3.0

38 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 from zope.interface import

Interface

02 from zope.schema import Text,

TextLine

03 class IBuddy(Interface):

04 """Información sobre

buddy"""

05

06 first =

TextLine(title=u"Nombre")

07 last =

TextLine(title=u"Apellidos")

08 address =

Text(title=u"Dirección")

09 postal_code =

TextLine(title=u"Código

Postal")

Listado 1: Interfaces (inter-faces.py)

)01 from persistent import

Persistent

02 from zope.interface import

implements

03 from buddydemo.interfaces

import IBuddy

04

05 class Buddy(Persistent):

06 implements(IBuddy)

07

08 def __init__(self, first='',

last='',

09 address='',

postal_code=''):

10 self.first = first

11 self.last = last

12 self.address = address

13 self.postal_code = pos-

tal_code

Listado 2: Componentes deContenido (buddy.py

Figura 1: Este formulario de edición fue generado automáticamente por la referencia al esque-

ma de datos del componente de contenido.

Page 39: Linux Magazine - Edición en Castellano, Nº 07

Por otro lado, Zope X3 mantiene los

componentes individuales tan simples

como sea posible y añade componentes

si se necesita que se añada funcionali-

dad. La arquitectura de Zope define los

siguientes tipos de componentes:

• Contenido: Este tipo de compo-

nentes no tiene normalmente

métodos, tan sólo propiedades

que utilizan para publicar los

datos almacenados. Los tipos

de datos y valores se especifi-

can normalmente usando

esquemas de datos.

• Adaptadores: Son probable-

mente los componentes más

potentes. Los Adaptadores per-

miten a los desarrolladores aña-

dir funcionalidad a los compo-

nentes existentes sin tener que

modificar los propios compo-

nentes. Esta técnica es extrema-

damente útil si un marco

requiere una API específica.

Los desarrolladores pueden

dejar los componentes origina-

les tal cual e implementar un

adaptador que haga de interfaz

entre el componente y la API

requerida.

• Vistas: Visualizan los compo-

nentes para el usuario. Un

ejemplo de esto es un navega-

dor web, que usa Vistas para

renderizar HTML. Una vista es

realmente una clase especial de

adaptador que proporciona a

Zope X3.0 • PRÁCTICO

otros objetos una característica

que no poseen nativamente

(presentación).

Contrato AbstractoPara permitir a los componentes perma-

necer independientes de la implementa-

ción, los componentes no se referencian

por medio de las clases, sino que se usan

interfaces para describir la funcionalidad

que proporciona el componente. Los

interfaces son una contracción formal de

una clase que garantiza la disponibilidad

de una función específica por medio

de una API. Como el lenguaje Python

no soporta interfaces, Zope ha

tenido que implementarlas

desde cero.

El Listado 1 mues-

tra un interfaz de

una aplicación

de ejemplo

que adminis-

tra direccio-

nes privadas.

El interfaz es

un esquema de

datos que descri-

be un componente

de contenido, en este caso, los

datos de la dirección de una perso-

na. El almacenamiento del código postal

permite la búsqueda por ciudad y país

posteriormente.

En el Listado 1, la sentencia Python

class se usa para definir un interfaz, ya

que Python no soporta interfaces de

forma nativa. Adicionalmente, Zope no

distingue entre un interfaz que usa méto-

dos para describir funcionalidad y un

interfaz que define un esquema de datos.

Componentes de ContenidosSimplesLa tarea de escribir una clase persistente

en Zope 2 era bastante compleja. Como

mínimo, se necesitaba un metatipo,

declaraciones de seguridad y métodos de

instanciación para generar las nuevas

instancias requeridas por la interfaz

web. En Zope 3 los requeri-

sitos para

escribir

una clase

persistente

son mucho más fáciles que en

Zope 2. Los objetos persistentes tan

sólo tienen que manipular los datos

pasados a ellos. Cualquier otra cosa se

maneja a través de otros componentes.

El Listado 2 muestra una implementa-

ción del interfaz IBuddy que se muestra

en el Listado 1. Nótese que la clase here-

39Número 07W W W . L I N U X - M A G A Z I N E . E S

l)01 <configure

xmlns="http://namespaces.zope.

org/zope"

xmlns:browser="http://namespa-

ces.zope.org/browser">

02

03 <content

class="buddydemo.buddy.Buddy">

04 <require

permission="zope.View"

05 interface="buddydemo.inter-

faces.IBuddy" />

06 <require

permission="zope.ManageContent

"

07 set_schema="buddydemo.inter-

faces.IBuddy" />

08 </content>

09

10 <browser:addform

11 schema="buddydemo.interfa-

ces.IBuddy"

12 label="Add a new buddy

address"

13

content_factory="buddydemo.bud

dy.Buddy"

14 arguments="first last

address zipcode"

15 name="AddBuddy.html"

16

permission="zope.ManageContent

" />

17

18 <browser:editform

19 schema="buddydemo.interfa-

ces.IBuddy"

20 label="Edit buddy address"

21 name="edit.html"

22 menu="zmi_views"

23 title="Edit"

24

permission="zope.ManageContent

" />

25

26 <browser:addMenuItem

27

class="buddydemo.buddy.Buddy"

28 title="Buddy"

29

permission="zope.ManageContent

"

30 view="AddBuddy.html" />

31

32 </configure>

Listado 3: Configuración (configure.zcm

Page 40: Linux Magazine - Edición en Castellano, Nº 07

plemente paquetes Python y se pueden

instalar en cualquier sitio que se desee,

indicándolo en PYTHONPATH. Cualquier

otra cosa más que tenga que ver con la

configuración de componentes, como el

propio registro, declaraciones de seguri-

dad o vistas de navegadores web, están

ahora ligadas al fichero de configura-

ción. Esta solución proporciona a los

desarrolladores una ventaja importante:

la posibilidad de desactivar componen-

tes temporalmente o permanentemente

sin necesidad de modificar el código.

El Listado 3 muestra las directivas de

configuración típicas para un componen-

te de contenido basado en un esquema.

El ejemplo tan sólo maneja las declara-

ciones de seguridad para lectura y escri-

tura de datos para las instancias de

buddy. El fichero sigue con la definición

de dos formularios. Un formulario gene-

ra objetos buddy, el otro los edita.

Zope tiene la capacidad de generar

automáticamente un formulario de

esquema de datos definido en el interfaz

IBuddy. Además, tal y como se muestra

en la Figura 1, un esquema, una imple-

mentación persistente simple, unas

cuantas directivas de configuración y

nada de HTML, proporcionan un compo-

nente que se ejecutará en un navegador

web.

La última directiva en el Listado 3

añade entradas al menú de la interfaz

web de Zope para que los usuarios pue-

dan crear objetos buddies. El hecho por

el que esta directiva existe es para servir

de ejemplo de un principio importante

pero básico de la filosofía de Zope 3: “Es

mejor ser Explícito que Implícito”.

Aunque desarrollar software Zope 3

pueda implicar escribir más, al menos se

tendrá mayor facilidad de lectura del

código dentro de unos cuantos meses.

El FuturoZope ha tenido un seguimiento masivo

gracias a sus características, su flexibili-

dad y por estar basado en Python, y por

ahora parece que esta comunidad va a

seguir creciendo. El uso del software para

proyectos a gran escala y en grandes

empresas ha ayudado a Zope a madurar.

Zope X3 es un paso enorme para el pro-

yecto. Sin embargo, puede que le lleve

algo de tiempo a Zope X3 y al nuevo

paradigma que presenta contar con una

aceptación mayoritaria y, por ello, se

espera que Zope 2 siga existiendo duran-

te algún tiempo. Vale la pena echarle un

vistazo al proyecto Five [6], que soporta

una migración gradual y considerada a

Zope X3, a pesar de sus incompatibilida-

des con la API de Zope 2. �

dada

de

Persistent

se asegura de

que sus instan-

cias sean automática-

mente almacenadas en ZODB. Para

asegurar la clase contra otros componen-

tes, también se necesita especificar que

la clase implementa el interfaz IBuddy.

Configuración XMLZope 2 esperaba importar las bibliotecas

desde el directorio Products. El módulo de

inicialización para cada paquete

(__init__.py) solía contener el registro de

componentes. Otros elementos tales

como declaraciones de seguridad y confi-

guraciones de vistas de navegadores web

terminaban en el código de la aplicación.

Zope X3 lo hace de manera distinta.

Las extensiones de Zope son ahora sim-

40 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Philipp Von

Weitershausen

estudia Física en

Dresden,

Alemania.

Además es pro-

gramador free-

lance y consul-

tor. Philipp tam-

bién participa en

el equipo de desarrollo de Zope 3

y es autor del libro Desarrollo de

componentes Web con Zope 3.

EL

AU

TO

R

[1] Plone: http://plone.org

[2] Sitio web de la comunidad Zope:

http://zope.org

[3] Silva: http://infrae.com/products/silva

[4] CPS: http://www.nuxeo.org/cps

[5] Descarga de Zope X3: http://zope.org/

Products/ZopeX3

[6] Five: http://codespeak.net/z3/five

RECURSOS

La instalación de Zope 3 en Linux es sen-

cilla. Se necesita la versión actual de

Python 2.3.4 con el soporte Zlib. Zope

está escrito en su mayor parte en

Python, pero algunos módulos están

implementados en C por cuestiones de

eficiencia. Antes de instalarlo, hay que

compilar el código de la aplicación. El

fichero tar.gz contiene un script de confi-

guración (configure) que automática-

mente genera el fichero Makefile para el

proceso de compilación e instalación.

Las bibliotecas de Zope se instalan nor-

malmente en /usr/local/Zope-3.0.x. Sin

embargo, se puede cambiar esta locali-

zación con el parámetro --prefix en el

script configure. Para ejecutar una ins-

tancia del servidor, primero se necesita

crear un árbol de directorios para la ins-

tancia. Este árbol de directorios no sólo

se usa para almacenar la base de datos

de objetos para la instancia de Zope

(ZODB), sino que también se usa para

almacenar bibliotecas específicas reque-

ridas por la instancia. Una instalación de

Zope puede usar múltiples instancias

ejecutándose en paralelo.

El script mkzopeinstance en el directorio

bin crea un directorio de instancias.

Después de especificar la ruta para la

instancia y las credenciales para una

cuenta temporal de administración, se

puede ejecutar la instancia tecleando

runzope (en el directorio bin de la instan-

cia). La configuración del servidor, los

puertos HTTP y FTP y varias opciones de

registro se encuentran en etc/zope.conf.

Los ficheros de configuración usan el

mismo formato que los del servidor

Apache. Por defecto, el servidor HTTP

usará el puerto 8080 y el servidor FTP el

puerto 8021.

Después de ejecutar Zope tecleando run-

zope se puede pulsar Ctrl-C para salir.

Como esto no es práctico para una apli-

cación de servidor, se puede ejecutar el

script zopectl (también en el directorio

bin de la instancia) para controlar el ser-

vidor; es similar a apachectl del servidor

Apache.

Instalación y Configuración

PRÁCTICO • Zope X3.0

Page 41: Linux Magazine - Edición en Castellano, Nº 07

Apt (Advanced Packaging Tool),es un sistema simple peropoderoso para instalar softwa-

re en sistemas Debian. Los paquetesespecíficos para Debian están disponi-bles tanto como binarios como códigofuente, y los usuarios pueden acceder aun repositorio administrado centraliza-damente para actualizar todo su soft-ware desde Internet. Las herramientasde administración de paquetes resuel-ven automáticamente las dependenciasque puedan surgir durante la actualiza-ción.

En la actualidad los usuarios de distri-buciones basadas en RPM pueden asi-mismo beneficiarse de las bondades dela herramienta de Debian. Vamos a usarSuse, por ejemplo, para mostrar cómoadministrar nuestro software convenien-

temente y con fiabilidad con Apt paraRPM.

Instalación y ConfiguraciónSi vamos a usar Apt con Suse, será conve-niente disponer de una conexión de bandaancha a Internet, ya que esta herramientadescarga los paquetes de la red para insta-larlos. Antes de nada, los usuarios de Suse9.2 deberán instalar previamente dospaquetes: apt-0.5.15cnc6-rb.suse092.

6.i586.rpm y apt-libs-0.5.15cnc6-rb.s

use092.6.i586.rpm. Ambos paquetes estándisponibles en [1].

Si preferimos usar la interfaz gráficade Apt, debemos asegurarnos de insta-lar el paquete synaptic-0.55.3-0.

suse092.rb1.i586.rpm de igual manera.Después de completar este paso, nece-

sitamos configurar un archivo llamado

sources.list (véase el Cuadro 1:Repositorios). Este archivo especificaqué repositorios vamos a utilizar y cua-les no. Apt entiende como repositorioscolecciones de paquetes de software,usualmente ordenados por categoría. Elarchivo sources.list situado en /etc/apt

nos permite especificar estos reposito-rios. Los usuarios más cautelosos evita-rán añadir las ramas como kde-unstable

o kernelof-the-day a la lista de fuentes.De igual manera, los paquetes del reposi-torio usr-local-bin han de manejarse concuidado. Y si estamos contentos connuestra interfaz gráfica tal como está,deberíamos también eliminar la ramaX.org.

Con privilegios de root, editamos elarchivo /etc/apt/apt.conf.d/

gpg-checker.conf y reemplazamos el valor

APT para RPMs • PRÁCTICO

41Número 07W W W . L I N U X - M A G A Z I N E . E S

La herramienta Apt de Debian, está considerada generalmente como la mejor elección para administrar

paquetes en Linux. Pero, ¿y si no usamos Debian? En este artículo explicamos como podemos usar Apt con

distribuciones Linux basadas en RPM. POR MIRKO ALBRECH

41

Apt en Suse

REMIX DE PAQUETES

Page 42: Linux Magazine - Edición en Castellano, Nº 07

la interfaz gráfica Synapticpara modificar la lista defuentes, seleccionando paraello Settings | Package sources.

Uso en ConsolaApt tiene unas poderosascaracterísticas para modificarnuestra colección de software.Sin embargo no es tan sencilloentender cómo funciona. Nosvamos a concentrar en lasopciones disponibles parausuarios con un conocimientoprevio de las herramientasYaST y YOU. Los lectores másminuciosos deberán revisar laspáginas man para tener unavisión más profunda de Apt.

Tras configurar sources.list

en /etc/apt, tecleamos apt-get update enuna terminal. Esta orden verifica laestructura de nuestro software, localizalos datos especificados en nuestra sour-

ces.list y nos muestra las opciones deactualización.

Podemos teclear apt-get install nom-

bredelpaquete o apt-get remove nombre-

delpaquete en la consola para instalar oeliminar el paquete respectivamente. Losusuarios más atrevidos estarán tentadosde usar apt-get upgrade para actualizar elsistema por completo. No es aconsejableeste método a menos que sepamos lasconsecuencias. Decisiones faltas de cau-tela o sin la debida información puedenconducir a instalaciones desde reposito-rios con paquetes inestables. Hemos deasegurarnos de ejecutar apt-get -s upgra-

de previamente para revisar que paque-tes vamos a actualizar con Apt. Por otrolado, si sólo necesitamos instalar paque-tes de seguridad oficiales o software dela rama estable de KDE, el método de la

línea de comandos es la manera másrecomendable de hacerlo. Si preferimosinvestigar más detenidamente este tema,podemos usar la herramienta Synaptic.

SynapticSi aún no tenemos instalado el paquetesynaptic-0.55.3-0.suse092.rb1.i586.rpm,lo instalamos tecleando como root

apt-get install synaptic. Esto supone queel toolkit Gtk está instalado en nuestroequipo o bien que nuestra sources.list

tiene una entrada al repositorio base. Eneste último caso, Apt nos preguntará siinstalamos los otros paquetes necesarios.

Después de terminar la instalación,encontraremos un enlace al programa enSystem | Configuration | Synaptic

Package Manager, siempre que tengamosuna versión reciente de KDE con la tec-nología llamada vFolder. Tras introducirnuestro password de root, comprobare-mos que la parte izquierda de la ventanadel programa está dividida en seccionesde manera parecida a YaST. Synaptic listalos paquetes en la derecha. Una marcaverde significa que el programa está ins-talado. Una marca con un asterisco signi-fica que está disponible una versión másreciente. Podemos revisar los signos usa-dos en Help | Icon Legends.

La instalación o actualización depaquetes sigue un patrón similar al deYaST. Seleccionamos el paquete requeri-do y elegimos Mark for installation oMark for upgrade en el menú desplega-ble. Pulsamos en Apply en la barra deherramientas para pasar a la descarga einstalación. Si sólo queremos revisar lasnuevas versiones (apt-get update), selec-cionamos Reload en la barra de herra-mientas.

El menú Settings tiene un buen núme-ro de opciones de configuración, que se

en GPG::CHECK de true a false. Esto per-mite que Apt acepte paquetes sin firma.De lo contrario, un buen número depaquetes no podrán cargarse debido a lafalta de firma.

Los usuarios más precavidos preferi-rán evitar las actualizaciones automáti-cas del kernel. Para ello, abrimos elarchivo /etc/apt/apt.conf.d/apt.conf yañadimos lo siguiente en la sección RPMpara el kernel 2.6:

Hold {"kernel-default"; U

"kernel-source"; };

Si aún estamos usando el kernel 2.4,necesitaremos las siguientes líneas en sulugar:

Hold {"k_deflt"; U

"kernel-source"; };

Si preferimos evitar estas tareas de confi-guración en modo texto, podemos usar

PRÁCTICO • Apt para RPMs

42 Número 07 W W W . L I N U X - M A G A Z I N E . E S

El repositorio tiene siempre una ruta

para los archivos binarios (RPMS.name)

y una segunda ruta para el código fuente

de los programas (SRPMS.name). Sólo

la primera es importante para la ejecu-

ción del sistema, pero tendremos que

especificar la ruta SRPMS si queremos

instalar el código fuente. Un ejemplo de

una lista de repositorios se encuentra

disponible para descargar desde [2].

Copiamos el archivo a /etc/apt y lo

renombramos como sources.list.

Un fichero sources.list bastante más

conservadora, que no actualiza cada pro-

grama que esté disponible a una versión

más reciente, tiene una pinta como la

siguiente:

#

# Repository created by: aptate

(version 0.69.0)

# At: Fri Jan 28 17:16:18 MET

2005

# More info about aptate at:

http://apt4rpm.sourceforge.net

#

rpm ftp://ftp.gwdg.de/pub/linux/

U

suse/apt suse/9.2-i386rpmkeys U

base funktronics update misc U

mozilla suser-rbossuser-guru U

suser-gbv packman packman-i686 U

wine suse-projects U

kde3-stable security

O si lo preferimos, podemos navegar por

los numerosos repositorios y añadir

aquellos que mejor nos parezcan.

Cuadro 1: Repositorios

Figura 1: El comando “apt -s upgrade” nos permite veri-

ficar los resultados antes de actualizar.

Page 43: Linux Magazine - Edición en Castellano, Nº 07

explican por sí mismas. Puede que que-ramos llevar la cuenta de qué paquetesproceden de qué repositorio. Para ello,seleccionamos adicionalmente la colum-na Components en la pestaña Columns

and Fonts dentro de Settings |

Configuration. Si hubiese múltiples ver-siones de un paquete disponibles devarios repositorios, podemos seleccionarPackage | Force version para instalar elpaquete requerido. La opción Package |

Lock version nos ayuda a evitar la actua-lización no deseada de un paquete.

Los paquetes están agrupados porcategoría en el panel izquierdo de la ven-tana de Synaptic, para ofrecernos unamejor visión global. Bajo la lista tenemosalgunos botones que podemos pulsarpara cambiar la vista. La opción Status

nos permite ordenar paquetes de progra-mas instalados o disponibles en funcióndel criterio seleccionado.

PragmatismoComo se mencionó anteriormente, unaactualización completa del sistema noestá recomendada, a menos que sepa-

APT para RPMs • PRÁCTICO

mos a ciencia cierta como funciona Apt.Es mejor concentrarse en las actualiza-ciones de seguridad mediante el reposi-torio correspondiente, y en actualizarpaquetes muy específicos.

Supongamos que estamos aún conSuse 9.0 o 9.1, y estamos un poco asus-tados de una gran actualización. Enlugar de esto, lo que queremos es actua-lizarnos al último escritorio KDE, ya quehemos leído la gran cantidad de mejoraslogradas.

La instalación manual usando lospaquetes de Suse es una pesadilla, ya quedeja al sistema con un montón de depen-dencias no resueltas. En lugar de esto,buscamos “kde” en Synaptic. La búsque-da da como resultado una lista de paque-tes que necesitamos instalar y actualizar.Todo lo que necesitamos hacer es seleccio-nar los paquetes que queremos actualizar.Cuando lancemos la actualización, Apttratará cualquier paquete de KDE borradoo introducido recientemente y resolverátodas las dependencias.

El método es parecido si disponemosde Suse 9.2, pero no aparecen algunos

importantes componentes multimediadado que Novell/Suse no los incluye ensus medios de instalación, debido a pro-blemas con las licencias. Hemos de des-cargarnos previamente estos paquetes de

Apt no funciona únicamente para la ulti-

ma versión de Suse, la 9.2, sino también

para cualquier Suse desde la 7.3 en ade-

lante. La arquitectura AMD64 está sopor-

tada desde Suse 9.x o superior.

Los paquetes para apt, apt-libs y synap-

tic están disponibles en [1]. Sólo tene-

mos que reemplazar el número de la

versión 9.2 en la URL con nuestra ver-

sión de Suse. Para ejecutar Apt en ver-

siones anteriores a Suse 8.2, también

nos hará falta el paquete

lua-5.0.2-rb1.i586.rpm.

Puede que apreciemos algunas diferen-

cias respecto a ejecutar Apt en Suse 9.x.

Por ejemplo, desde Suse 7.3 al 8.1 se

guarda el archivo apt.conf directamente

en /etc/apt/.

Cuadro 2: Apt para versio-nes antiguas de Suse

Page 44: Linux Magazine - Edición en Castellano, Nº 07

Para localizar la página adecuada, hemosde añadir #suse92 o #suse73 a URL,dependiendo de nuestra versión.

A veces puede ocurrir que un intentode instalación de un paquete abc falledando un mensaje del tipopaket-xyz.so.2 requires abc. Podemospedirle a Apt que busque el paquete per-dido con apt-get install abc

paket-xyz.so.2.La herramienta apt-iselect combina la

funcionalidad de apt-cache search yapt-get install ofreciendo una interfazmás amigable basada en consola.Podemos instalar esta herramienta desdeel repositorio suser-oc2pus tecleando apt

install apt-iselect.Si ordenamos apt-iselect

libgnutls-extra.so.11, por ejemplo, nosindica que el archivorequerido está en elpaquete gnutls.Podemos ver los deta-lles del paquete actua-lizado (checksum,dependencias adicio-nales, descripción,nombre de los archi-vos, tamaño, etc.) eincluso instalarlo si asílo deseamos. Éstapuede ser también unabuena manera deencontrar qué paque-

tes existen para una palabra clave,como pueda ser “chess” (ajedrez, véaseFigura 3).

Cuando necesitemos borrar un paque-te, tenemos que recordar que el típicoapt-get remove nombredepaquete sóloborrará el programa. No borrará ningúnpaquete instalado para resolver depen-dencias. Sin embargo ,apt-get -D remove

nombredelpaquete permite borrar tam-bién esos paquetes.

Encontraremos un HOWTO para Apten Suse en [5], junto con una buena can-tidad de otros HOWTOs relativos a Apten otras distribuciones RPM.

ConclusionesNo es muy complicado configurar unsistema Apt en Suse y los pasos paraconseguirlo no llevan demasiado tiem-po. La excelente y poderosa interfazgráfica Synaptic ofrece a los usuariossin mucha experiencia la herramientasencilla que buscaban para acostum-brarse a Apt. Las actualizaciones delsistema completo necesitan más expe-riencia debido al método descentraliza-do en el que se organizan los reposito-rios. En caso de duda, no es mejor norealizar grandes cambios en un sistemaque funcione.

Apt no está restringido a usuarios deSuse. Esta herramienta está disponiblepara las principales distribuciones basa-das en RPM. La instalación y configura-ción son muy similares a las descritas eneste artículo, aunque el número de repo-sitorios pueda variar según la distribu-ción. Véase [6] y [7] para más detalles. �

la Web [3] e instalarlos. Algunas vecesesto requerirá investigar un poco por losforos para averiguar el orden correcto deinstalación. De todas maneras no es muycomplicado si añadimos packman ypackman-i686 a nuestra sources.list einstalamos Xine o MPlayer.

Trucos y ConsejosApt nos facilita mucho la instalación desoftware, pero puede que aún queramossaber algunos consejos para el uso segu-ro del sistema de administración depaquetes.

Antes de meternos en una actualiza-ción masiva, es bueno comprobar losnuevos paquetes que hayan sido publica-dos. La página Freshrpms [4] es un sitioideal para revisar los nuevos paquetes.

PRÁCTICO • Apt para RPMs

44 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] Apt para RPM: http://ftp.gwdg.de/pub/

linux/suse/apt/suse/9.2-i386/RPMS.

suser-rbos

[2] Ejemplo de archivo sources.list: http://

ftp.gwdg.de/pub/linux/suse/apt/suse/

9.2-i386/examples/

[3] PackMan: http://packman.links2linux.

org/

[4] Freshrpms: http://linux01.gwdg.de/

apt4rpm/freshrpms.html

[5] Apt para Suse: http://linux01.gwdg.de/

apt4rpm/apt4suse.html

[6] Apt para Red Hat: http://apt.42h.de/

index.en.shtml

[7] Apt4rpm: http://apt4rpm.sourceforge.

net/

RECURSOS

Figura 3: apt-iselect encuentra rápidamente todos los paquetes

que concuerden con una palabra clave.

Figura 2: Synaptic es un cómodo interfaz gráfico para Apt.

Page 45: Linux Magazine - Edición en Castellano, Nº 07

Durante la era .com, cada compa-

ñía corría sus aplicaciones en sis-

temas Sun y la plataforma Sun

SPARC tenía gran parte del mercado en

áreas académicas. Esta abundancia de

máquinas SPARC significa que puede

acceder a una SPARC por poco dinero…

¡hasta podríamos tener un SPARC acumu-

lando polvo en la oficina!

Linux soporta la plataforma SPARC

desde hace años y SPARC aún es una de

las plataformas alternativas más popula-

res para Linux. De todas formas, Linux

sobre SPARC es muy parecido a Linux

sobre PC, pero si quiere que su instala-

ción SPARC vaya como la seda, hay varias

diferencias que debería tener en cuenta.

Este artículo describe algunos sistemas

SPARC que trabajan con Linux y algunos

detalles que necesitará conocer si quiere

instalar Linux en una máquina Sun.

Linux y SPARCEl hardware de Sun no es tan difícil de

encontrar (ver “Cuadro 2: A la Búsqueda

del Sol”). Las series Sun SPARCstation se

vendieron realmente bien y encontrará

muchos lotes SPARCstation de 10 y 20

estaciones de trabajo en eBay, por ejem-

plo. Hay también es probable para quien

le interese que su LUG local o incluso en

su universidad hayan máquinas Sun anti-

guas de las que se quieran deshacer.

Las máquinas SPARC (32-bits) fueron

unas de las primeras (sino la primera) pla-

taformas donde Linux fue montado tras

los x86. Hace unos 6 años, varios vende-

dores, como Red Hat, solían tener CDs

para los sistemas SPARC, pero el mercado

de Linux en SPARC nunca ha sido muy

extenso. Las distribuciones comerciales

cesaron rápidamente su desarrollo, debido

a su simplicidad no era económicamente

viable mantener una versión separada

para las SPARC. Actualmente todas las dis-

tribuciones para SPARC están mantenidas

por la comunidad.

Las distribuciones de SPARC Linux más

extendidas incluyen:

• Aurora Linux: La primera ver-

sión estaba basada en Red Hat

7.3, pero el trabajo se hizo para

que las versiones actuales se

sincronizaran con el desarrollo

del último Fedora Core y ocasio-

nalmente mezclarlo en el Fedora

Core.

• Debian GNU/Linux: La distribu-

ción SPARC que más tiempo

lleva en el mercado

• Gentoo

• Splack: Slackware para SPARC

Todas estas distribuciones vienen con

herramientas de gestión que también

están disponibles para x86 (RPM y yum

para Aurora, apt para Debian, portage

para Gentoo, pkgtools para Slack).

Además de las distribuciones que he men-

cionado, existen otras distribuciones más

pequeñas que también soportan SPARC.

La veterana de las máquinas SPARC,

sun4u, no está del todo soportada por

Linux. Los SPARCs posteriores se han

soportado con varios grados de éxito.

Algunas máquinas sólo funcionan en

SPARC • PRÁCTICO

45Número 07W W W . L I N U X - M A G A Z I N E . E S

Como sabemos Linux trabaja como la

seda en PCs, pero la arquitectura x86 es

una más de las plataformas que Linux

soporta. Este artículo nos proporciona la

manera de empezar con la configuración

de Linux en una máquina Sun SPARC.

POR ARMIJN HEMEL

45

SALTAN CHISPAS

Instalando Linux en una máquina Sun SPARC

SALTAN CHISPAS

01 Disk /dev/hda (Sun disk label): 16 heads, 63 sectors, 17660 cylinders

02 Units = cylinders of 1008 * 512 bytes

03 Device Flag Start End Blocks Id System

04 /dev/hda1 0 102 51408 1 Boot

05 /dev/hda2 102 16620 832507 2 83 Linux native

06 /dev/hda3 0 17660 8900640 5 Whole disk

07 /dev/hda4 16620 17660 524160 8 Linux swap

Listado 1: Configuración de Disco de SPARC Linux

Todos los chips SPARC son big endian,

sin embargo las CPUs x86 son little

endian. En los sistemas big endian, el

byte más significativo se almacena pri-

mero. En los sistemas little endian el

byte menos significativo se almacena

primero. En algunos casos, esto puede

ser un problema; por ejemplo, con los

programas que utilizan un formato bina-

rio especial para ficheros de datos.

Algunos programas esperan que sus

datos estén en un orden de byte especí-

fico. Estos casos son bastantes extraños,

de hecho, sólo he visto unos pocos

casos así, principalmente con progra-

mas antiguos MacOS, tal como

MacWrite II, pero puede ocurrir.

Cuadro 1: Endianness

Page 46: Linux Magazine - Edición en Castellano, Nº 07

La mayoría del

desarrollo actual

ya está realizado

para los nuevos

ordenadores

UltraSPARC con

PCI. Debido a

esto, los equipos

SPARC de 32-bit y

los UltraSPARC

basados en SBus

a veces se retra-

san un poco. Los

nuevos kernels no siempre quieren ejecu-

tarse de forma correcta en estas máquinas

y lleva unas cuantas versiones de kernel

el arreglar estos problemas.

Los servidores de altas prestaciones son

demasiado caros y normalmente no están

disponibles para un usuario normal y

Linux probablemente no funcionará de

ninguna forma, aunque hay informes de

que Linux arranca en algunos servidores

de gama media, tal como el Enterprise

4500.

Instalación de Linux enSPARCProbamos Linux Aurora SPARC en una

máquina Ultra 10. La Ultra 10 tiene discos

IDE y un bus PCI, con una CPU UltraSPARC

III y está bien soportada por Linux. La ins-

talación de Aurora no es mucho más difícil

que la de Red Hat en un PC “normal”, ya

que el instalador hace la mayor parte del

trabajo sucio por nosotros. Pero hay varias

diferencias fundamentales entre las dos

arquitecturas que debemos conocer cuando

las cosas vayan mal.

Una de las diferencias entre una máqui-

na Sun y un PC normal es la forma en la

que se particionan los discos duros. Un

modo uniprocesador y no en modo SMP.

Para algunas máquinas, los diferentes

subtipos no están soportados, por ejem-

plo, la SPARCstation 5 con una CPU de

170 MHz no está soportada, sin embargo

otras SPARCstation 5 sí están soportadas.

La razón por la que esto sucede es que la

CPU de 170 MHz es de otro fabricante.

PRÁCTICO • SPARC

46 Número 07 W W W . L I N U X - M A G A Z I N E . E S

No toda máquina Sun tiene un chip

SPARC dentro. Las máquinas Sun hasta

la versión 4 estaban basadas en el chip

de Motorola 68000 y hay algunas pocas

máquinas basadas también en el chip

386 de Intel. Si se desea ejecutar un siste-

ma operativo gratuito en una máquina

Motorola, NetBSD sería la mejor opción,

con cualquier versión portado a sun2 o

sun3. Estas máquinas datan de 1980 y

son poco útiles con los estándares actua-

les. Sun también ha incorporado el chip

x86 en las máquinas Cobalt y reciente-

mente ha comenzado a usar los chips

AMD Optaron para los servidores y las

estaciones de trabajo.

El chip SPARC se usa desde 1987, cuando

Sun presentó la versión 4 de sus máqui-

nas. La versión 4 llegó a ser conocida

como “Sun4”. Algunos de los subtipos

de Sun4 se pueden ver en la Tabla 1.

La primera generación de las máquinas

Sun4 utilizaron el VMEbus, que también

se utilizó en ordenadores Sun basados

en Motorola. Posteriormente, Sun cam-

bió al bus SBus, que se usó en todas las

máquinas SPARC. Unas cuantas máqui-

nas también usan las ranuras de expan-

sión MBus, que pueden utilizarse para

añadir CPUs extra a la máquina.

Los primeros ordenadores basados en

UltraSPARC, como el Ultra1, el e1 y el

Ultra 2, usaron SBus para conectar las

tarjetas de expansión, memorias especí-

ficas de Sun y discos SCA. Sun mantuvo

esta tecnología en la mayoría de los ser-

vidores, con los nuevos servidores de

gama alta también se usa tecnología

nueva como el FibreChannel y el PCI que

se puede intercambiar en caliente, pero

se pasó a tecnología PC en el mercado de

las estaciones de trabajo. El Ultra 5 y el

Ultra 10 fueron las primeras máquinas

que comercialmente contaron con un

bus PCI, discos IDE y conectores VGA (ya

fueran en la placa o como tarjetas de

expansión).

Desde 1996, el chip UltraSPARC se usa

en casi todas las máquinas, con la nota-

ble excepción de varios JavaStation. Las

JavaStation usaban un chip SPARC en la

placa con componentes PC (memoria PC,

bus PCI).

Para hacer las cosas más interesantes,

no todos los chips SPARC están hechos

por Sun. Los estándares SPARC los lleva

una empresa aparte, SPARC

Internacional. Los estándares pueden

descargarse gratuitamente y pueden

implementarse sin tener que pagar royal-

ties a SPARC Internacional o a Sun. Hay

un chip certificado SPARCv8 diseñado

por ESA que tiene un diseño desarrolla-

do bajo licencia LGPL. Los diseños para

este chip, llamado LEON SPARC, pueden

descargarse desde http://www.gaisler.

com/.

En Japón, Fujitsu ha realizado sus pro-

pias versiones de SPARC y UltraSPARC.

Recientemente, Sun y Fujitsu firmaron

un acuerdo para colaborar en los diseños

de futuras versiones de sus chips SPARC.

Hay también unas cuantas compañías

que han hecho clones UltraSPARC, tal

como Solair y Tadpole. Estas máquinas

son idénticas a las máquinas normales

de Sun en su interior.

A menudo veremos referencias a cosas

como sparcv8 o sparc64. La primera des-

cribe la versión de la arquitectura SPARC.

Hay 3 versiones que pueden encontrarse:

• sparcv7: versión 7 de la arquitectura

SPARC, 32 bits

• sparcv8: versión 8 de la arquitectura

SPARC, 32 bits

• sparcv9: versión 9 de la arquitectura

SPARC, 64 bits

Las versiones más actuales tienen más

posibilidades de que un programa apro-

vecharse durante el tiempo de ejecución.

La mayoría de las distribuciones Linux

compilan para sparcv7, pero para algu-

nos paquetes, en particular openssl, es

útil utilizar unas etiquetas especiales de

optimización durante la compilación.

Algunas distribuciones, como Aurora,

contienen paquetes especiales precom-

pilados para openssl de sparcv8 y

sparcv9.

Términos como sparc32 y sparc64 no

describen un chip en particular, en cam-

bio, describe entornos.

• sparc32: un entorno SPARC de 32-bit

• sparc64: un entorno SPARC de 64-bit

Es bastante normal tener un entorno

sparc32 ejecutándose en un chip SPARC

de 64-bit. De hecho, esto está por defecto

para la mayoría de las distribuciones

Linux.

Cuadro 2: A la Búsqueda del Sol

Tipo de Máquina Bits Bus Máquinas (incompleto)

sun4 32 VMEbus Sun-4

sun4c 32 SBus SPARCstation SLC/ELC/

IPC/IPX/1/2

sun4d 32 SBus SPARCcenter

SPARCserver

sun4m 32 SBus SPARCstation 4/5/10/20;

SPARCstation X/ZX/

Voyager;SPARCclassic

sun4u 64 SBus/PCI Ultra; Blade; Enterprise;

Fire; Fujitsu SPARC64

Tabla 1: Subtipos Sun4u

Page 47: Linux Magazine - Edición en Castellano, Nº 07

PC puede tener hasta 4 particiones prima-

rias en un disco, una de las cuales puede

ser una partición extendida con más parti-

ciones lógicas en ella.

Un disco en un sistema SPARC es algo

diferente. Puede haber 8 particiones en

el disco. La tercera partición representa

el disco completo. Hay también algunas

restricciones con respecto a la disposi-

ción, tales como una partición que utili-

za su primer sector (como la swap) no

debería empezar en el cilindro 0 del

disco porque borraría la etiqueta. A

pesar de ello, si se quiere transplantar un

disco duro desde un PC Linux y utilizar-

lo en una máquina SPARC con todos los

datos intactos, deberemos asegurarnos

de que el kernel puede manejar etiquetas

de disco de PC porque estas etiquetas no

funcionarán por defecto.

El Listado 1 muestra un ejemplo de

configuración de disco para un sistema

Linux SPARC.

Si se quiere arrancar Linux desde un

CD en un sistema SCSI, como el Ultra 1,

hay que asegurarse de que el reproductor

de CDs puede manejar tamaños de blo-

que de 512 bytes. La mayoría de los repro-

ductores de CD tienen por defecto un

tamaño de bloque de 1k. En un buen

reproductor de CD SCSI, el tamaño de

bloque puede establecerse mediante un

jumper.

La instalación de Linux es completa-

mente transparente para las máquinas

como la Ultra 10. La situación puede ser

diferente con las máquinas antiguas con

SPARC • PRÁCTICO

SBus o un chip de 32-bit. Antes de insta-

lar Linux, hemos de comprobar que el

hardware que va a utilizarse está real-

mente soportado. Un buen punto de parti-

da es la lista de compatibilidad de hard-

ware de Aurora.

El ArranqueUna gran diferencia entre la plataforma

PC y la SPARC es el procedimiento de

arranque. El PC utiliza una simple BIOS

para inicializar el hardware, encuentra el

bootloader y lo lanza. En las máquinas

SPARC se utiliza el OpenBoot PROM

(OBP). OBP ofrece un conjunto muy com-

pleto de comandos para arrancar el kernel

(disk, tape, cd, network), así como

comandos de diagnóstico.

Para arrancar Linux, se puede utilizar

un bootloader especial denominado

SPARC Improved boot LOader (SILO).

SILO tiene soporte para arrancar Solaris,

SunOS y Linux desde disco. Una variante

de SILO denominada TILO es para el

arranque en red. SILO es como GRUB con

respecto a la disposición de algunos siste-

mas de ficheros, y, a diferencia de LILO,

no necesita ser reinstalado después de un

cambio en la configuración. La configura-

ción de SILO puede ser un poco complejo,

pero el manual es muy claro.

AlternativasSi no quiere ejecutar Linux en una máqui-

na SPARC, hay varias alternativas. Por

supuesto, puede utilizar Solaris. Sun des-

arrolla Solaris 10 bajo licencia (CDDL)

esto es, según con quien se hable, abierto.

Si necesita una alternativa que sea real-

mente abierta, no estaría mal considerar

la variante BSD. NetBSD ha tenido sopor-

te para SPARC desde hace tiempo.

OpenBSD tiene un excelente soporte para

SPARC. La mayoría del desarrollo de

OpenBSD se ha realizado en máquinas

UltraSPARC. Los nuevos equipos

UltraSPARC III no están soportados por

OpenBSD debido a la desgana de Sun por

hacer las especificaciones bajo unos tér-

minos aceptables.

La versión FreeBSD para SPARC es bas-

tante reciente. El único objetivo de los

desarrolladores era sólo las máquinas

UltraSPARC, no las SPARC de 32-bit. No

todo el trabajo está hecho y el soporte de

elementos como tarjetas gráficas está aún

incompleto. �

47Número 07W W W . L I N U X - M A G A Z I N E . E S

[1] Sun systems overview: http://

sunsolve.sun.com/handbook_pub/

Systems/

[2] SPARC CPU names guide: http://www.

sparcproductdirectory.com/sparccpu.

html

[3] Aurora Linux Hardware Compatibility:

http://auroralinux.org/cgi-bin/wiki.

pl?HardwareCompatibility

[4] SILO bootloader: http://www.

sparc-boot.org/

[5] Páginas de la Wikipedia sobre byte

endianness: http://en.wikipedia.org/

wiki/Endianness

RECURSOS

Una de las partes más interesantes de la

arquitectura UltraSPARC es la posibilidad

de ejecutar binarios de 64-bit. Como la

mayoría de las arquitecturas de 64-bit, no

es completamente pura, ya que

UltraSPARC puede ejecutar binarios

SPARC de 32-bit. Esto se hizo a propósi-

to, ya que los clientes de Sun todavía

tenían la necesidad de ejecutar los bina-

rios antiguos de 32-bits en los nuevos

equipos de 64-bit.

Hasta ahora, Linux en UltraSPARC ha

sido un híbrido de 64-bit y 32-bit. El ker-

nel es completamente de 64 bit pero las

aplicaciones de usuario son normalmen-

te de 32-bit. Esta mezcla también tiene

algunas consecuencias para el sistema

(por ejemplo, gcc más binutils) usado

para compilar programas, como tiene

que ser capaz de compilar ambos bina-

rios de 32-bit y 64-bit. A no ser que uno

haga su propia distribución no tenemos

por que preocuparnos demasiado por

esto y sólo debemos utilizar las utilida-

des proporcionadas por el vendedor. En

la mayoría de la documentación sobre

Linux en UltraSPARC, vemos que se

necesita el compilador especial “egcs64”

para compilar el kernel. Actualmente

esto no es del todo cierto; podemos usar

GCC. Como usuario, no necesitamos

especificar ningún cambio especial. El

proceso de configuración del kernel se

encarga de escoger el compilador correc-

to por nosotros.

Algunas aplicaciones de usuarios no se

beneficiarán de haberse compilado

como binarios de 64 bit, de hecho pue-

den ralentizarse- pero hay otra razón por

la que es interesante utilizar 64 bits bajo

Linux: portabilidad, especialmente el

tamaño de los punteros. En los sistemas

de 32 bits, tal como el PC, el tamaño de

un puntero en C/C++ se define como 32

bits. El tamaño de un valor entero tam-

bién es de 32 bits. Bastante a menudo,

los números enteros se utilizan en lugar

de punteros. Incluso aunque esto no sea

correcto, el compilador de C sólo advier-

te sobre ello y no lo trata como un error.

Sobre plataformas de 64 bit, es distinto.

Los punteros son de 64 bits, mientras los

números enteros todavía son de 32 bits.

La asignación de un puntero de 64 bit a

un número entero de 32 bits cortará los

32 bits más significativos, que pueden

llevarnos a resultados “interesantes”.

La mayor parte de las distribuciones sólo

instalan el entorno de 32-bits para los

programas de usuario por defecto, pero

el entorno de 64 bit a menudo está dispo-

nible como un paquete adicional.

Cuadro 3: Arquitectura 64-bit

Page 48: Linux Magazine - Edición en Castellano, Nº 07

No se si a vosotros os pasa, pero

uno de los temas que más me ha

despertado la imaginación

desde siempre han sido los robots.

Máquinas que incorporan programas

que los hace inteligentes y autocontrola-

dos, es apasionante. El proyecto que

vamos a emprender, desde luego, no

tiene esa complejidad pero es un

comienzo: vamos a crear un programa

que diseñado por nosotros sea capaz de

dirigir un coche radiocontrolado. La ins-

piración vino tras ojear el libro Linux

Toys[1] de la editorial ExtremeTech. El

libro dedica un capítulo entero a expli-

car un proyecto similar a este, pero

como interfaz hardware utiliza una

placa comercial llamada LynX-Port

conectada al puerto serie del ordenador.

Por desgracia el precio del dispositivo

excede en 150 Euros cualquier presu-

puesto. La solución que proponemos en

este primer artículo además de ser

mucho más barata es mucho más diver-

tida y peligrosa (¡cuidado con el cutter y

el soldador!).

Lo Duro del HardwareLa mayoría de nosotros, por lo gene-

ral, somos personas de software: pen-

samos en operaciones booleanas, ins-

tanciaciones de clases y cosas por el

estilo. Por el contrario hay gente con

una formación en electrónica que

piensa en otros términos: diferencias

de potencial e intensidades de

corrientes. Ellos se quedan con la

mitad de la diversión y nosotros nece-

sitaremos cruzar al inhóspito mundo

de los transistores y las soldaduras

para tener la diversión completa. En

una serie de dos artículos vamos a

explicar los pasos que hemos llevado

a cabo para diseñar y construir una

pequeña plaquita que, mediante el

puerto paralelo del ordenador, nos

permitirá controlar el movimiento de

un coche teledirigido.

Antes de empezar la tarea quiero hacer

un disclaimer: Yo soy hasta la médula del

mundo de las operaciones booleanas, así

que he recurrido a mis coleguillas de la

otra acera para que me ayuden con todo

esto. Así que cualquier error o inexacti-

tud se debe exclusivamente a su^H^H mi

ignorancia. ¡Gracias chicos! : )

Presentamos a los ActoresLo primero es conseguir un coche a

radiocontrol con un mando con botones.

Hay que tener cuidado en este punto,

todo el desarrollo descrito aquí supone

que estamos ante un mando que funcio-

ne a base de pulsadores o interruptores y

no por medio de las palancas que encon-

tramos en modelos más caros y avanza-

dos. En las tiendas esas de “Todo a pocos

Euros” encontraremos modelos pre-tune-

ados (a juzgar por la estética) a bajo pre-

Reconozcamos que si nos ven jugar con un coche teledirigido a nuestra edad pasaremos más de un apuro

para explicarnos. ¿Quien nos va a creer si decimos que realmente lo estamos controlando desde scripts

shell? POR ALBERTO PLANAS

Controlando un Coche a Teledirigido desde Linux (I)

EL COCHECITO

PRÁCTICO • Control Remoto

48 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Page 49: Linux Magazine - Edición en Castellano, Nº 07

Control Remoto • PRÁCTICO

último pulsador.

También nos

daremos cuenta

que hay tres

cables que salen

de la placa, uno

va al polo positi-

vo de la pila, otro

al negativo y un

tercero que va a

la base de la ante-

na. Con mucho

cuidado desolda-

remos los extre-

mos del cable

cercanos al conte-

nedor de la pila.

Naturalmente

anotaremos en

un papel donde

estaban conecta-

dos los cables para poder luego recompo-

nerlos a su lugar correcto. En mi caso el

cable rojo estaba soldado al polo positivo

de la pila, y el cable blanco al negativo.

Ahora la placa queda suelta completa-

mente y podremos retirarla del mando.

Con un cutter cortaremos el

plástico del mando para

extraer el contenedor de

la pila (ver Figura 2 y 3)

y eliminaremos los tro-

zos sobrantes hasta

darle una forma ade-

cuada. Necesitamos

ahora soldar otra vez los

conectores de la caja de

pilas a la placa para dejarlo

tal y como se ve en la Figura 4.

Si nos detenemos un momento a

analizar la placa del mando a distancia,

veremos que desde la parte posterior, las

soldaduras de los cuatro o cinco pulsa-

dores tienen una disposición similar a las

mostradas en la Figura 5, dos extremos

del pulsador pertenecen al

circuito impreso y otros

dos no. Si seguimos uno de

los extremos veremos ade-

más que está directamente

conectado al polo negativo

de la pila, sin que medie

ningún otro elemento. Esto

es común a todos los pulsa-

dores, de hecho si nos fija-

mos más veremos que el

mismo circuito une todos

los lados negativos de los

interruptores. Cuando pul-

samos el interruptor cerramos el circuito

y se producirá el movimiento correspon-

diente en el coche. Para comprobar esto

puentearemos de manera temporal los

dos extremos del pulsado con un alam-

bre o con una barrita de metal.

Veremos que la corriente pasará y se

encenderán los leds (en caso de existir) y

se empezará a mover el coche en la

dirección asignada a ese pulsador.

Nuestra misión es, por tanto, construir

algún tipo de mecanismo que sea capaz

de hacer lo mismo que hemos hecho con

el alambre: puentear el interruptor a

nuestra voluntad, o mejor dicho, a la

voluntad del ordenador. ¿Cómo afrontar

este reto? Esa es la pregunta que le hice a

un amigo y su respuesta no pudo se más

desconcertante: transistores polarizados.

Corte y SaturaciónVale, la respuesta era obvia para quien

supiera algo de electrónica. Pero no era

mi caso. Con un poco de paciencia y

cio, ideales para desarmar sin sobresal-

tos.

También necesitaremos ensamblar un

cable paralelo, para ello usaremos un

cable de red normal y corriente y un

conector paralelo de 25 pines. En la

misma tienda donde hemos adquirido el

conector deberemos preguntar por cua-

tro optoacopladores 4N25 y ocho resis-

tencias 4K7-0.25W. El precio de todo esto

no debe exceder los 4 Euros. De todas

maneras yo para practicar pedí un optoa-

coplador y un par de resistencias extras.

Por último buscaremos alguna caja o

recipiente para colocar los componentes

electrónicos una vez ensamblados. Esto

es opcional puesto que se puede usar la

misma caja del mando a distancia del

coche para esto.

El esquema general es simple: creare-

mos un cable paralelo que conectará el

ordenador a una placa con los optoaco-

pladores y las resistencias, ésta, a su vez

quedará conectada a la placa con-

troladora del mando a distan-

cia.

La idea es que

cada vez que emita un pulso desde el

ordenador, pueda conmutar el estado de

los interruptores del mando por medio

de la placa que construiremos.

Abrimos el MandoVamos a empezar a trabajar. Tomaremos

un destornillador y abriremos la tapa del

mando a distancia (ver Figura 1). Lo nor-

mal es encontrar un lugar donde se colo-

ca la antena, otro para colocar la pila de

9V y una placa de color verde con inte-

grados, resistencias y pulsadores. Cada

pulsador corresponde a cada operación

que puede realizar el coche: giro a la

derecha, izquierda, adelante y atrás. En

mi caso hay cinco, ya que se incluye un

botón para correr a mayor velocidad:

Turbo total. Puesto que lo normal es

encontrar solo cuatro, ignoraremos este

Figura 1: El mando a distancia desmontado. Se pueden ver los cinco

interruptores mencionados en el texto.

Figura 2: Vamos a sacar la caja de la pila con ese cutter tan

amarillo.

49Número 07W W W . L I N U X - M A G A Z I N E . E S

Page 50: Linux Magazine - Edición en Castellano, Nº 07

PRÁCTICO • Control Remoto

50 Número 07 W W W . L I N U X - M A G A Z I N E . E S

algo de lectura se puede entender el

funcionamiento del transistor. De todas

maneras solo nos interesa un compor-

tamiento de estos transistores: el que se

denomina paso de corte a saturación.

Para explicar este modo de funciona-

miento nos vamos a remitir a la Figura

6. Un transistor está compuesto por tres

cristales semiconductores, dependien-

do cómo se ordenen estos cristales ten-

dremos un transistor NPN o PNP. Cada

cristal es un terminal del transistor y

01 #include <stdio.h>

02 #include <stdlib.h>

03 #include <unistd.h>

04

05 #include "parapin.h"

06

07 int main()

08 {

09 int pin_sequence[] = { 2, 3,

4, 5, 6, 7, 8, 9, -1};

10 int i;

11 char buf[6];

12

13 if (pin_init_user(LPT1) < 0)

14 exit(0);

15

16 pin_output_mode(LP_DATA_PINS

| LP_SWITCHABLE_PINS);

17

18 /* Nos aseguramos de poner a

0 cada pin */

19 for (i = 0; i < 8; i++)

20

clear_pin(LP_PIN[pin_sequen-

ce[i]]);

21

22 i = -1;

23 while (1) {

24 if (pin_sequence[++i] ==

-1)

25 i = 0;

26 printf("setting pin %d\n",

pin_sequence[i]);

27 set_pin(LP_PIN[pin_sequen-

ce[i]]);

28 printf("Hit return...\n");

29 fgets(buf, 5, stdin);

30 printf("clearing pin

%d\n", pin_sequence[i]);

31

clear_pin(LP_PIN[pin_sequen-

ce[i]]);

32 }

33 }

Listado 1: test.c

recibe un nombre: colec-

tor, base y emisor.

La corriente pasa general-

mente entre el colector y el

emisor siguiendo la direc-

ción de la flecha del emisor.

La corriente se controla a

partir de una intensidad

introducida en la base del

transistor. Si esta intensidad

de la base está dentro de

unos rangos, el transistor

amplificará la corriente

colector-emisor. Si nos sali-

mos de este rango por abajo,

el transistor estará en corte,

y si nos salimos por el límite

superior el transistor estará

saturado. Cuando el transis-

tor está en corte no hay

corriente entre el colector y

el emisor: es como un inte-

rruptor abierto. En este caso

si miramos la Figura 6, la

diferencia de potencial entre

V1 (colector) y el emisor es

de Vcc, puesto que no pasa

corriente (y la diferencia de

potencial entre Vcc y V1 es,

naturalmente, cero).

Si la intensidad de corriente es algo

más alta podremos llegar a saturar el

transistor. En este caso el puente colec-

tor-emisor se comporta como un hilo.

Bueno, hay una caída muy pequeña de

potencial, pero para este

ejemplo vamos a considerar

que el transistor se comporta

como si existiera un cable

que une directamente el

colector y el emisor. En ese

caso la diferencia de poten-

cial entre V1 y tierra sería de

cero, mientras que la dife-

rencia de potencial entre V1

y Vcc es… sí… ¡eso es!:

Vcc. Es, entonces, lo mismo

que un interruptor cerrado.

Para poder controlar, por

tanto, la el tránsito de

corriente entre los extremos

de los pulsadores de nuestra placa de

radiocontrol, necesitaremos poner la

patilla del emisor en la parte del inte-

rruptor que da al polo negativo de la

pila, mientras que V1 tenemos que

ponerla en la parte positiva.

Vale, ya tenemos una parte de la teo-

ría. Mi amigo además me explicó otra

cosa. Vamos a usar un ordenador que

tiene un puerto paralelo, y desde ese

puerto voy a emitir pulsos. Tengo por

otro lado una placa conectada a una pila

de 9V. Dos circuitos con dos fuentes de

alimentación diferentes:

¡peligro! Corremos el riesgo

de, si nos equivocamos al

trabajar con los transisto-

res, introducir 9V en el

puerto paralelo. Eso parece

ser que puede ser malo para

nuestra controladora. La

solución está entonces en

desacoplar los dos circuitos

por medio de un nuevo

invento: el optoacoplador.

Aunque esto ya lo veremos

en profundidad en el

siguiente capítulo.

Echando un CableEl puerto paralelo es, junto con el serie,

uno de los puertos de comunicaciones

más veteranos en la informática. En ori-

gen este puerto era unidireccional (los

pines de salida eran solo de salida y los

de entrada solo de entrada) y estaba des-

tinado a conectar la impresora. Con el

Figura 3: Dos horas después ya tenemos la cajita de la pila.

Figura 4: Soldamos la caja a la placa respetando la polaridad

inicial.

Figura 5: Las cuatro

soldaduras traseras de

un pulsador. Dos de

ellas conectadas al cir-

cuito.

Page 51: Linux Magazine - Edición en Castellano, Nº 07

Control Remoto • PRÁCTICO

51Número 07W W W . L I N U X - M A G A Z I N E . E S

Figura 7). La lógica de

estos terminales es posi-

tiva: cada vez que envíe

un “1” lógico desde el

ordenador estaremos

transmitiendo un poten-

cial alto y cada vez que

enviemos un “0” no

tendremos potencial. La documenta-

ción técnica de este puerto dice que el

potencial que emite debería estar

comprendido entre 2.5V y 5V. Para

comprobarlo he medido con un mul-

tímetro los potenciales de estos ocho

pines y me sale 3.3V por cada uno de

ellos. Es conveniente pedir uno de estos

multímetros (o polímetros) prestados,

puesto que lo usaremos para testear la

corrección del cable que vamos a mon-

tar. Cómo solo vamos a usar estos ocho

terminales de salida de datos podremos

tomar un cable Ethernet (Figura 8) de

esos que sobran para soldarlo al conec-

tor paralelo. Estos cables tienen cuatro

pares de cobre, que dan un total de ocho

cables. Son duros y poco maleables, pero

es lo que teníamos más a

mano. Una vez pasado el

trance y el calor de la sol-

dadura, deberíamos tener

un cable similar al de la

Figura 9.

Para probar nuestro

nuevo cable usaremos la

librería de comunicaciones

parapin que podremos des-

cargar desde [2]. Con esta

librería podremos activar y

desactivar los pines que

deseemos del puerto parale-

lo. La compilación de la

librería es muy sencilla:

tar -xzvf par

pin-1.0.0.tar.gz

cd parapin-1.0.0

./setup-2.6.sh

make

A partir de una versión

modificada de un fichero

de ejemplo de la librería,

vamos a construir un pro-

grama (Listado 1) que pon-

drá a cero los ocho pines

de datos, para luego ir acti-

vando / desactivando cada

uno de ellos en orden

ascendente. Es el momento

de ir comprobando que cada uno de los

cables va recibiendo potencial de manera

ordenada por medio de multíme-

tro. Es ahora la oca-

sión, si no lo

hici-

mos en cuando

soldamos el cable,

de apuntar en un papel la corresponden-

cia pin/color del cable para usarlo más

adelante como referencia.

Y en el Siguiente Número…Muy bien, por este mes nos vamos a

quedar aquí. Tenemos un cable prepara-

do con ocho terminales, hemos extraído

la placa del mando y la hemos soldado a

la caja de la pila de 9V. Solo nos queda

preparar los optoacopladores y disponer-

lo todo en una caja vacía. Hacer tests y

un programa en C (una variación del lis-

tado de este número) que controle cada

dirección del coche. Todo eso lo veremos

ordenadamente en el siguiente número,

aunque ya quedan pocos secretos que

revelar falta cómo rematar el trabajo. �

paso del tiempo

este conector ha

ido evolucionan-

do. En la actuali-

dad es bidireccio-

nal y tiene una

mayor velocidad

en la transferencia

de datos.

El conector que hay en el ordenador es

hembra y el que hemos comprado es

macho de 25 pines. Si nos fijamos en

este veremos que en la parte donde se

espera que soldemos los cables hay una

numeración del 1 al 25. Cada pin tiene

una finalidad, aunque a nosotros sólo

nos interesa los 8 pines de datos. Estos

son los situados entre el 2 y el 9 (ver

[1] Linux Toys: http://www.linuxtoys.net

[2] Librería parapin: http://parapin.

sourceforge.net/

RECURSOS

Figura 6: Transistor

como interruptor.

Figura 7: Esquema simplificado de los

pines de datos del puerto paralelo.

Figura 8: El cable ethernet y el conector paralelo antes de

soldarlo.

Figura 9: Cable Ethernet soldado al conector paralelo.

Alberto Planas es

desarrollador de

aplicaciones bajo

entornos libres

desde hace varios

años. Aficionado a

la tecnología

desde siempre,

alterna sus horas

de sueño con las

horas dedicadas al

estudios de las Redes Bayesianas, pro-

gramación con las QT,

perfeccionamiento de C++, desarrollo

en Java y mil cosas más.

EL

AU

TO

R

Page 52: Linux Magazine - Edición en Castellano, Nº 07

52

El correo anónimo protege la identidad de los remitentes de las posibles escuchas en la red. El protocolo

Mixmaster ofrece a los usuarios una tecnología madura para el envío anónimo y el cliente Mixmaster

basado en texto es un ejemplo de una aplicación libre para el envío anónimo. POR JENS KUBIEZIEL

PRÁCTICO • Email anonimo

52 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Reenvío anónimo de correo con Mixmaster

MENSAJES DESDE NINGÚN SITIO

Cuando Johan Helsingius comenzóun servicio para el envío anóni-mo de correo electrónico en

1993, no podía prever en que clase deproblema se estaba metiendo. Johan esahora famoso por su trabajo pionero, apesar de las reacciones hostiles, o preci-samente debido a ellas.

Al comienzo de los 90, las listas decorreo y los grupos de discusión deUSENET habían dejado la fase en lacual principalmente se concentrabanen temas científicos y relacionadoscon la informática. En USENET tam-bién se dieron numerosas discusionespolíticas y religiosas muy polémicas.Como estas discusiones eran de inte-rés para los servicios secretos y de losjefes, los usuarios buscaban unamanera de expresarse anónimamente.Johan Helsingius desarrolló un softwa-re para despersonalizar mensajes decorreo electrónico y lo instaló en suservidor.

Pronto se conoció la dirección de esteservidor (http://anon.penet.fi/) y todavíase habla de él con reverencia. Para utili-zar el servicio, los usuarios tenían queenviar un mensaje de correo electrónicocon una entrada especial en la cabecerapara la dirección. El servidor sustituía ladirección del remitente por una direc-ción con el formato [[email protected]] (donde XXXX era una combina-ción de números) y remitía el correoelectrónico a la dirección especificada enla línea adicional de la cabecera.

El servicio era fácil de utilizar y atrajoa muchos usuarios. Antes de 1996, elprograma manejaba alrededor 10.000mensajes al día. Éste era el año que elmovimiento de la Cienciología demandóal operador, exigiendo la publicación delas direcciones de correo electrónico.Una corte finlandesa decidió que losmensajes de correo electrónico no esta-ban amparados por la ley de secretos delcorreo postal facilitando así la escucha

secreta y la identificación de los usua-rios. Esto, a su vez, impulsó aHelsingius, a desconectar el servidor [1].

Cypherpunk y MixmasterPara cuando Johan Helsingius apagosu servidor de correo anónimo, eldesarrollo progresaba a la velocidaddel rayo. Los Cypherpunks, grupo quese centró en la protección de la privaci-dad y el uso del cifrado, desarrollaronun cierto número de modelos de servi-dores anónimos (remailers) que nodependían de un servidor central. Sutrabajo estaba basado en un artículopublicado en 1981 por David Chaum[2], describiendo redes mezcladorasque habían sido implementadas con laidea de proteger el anonimato de laspartes durante el intercambio delcorreo electrónico.

El principio es comparable a enviaruna carta en varios sobres. Si Ralf Pennquería enviar una carta anónima, inicial-

Page 53: Linux Magazine - Edición en Castellano, Nº 07

entrantes y salientes y de esta manerasacar conclusiones sobre la identidad delremitente y el destinatario. Un atacantetambién podía interceptar un mensaje yreinsertarlo reiteradamente en la cadenade servidores anónimos.

Debido a que cada mensaje se manejaexactamente de la misma manera, tomaexactamente la misma ruta. Esta debili-dad fue identificada por Lance Cottrellen 1.995 en “Mixmaster & RemailerAttacks” [3]; también propuso algunoscambios, los cuales condujeron a remai-

ler Tipo II, el Mixmaster.

Como Funciona MixmasterMixmaster no remite inmediatamente losmensajes entrantes. En vez de eso, espe-ra hasta que se han agregado bastantesmensajes a la cola. Cuando el destinata-rio de mensajes está lleno, el servidorenvía los mensajes a la siguiente esta-ción en la cadena en un orden aleatorio.Para que sea imposible que un potencialinvestigador identifique los mensajes por

su tamaño, el servidor anónimo tambiénhace que todos los mensajes tengan untamaño uniforme. Si un mensaje esdemasiado pequeño, Mixmaster agregacaracteres de relleno al azar; si un men-saje es demasiado grande, Mixmasterdivide el mensaje en bloques del mismotamaño. Esta técnica hace imposible quelos atacantes asocien los paquetesentrantes con los paquetes salientes.

Además, a cada paquete del mensajese le asigna un ID. Mixmaster comprue-ba si el ID del paquete ya se ha registra-

mente dirigía la carta al destinatario,pero en vez de enviar la carta directa-mente, agrega un número de estacionesintermedias. Pone la carta en otro sobrey escribe la dirección de una de estasestaciones en el sobre. La carta consigueun sobre nuevo para cada uno de estasestaciones.

Entonces se envía la carta a la primeradirección intermedia, donde se abre elsobre externo. Se destruye el sobre y lacarta se envía a la siguiente direccióndel siguiente sobre hasta que, finalmen-te, la estación intermedia envía la cartaal destinatario real. El destinatario sola-mente puede rastrear la carta hasta laultima estación intermedia, ya que sehan destruido el resto de los sobres. Coneste proceso se garantiza el anonimatodel remitente.

Primera Generación deServidores AnónimosEl primer modelo de servidor anónimoque se basó en este principio fueCypherpunk Remailer, también conoci-do como remailer Tipo I. Al diferenciadel modelo de Helsingius, se involucranun cierto número de servidores, que tra-bajan independientemente unos deotros. Si un servidor no es accesible, losusuario pueden recurrir a cualquier otro.Como los servidores están situados enpaíses distintos, con diferentes sistemaslegales, los agresores lo tendrán difícilpara intentar lo que sea contra este tipode servidores.

Según se ha descrito anteriormente, seutilizan técnicas criptográficas paraenvolver el mensaje. Este proceso impli-ca que el remitente cifre el mensaje conla llave pública de cada servidor anóni-mo de la cadena. Los usuarios puedensolicitar la llave vía correo electrónico(Listado 1) o vía el sitio web del servi-dor. Cada servidor anónimo en la cade-na solamente puede descifrar la partedel mensaje previsto para su uso. Laparte descifrada contiene la dirección ala cual el servidor tiene que remitir elmensaje.

La organización del servidor anónimoelimina algunas de las debilidades delservicio de Helsingius, pero todavía que-dan algunos problemas. Por ejemplo,cada servidor anónimo remite los co-rreos electrónicos tan pronto como lle-gan. Esto permite que un atacantededuzca relaciones entre los mensajes

Email anonimo • PRÁCTICO

53Número 07W W W . L I N U X - M A G A Z I N E . E S 53

1. Se compone un mensaje y se añade la

cabecera. El mensaje se direcciona al pri-

mer destinatario. Se insertan dos lineas

al comienzo del mensaje:

::

Anon-To: [email protected]

Estas lineas proporcionan al ultimo ser-

vidor anónimo la información que nece-

sita para enviar el mensaje a su destina-

tario final.

2. Se cifra el mensaje y se añade la cabe-

cera cifrada. Ahora se cifra el mensaje

con la clave pública del servidor anóni-

mo. Se inserta otra linea delante del

texto cifrado: Encrypted: PGP. Esta linea

indica al servidor anónimo que debe

descifrar las siguientes lineas.

01 ::

02 Encypted: PGP

03 03

04 -----BEGIN PGP MESSAGE-----

05 V e r s i o n : G n u P G v 1 . 2 . 5

(GNU/Linux)

06 06

07

hQEOA1gu3H8UQS6IEAP/UgB5ZbyRS5

Kkmi/mD4Vi4PHBg6XOOoS8BL/t6HGa

CkMc

08

BHAB4YCnQGz1IEzxhrMnYxeFl0Ca9B

fsGTel1DjnHeLWypdW4XuPNnCiNA8f

wdnu

09

C58rmBo2B8XTjcc1eGjD+SayRn/F3e

Gc3rdGw3EkwWpRxwgcXU/SvHwE6vnO

nTwE

10

+9fWwweS+WUFRCBNPqaUZkXqZ6jBpV

e5fRAUZDRhqOhUcEA0nvRHn9D7QMJu

qV9R

11

7CPEAb/+Dd2+hxqqezeXpTHOqJKiUi

E8SqGnBBAw5uOpMffuGG120bLPEDfu

M7yF

12

xaXWu6TQ94GTV/+2Inw9LufUPNsaTf

rWWRxFNphWvTh9a+MRIIKb7abSCee4

qcwP

13 vjJsDM2f

14 =7HnR

15 -----END PGP MESSAGE-----

3. Se repiten estos pasos por cada uno

de los servidores anónimos. Si el usua-

rio quiere añadir otro servidor anónimo,

se añade una nueva linea Anon-To: en el

comienzo del mensaje. Después se repi-

te el paso número 2. Este paso se repeti-

rá para cada uno de los servidores de la

cadena.

4. Enviar el mensaje. El mensaje se envía

al primer servidor anónimo de la cade-

na, el cual reenviará la información indi-

cada más arriba.

Cuadro 1: Correo en Servidores Anónimos Cypherpunk

Figura 1: Pantalla de inicio del cliente

Mixmaster.

Page 54: Linux Magazine - Edición en Castellano, Nº 07

Además, los servidores anónimos deMixmaster utilizan el cifrado simétrico,que acelera los proceso con los mensa-jes. De hecho, Mixmaster tiene un mon-tón de ventajas sobre el servidor anóni-mo de Cypherpunk.

Aunque una descripción detallada decómo funciona todo esto está lejos delalcance de este artículo, los lectores quelo deseen pueden comprobar el borradordel RFC para conocer el protocolo deMixmaster [4].

do y si es así, descarta el mensaje. Aldescartar los mensajes con paquetesregistrados se protege al servidor contralos ataques por reinserción. Estos pasoseliminan algunas de las debilidades delservidor anónimo de Cypherpunk.

PRÁCTICO • Email anonimo

54 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 From: Jens Kubieziel

<[email protected]>

02 To: Dizum Remailer

<[email protected]>

03 Subject: remailer-key

Respuesta de Remailes:

01 From: Nomen Nescio

<[email protected]>

02 To: "Jens Kubieziel"

<[email protected]>

03 Subject: Remailer key for

dizum

04

05 $remailer{"dizum"} =

"<[email protected]> cpunk

mix pgp pgponly repgp remix

latent hash cut test ek ekx

esub inflt50 rhop20 reord post

klen64";

06

07 Here is the PGP key:

08

09 Type Bits/KeyID Date User ID

10 pub 1024R/31234B37 2000-04-24

Nomen Nescio

11 <[email protected]>

12

13 -----BEGIN PGP PUBLIC KEY

BLOCK-----

14 Version: Mixmaster 2.9.0

(OpenPGP module)

15

16

mQCNAzkEMTMAAAEEAOa7vR4GZCRUuk

aoBqlGZbru6c6UlAgLOs8Od2I+UF1K

TY5Z

17

XKClKK5UblHDiFgzJk+0NxVR3ePgJ5

6MJeK2iGPVZ/i8thC1gR6btrrSONzf

K7rr

18

bW2aKlDfihyjz6emPYkHqPj0hAwxGQ

iTMkEPF5jmEdWeZN4kph8q6DIxI0s3

AAID

19

tCFOb21lbiBOZXNjaW8gPHJlbWFpbG

VyQGRpenVtLmNvbT6JAJUDBRA5BDEz

Hyro

20

MjEjSzcBAWqABAC+6voEDspSDQUn0R

mLjy1zPsysx7Zdc7J/c40l6rGS9n1t

ZQiw

21

CTpILinXiCLP3I9Pu9T4kl1gHVYyIu

2pqeNOJL0Wz1w6HkwQjGsGdxtFDyFC

mfxe

22

c0htDM5WQn1DqtIaG98mNcStkY2B5e

7VNP2aVd66oTeDPLYD4VCsrIT0Dw==

23 =RJCD

24 -----END PGP PUBLIC KEY

BLOCK-----

25

26 Type Bits/KeyID Date User ID

27 pub 1024D/B1685FE7 2000-04-24

Nomen

Nescio<[email protected]>

28 sub 1024g/B2547D80 2000-04-24

29

30 -----BEGIN PGP PUBLIC KEY

BLOCK-----

31 Version: Mixmaster 2.9.0

(OpenPGP module)

32

33

mQGiBDkEMTMRBADqwatBmgC/yuOlyq

rzFL1toAzDrSiH06eZlo8eCRj+Uqw6

lSu0

34

RxxhSZaBUIsuqogRHFiuxU+RqUia24

1vEjSN0x7ZV+LipTZc282Vb0PuDv7f

L2Ll

35

Ez8QEJMz+zpMjICRFVNgHGRvhHUGu1

8i9BTmzigpyuMpMwwlB2HvTBO4CQCg

wNPp

36

B/I45a4PZ2+zmZyVQUuAh+UD/je6Od

uoTwwq6176bUfcvCtVH9DP4DwoCgrV

wd3c

37

r9KoR9hO7TAGL5Ah7eJ1GvndRH7KPB

fuE6h/kMCohNgKGluPn4je6vJ6N0J/

O3av

38

+jJ1mHN2TImOp0+VFXFPm1A7zqA/MW

gOG7DWggfmguZ9E6TuAbfOIvy/Ksqn

jt70

39

JyelA/9YyKH56juAGYHdHbPQR/NAED

3XLUuc8UzXNuL5VNAD40SfbxVpNwJJ

PYM3

40

fA2RY0IbsMefKvotlXRkKZHzFbj0Kc

nkvF0d0WhXzCgTEdwYwhaQQJzWznvu

Vzqm

41

18GZoomfsbsgfYHwfD0CCTSqVj3GlM

TXHO6ol7QOw69HGlNZYrQhTm9tZW4g

TmVz

42

Y2lvIDxyZW1haWxlckBkaXp1bS5jb2

0+iQBNBBARAgANBQI5BDEzAwsDAgIe

AQAK

43

CRBos3tosWhf52NaAKCjS4nyqFvmq8

5a5HwGPHhTBhGPJwCdHrYGFeIVOh8O

JJUR

44

vQiaIRNRG/W5AQ0EOQQxMxAEAL5wXB

X5gxZE4MDaUDE9TWRwo6VnE6dUvu6I

a45O

45

hyAVDp5AoquHpJv7PvhA/nLiDFJspm

2eDdLglaUGcDIt6MJEbXV/I9v/qQ7q

njh/

46

Cm84gsss+uKTWZjga2NRZ/Y4JGePIm

LWBlmapwPoHBhJEXsdp1zl/0DiDGmH

dV12

47

xPHfAAMFBACB12J/HSJznAwpGsIB03

NrBz2Iw7NqrhepSfcExGiWrGMJnAjA

d98I

48

C84j5AYwMhGWMPmzcNqdcqWEI9Z2cW

d0nXndt8GJAUCpfEb5T2snTnoqaiIB

4nYq

49

vyG1HwBM7OMXw9k13smo+5PgE3EHyQ

2pvIuAMoOZz6o/zq6d0xH6XokAPwMF

GDkE

50

MTNos3tosWhf5xECVY0AoJcXnCHayC

kFAE17SXU33cc3R1qnAKCpVZkKbuQS

phYg

51 M4wRXciYWpAoyw==

52 =Vkzl

53 -----END PGP PUBLIC KEY

BLOCK-----

Listado 1: Recuperación de claves de un Servidor Anónimo

Page 55: Linux Magazine - Edición en Castellano, Nº 07

Operaciones DiariasMixmaster también es el nombre de unpaquete software que ha sido desarrolla-do por programadores voluntarios comoun proyecto de fuente abierta. El desa-rrollo está hospedado en Sourceforge [5].Los usuarios pueden descargar el códigofuente desde Sourceforge y construir elprograma desde las fuentes. AdemásDebian ha precompilado los binarios delcliente Mixmaster para sus usuarios [6].

Después de instalar el software, losusuarios deben descargar las clavespúblicas y las estadísticas de disponibili-dad para los servidores anónimos.Muchos operadores de un servidor anó-nimo publican estos datos en sus sitiosweb [7]. El paquete Mixmaster deDebian incluye un guión de Perl llamadomixmaster-update. El guión descargaautomáticamente los archivos necesa-rios y está diseñado para trabajar comouna tarea cron o como parte de delguión IP-up. Después de descargar losarchivos y de almacenarlos en/var/lib/mixmaster/stats/, ya puedeteclear mixmaster y arrancar el progra-ma (véase el Cuadro 1).

Dentro del programa, los usuarios pue-den componer, leer, y enviar mensajes.Por ejemplo, si se necesita enviar unmensaje de correo electrónico,se le pide al usuario querellene los camposremitente yasuntodel

Email anonimo •

mensaje cuando se pulsa la tecla [M].Pulsar [E] en el menú de enviar permitecomponer el mensaje. Se vuelve al menútras terminar el mensaje. Por omisión,el programa selecciona automática-mente una cadena de cuatro servido-res anónimos, aunque los usuariospueden teclear [C] para definiruna cadena de servidores anónimos(Cuadro 2).

El Cuadro 2 muestra servidores anóni-mos y sus valores de fiabilidad. Estaestadística es solamente una instantáneay se puede esperar una cierta desviación,así que estos valores se deben utilizarsolamente como un indicador aproxima-do. Después de seleccionar una cadena,se puede enviar el mensaje o el conjuntode mensajes presionando [M] y despuéspasar a componer otro mensaje si fuesenecesario. Cuando se han acumuladobastantes mensajes, o si un usuarioemite un comando a tal efecto, el progra-ma envía los mensajes a las otras esta-ciones en la cadena.

En definitiva, Mixmaster es muy fácilde usar y tiene un interfaz de usuarioauto-explicativo. Los recién llegados nodeben tener ningún problema para con-seguir acostumbrarse a usar el softwarey a enviar mensajes anónimos siempreque necesiten hacerlo.

Pros y Contras del CorreoAnónimoEn una sociedad plural, la comunica-ción anónima tiene connotaciones sór-didas. La gente tiende a pensar en acu-saciones, amenazas de bombas, correobasura o documentos ilegales. Sinembargo, los servidores de correo anó-nimos solamente cumplen con un requi-sito para la seguridad de la infraestruc-tura de TI, que es, la que oculta elhecho de que la comunicación estáteniendo lugar. Hay muchas razoneslegitimas para querer ocultar la comuni-cación a la opinión pública. Por ejem-plo, un repentino incremento del volu-men de correo electrónico entre dos

compañías puede dar pistas sobreque las compañías estén conside-

rando una posible asociación,aunque el contenido de los

mensajes esté cifrado.Miembros de grupos radica-

les, defensores de reformasen países autoritarios o personas

con enfermedades graves estigmatiza-

das porla sociedad,también desearánproteger su anonimato.

Por otra parte, no hay que negarel potencial que tiene el envío de correoanónimo para hacer cosas inadecuadas.Los grupos de presión y las autoridadesde correo electrónico se apresuran a pre-cisar el posible abuso y la controversiaresultante ha provocado llamamientospara prohibir los servicios de anonimato.Johan Helsingius, el hombre detrás delremailer, afirma que nunca ha utilizadoel servicio que inventó. Sin embargo,para él era importante desarrollar unatecnología que diera soporte al anonima-to y que permitiera a los usuarios ejerci-tar su derecho a la libertad de opinión. Yeste acceso al correo electrónico anóni-mo aun está disponible en los servidoresanónimos alrededor del mundo. �

55Número 07W W W . L I N U X - M A G A Z I N E . E S

[1] Nota de prensa sobre el cierre de

anon.penet.fi: http://www.fitug.de/

news/1997/penet.html

[2] David L. Chaum, “Untraceable

Electronic Mail, Return addresses and

Digital Pseudonyms”: http://world.std.

com/~franl/crypto/chaum-acm-1981.

html

[3] Lance Cottrell, “Mixmaster &

Remailer Attacks”: http://riot.eu.org/

anon/doc/remailer-essay.html

[4] Borrador del RFC para el protocolo de

Mixmaster, Version 2: http://www.ietf.

org/internet-drafts/

draft-sassaman-mixmaster-03.txt

[5] Página principal del proyecto

Mixmaster: http://mixmaster.

sourceforge.net

[6] Información en el paquete Debian

Mixmaster: http://packages.qa.debian.

org/m/mixmaster.html

[7] Estadísticas para el servidor anónimo

Noreply.org: http://www.noreply.org/

echolot/

RECURSOS

Figura 2: El cliente Mixmaster muestra un

resumen de servidores anónimos disponi-

bles.

Page 56: Linux Magazine - Edición en Castellano, Nº 07

DESARROLLO • Perl

56 Número 07 W W W . L I N U X - M A G A Z I N E . E S

va. Y perl tiene un depurador que localiza

rápidamente los errores aplicando puntos

de ruptura, acciones y puntos de vigilan-

cia (watchpoints).

Ejecución de PruebasEl programa de ejemplo wsrv (descarga-

ble desde [1]), nos dice que tipo de ser-

vidor Web está oculto bajo una URL

específica. Por ejemplo, llamando a wsrv

http://sun.com veremos que Sun utiliza

su propia tecnología: Sun Java System

Web Server 6.1.

Si queremos ejecutar el guión dentro

del depurador, solamente debemos ini-

ciar el modo de linea de ordenes con

perl -d y después añadir la ruta al guión

y sus argumentos. En este caso, debere-

mos teclear: perl -d wsrv http://micro-

soft.com. El depurador arrancará y pre-

guntará al usuario por las ordenes des-

pués de mostrar la primera “linea” de

código (que en este ejemplo consiste en

2 lineas de texto):

Loading DB routines from U

perl5db.pl version 1.27

Editor support available.

Enter h or `h h' for help, or U

`man perldebug' for more help.

main::(wsrv:8): my $url = shift

main::(wsrv:9): U

or die "usage $0 url";

DB<1>

ALinus Torvalds no le gustan los

depuradores. En su opinión, su

uso equivale a mezclar a tontas y

a locas un montón de código para des-

pués intentar dotarlo de algún tipo de

sentido atizándolo con el depurador.

Existen alternativas a los depuradores.

Por ejemplo, la cuidadosa aplicación del

registro de cambios (logging) elimina en

muchos casos la necesidad de depurar.

Como se puede ver en [2], Log::Log4perl

le ayudará a integrar un nivel de depura-

ción apropiado dentro de una aplicación

y realizar actividades de depurado remo-

to.

Sin embargo, hay ocasiones donde un

programador no tiene ninguna alternati-

Trabajando con el depurador de Perl

DOCTOR BISHO

Algunos desarrolladores condenan el

uso de depuradores, pero en muchos

casos, un depurador es la ultima

esperanza del programador. En nues-

tra entrega mensual de Perl, echamos

un vistazo al depurador integrado en

Perl. POR MICHAEL SCHILLI

Page 57: Linux Magazine - Edición en Castellano, Nº 07

Perl • DESARROLLO

57Número 07W W W . L I N U X - M A G A Z I N E . E S

depurador que continúe ejecutando el

código hasta donde termina la función

actual y que vuelva al programa principal.

Entonces se para automáticamente:

list context return U

from

LWP::Simple::head: 0

‘text/html’

1 16144 2 1107018115

3 1107028115 4

‘Microsoft-IIS/6.0’

main::(wsrv:9):

print U

“Server:$fieldsU

[3 ] \n”;

El depurador es tan atento que nos da

inmediatamente los valores de retorno de la

función head() antes de mostrar la siguien-

te linea ejecutable. Si estamos interesados

en el valor del elemento de la estructura

$field[4], podemos usar la orden p (de

print) del depurador para mostrar el valor

antes de la instrucción print() de que el

programa principal lo haga. Tecleando p

$field[4] en el prompt nos dará Microsoft-

IIS/6.0, mostrando que al parecer Microsoft

también está usando su propia tecnología.

Para mostrar el contenido completo de

la estructura @field, debemos usar p

@field, pero esto puede que no formatee

la salida de una manera fácil de utilizar.

Afortunadamente, la función x del depu-

rador maneja las estructuras más comple-

jas sin esfuerzo:

DB<2> x @fields

0 'text/html'

1 16144

2 1107021419

3 1107031419

4 'Microsoft-U

IIS/6.0

Se aplica lo mismo a los hashes

que, a efectos de visualización,

incluso los podemos definir direc-

tamente dentro del depurador:

DB<3> %h U

=(donald=> 'duck',

mickey =>'mouse')

DB<4> x %h

0 'donald'

1 'duck'

2 'mickey'

3 'mouse'

Si quiere que muestre las parejas valor-

clave en vez del estilo estructura, simple-

mente pase una referencia al hash en x:

DB<5> x \%h

0 HASH(0x837a5f8)

'donald' => 'duck'

'mickey' => 'mouse'

Vemos que el número en el prompt se

incrementa. También aparece en el histo-

rial, que podemos recuperar tecleando H:

DB<6> H

5: x \%h

4: x %h

3: %h=(donald=>'duck',U

mickey=>'mouse')

2: x @fields

1: p $fields[4]

Para volver a imprimir los elementos de

$field, todo lo que tenemos que hacer es

teclear un signo de admiración seguido

del número en la entrada del historial !1.

Esto es suficiente por ahora, pasemos a

tareas más complicadas.

Un problema realImaginemos que un programador acaba

de terminar un módulo llamado Foo::Bar

y quiere preparar el módulo para publi-

carlo en CPAN. El paquete incluye un

archivo llamado Makefile.PL (ver [1]) y

un archivo con el módulo lib/Foo/Bar.pm

el cuál también puede incluir alguna

documentación (Listado 2). Invocando

perl Makefile.PL obtenemos este mensaje

un tanto extraño:

Pulsando n (de next) en el prompt

se ejecuta silenciosamente la pri-

mera sentencia, extrayendo la

URL de la estructura del argumen-

to @ARGV y dejándola en $url.

Desde n solamente se ejecutara

una única sentencia, luego el

depurador se parará antes de eje-

cutar la siguiente linea:

DB<1> n

main::(wsrv:10): U

my (@fields) = head($url)

main::(wsrv:11): U

or die "Fetch failed";

DB<1>

La siguiente instrucción ejecutable

se compone de las líneas 10 y 11

de wsrv. En vez de ejecutar la línea com-

pletamente con n, vamos utilizar s (por

step) para echar una ojeada más de cerca

a lo qué está ocurriendo dentro del códi-

go. Como podemos ver, el depurador pri-

mero se zambulle de cabeza en la función

principal dentro del módulo LWP::Simple

al que se ha llamado en la línea 10:

LWP::Simple::headU

(.../LWP/Simple.pm:70):

70: my($url)=@_;

70==>my($url) = @_;

La orden l (de list) muestra algunas de las

siguientes lineas:

71: _init_ua()unless$ua;

73: my$request= U

HTTP::Request->U

new(HEAD=>$url);

74: my$responseU

=$ua->request($request);

[...]

Para moverse hacia abajo, sin ejecutar

realmente el código, simplemente pulsa-

mos otra vez l. La alternativa podría ser

especificar una ventana como l 70 + 20

(20 lineas comenzando en la 70) o l

70-100 (de la linea 70 hasta la 100). La

siguiente linea ejecutable se indica

mediante ==>.

Volviendo al comienzoDespués de desplazarse hacia abajo con l,

pulsando un punto, el listado regresa al

punto donde el guión continuará.

Tecleando r (de return) le decimos al

Figura 1: El GUI DDD integra el depurador de Perl.

Page 58: Linux Magazine - Edición en Castellano, Nº 07

WARNING: Setting ABSTRACT U

via file 'lib/Foo/Bar.pm'

failed at ExtUtils/U

MakeMaker.pmline 606

Algo confuso ¿Verdad? El programa

Makefile.PL utiliza el módulo

ExtUtils::MakeMaker, un venerable trozo

de brujería programado en Perl, que no es

precisamente fácil de entender. Otra vez,

un depurador nos permite echar un vista-

zo si tecleamos perl -d Makefile.PL.

Puesto que la advertencia señala a la linea

606 del módulo ExtUtils::MakeMaker

como origen del error necesitamos echar

un vistazo a esta ofensiva linea.

La orden file, f ExtUtils/ MakeMaker.pm

tomará el archivo. Después necesitamos

establecer un punto de ruptura en la linea

606 (b 606) para que el depurador se

detenga allí más adelante. La orden c (de

continue) le dice al depurador que ejecute

el programa a partir del próximo punto de

ruptura:

DB<2> c

606: push U

@{$self->{RESULT}},

$self->nicetextU

($self->$method(%a));

En vez de configurar el punto de ruptura

con b 606 y teclear c para ir allí, c 606

hará que el programa se ejecute y lo para-

rá en la linea 606. Pero teniendo un punto

de ruptura permanente podremos volver

más tarde fácilmente.

La orden push mostrada en la siguien-

te línea del código de fuente anterior

aparece para añadir el resultado de una

llamada a una estructura desde un méto-

do. Puede ser que sea interesante descu-

brir a que método llama $method Para

averiguar eso, usamos p $method, que

imprime post_initialize; que

realmente no nos da un

conocimiento más profun-

do.

El depurador Perl ejecuta

la linea actual cuando tecle-

amos n; pero no reacciona.

n ejecuta la linea pero no

obtenemos la advertencia

que esperábamos. Parece

como si MakeMaker ejecu-

tase la linea varias veces y

emitiera el error en la enési-

ma iteración.

Antes tecleamos c (conti-

nue) para movernos a la

siguiente iteración, (parán-

donos otra vez en el punto

de ruptura de la linea 606)

DB<3> a U

606 printU

("$method\n");)

Utilizando a, el número de la

linea y algo de código Perl, el

depurador nos sacara ahora

el contenido de $method

cada vez que se ejecute la

linea 606, incluso si se está

ejecutando a toda velocidad.

Le hacemos seguir con la

orden continue:

DB<4> c

606:push @

{$self->{RESULT}},

$self->nicetextU

($self->$method( %a ));

platform_constants

Como hemos fijado un punto de ruptura

en la línea 606, el depurador para allí en

la siguiente vuelta. Debido al punto de

acción, imprime el valor actual de

$method, una función llamada

platform_constants, desconocida hasta

ahora.

Búsqueda de AdvertenciasPero todavía no hay rastro de la adverten-

cia. Suprimamos el punto de ruptura en la

línea 606 tecleando B 60, y pidiéndole al

depurador que continúe el programa

tecleando c:

DB<4> B 606 DB<5> c […] static-

make test ppd WARNING: Setting ABS-

TRACT ßß via file ‘lib/somehowßß /any-

way.pm’ failed

Después de varias tandas de resultados,

se demuestra que el método ppd provoca

que al fin aparezca la advertencia.

Desafortunadamente, la ultima acción fue

más lejos de lo que queremos, pero tran-

quilos, tecleando R permitirá que reco-

mencemos el programa desde el princi-

pio. Ahora podemos fijar un nuevo punto

de ruptura para ExtUtils/MakeMaker.pm,

línea 606, pero esta vez añadimos una

condición:

DB<5> f ExtUtils/MakeMaker.pm

DB<6> b 606 $method eq "ppd"

DB<7> c

El depurador no parará en el punto de

ruptura en la línea 606 a menos que la

variable $method se establezca en “ppd”.

El programa se lanza, se para y el depura-

dor nos muestra otra vez el código de la

línea 606. La orden p $method confirma

que realmente ha ocurrido la condición

que acabamos de especificar.

Ahora podemos utilizar la orden m

para descubrir que métodos de los refe-

DESARROLLO • Perl

58 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 =head1 NAME

02

03 Foo::Bar - Blah blah blah

04

05 =head1 SYNOPSIS

06

07 useFoo::Bar;

Listado 2: Módulo de ejemplo

Orden Significa

Controlar el flujo del programa

n Ejecuta la siguiente linea y para

s Avanza a la siguiente linea, para en la

subrutina

r Finaliza la función actual, regresa y para

R Vuelve al comienzo y vuelve a ejecutar

Mostrando variables

p Valor de la salida

x Volcado (x \%hash)

Navegando por la fuente

l Desplaza hacia adelante

- Desplaza hacia atrás

v Muestra el código circundante a la linea

actual

. Vuelve a la linea actual

f Cambia a otro archivo fuente

Navegación dinámica

c Linea Ejecuta el código de esta linea y des

pués se para

c Función Ejecuta el código de función y después

se para en la función

b Linea Establece un punto de ruptura en la

linea

b Función Establece un punto de ruptura en la fun

ción

b Linea/Func Punto de ruptura con condición

condición

a Linea/Func Punto de acción en linea/función

Acción

w Linea/Func Punto de vigilancia en la variable linea/

código función

< Orden Establece el pre-prompt

L Muestra los puntos de ruptura, los pun

tos de vigilancia y acciones

B/A/W Borra, los puntos de vigilancia y accio

nes

Tabla 1:Ordenes del depurador

Page 59: Linux Magazine - Edición en Castellano, Nº 07

renciados en la línea 606 son capaces de

llamar a $self:

DB<8> m $self

[...]

via MM -> ExtUtils::MM -> U

ExtUtils::MM_Unix: U

post_initialize U

via MM-> ExtUtils::MM U

->ExtUtils::MM_Unix: postamble

viaMM -> ExtUtils::MM->U

ExtUtils::MM_Unix:ppd

El método ppd se define en el módulo

Uti l s : :MM_Unix . Para descubr i r

es te error, necesitamos que el pro-

grama continúe con la orden c, pero

que se pare cuando se active

ExtUtils::MM_Unix::ppd:

DB<9> c ExtUtils::MM_Unix::ppd

ExtUtils::MM_Unix::ppdßß (ExtUtils/

MM_Unix.pm:U3322): 3322: my($self) =

@_;

El depurador está ahora en la primera

linea del método ppd, dentro del módu-

lo ExtUtils::MM_Unix. Tras pulsar l para

echar un vistazo alrededor, descubri-

mos que ppd llama al método

parse_abstract:

DB<10> l

3322==> my($self) = @_;

3323: if ($self->U

{ABSTRACT_FROM}){

3324: $self->{ABSTRACT}U

= $self->parse_abstract($self->U

{ABSTRACT_FROM})or

Con c parse_abstract indicamos que conti-

núe y que se pare en la primera linea de

parse_abstract:

DB<11> c parse_abstract

ExtUtils::MM_Unix::U

parse_abstract(ExtUtilsU

/MM_Unix.pm:3045):

3045: my($self,$pa

sefile) = @_;

Con l + 20 mostramos las siguientes 20

lineas y la siguiente expresión regular que

Makefile.PL se utiliza para coger el resu-

men del módulo en la distribución:

057:nextunless/^($packages\s-\s)(.*)/;.

Pulsar w nos permite configurar un punto

de vigilancia para la variable $package

para parar el programa después de pulsar

c en el momento que el valor de $packa-

ges cambie:

DB<2> w $package

DB<3> c

Watchpoint 0: pack

ge changed:

old value: ''

newvalue: 'Foo-Bar'

El método parse_abstract

busca la expresión regular

/^Foo::Bar\s-\s)(.*)/. El

nombre del módulo nece-

sita estar en la línea

seguido de un solo espa-

cio y un guión. Puesto

que la línea 3 en el listado

2 está identada, con el nombre siguiendo

la identación, la extracción falla.

Interfaz Gráfico de UsuarioSi se prefiere el estilo GUI de apuntar y

pulsar, se puede enlazar el depurador

Data Display Debugger ddd con el motor

de Perl. Encontraramos ddd en las prin-

cipales distribuciones de Linux. Lo

siguiente llama a wsrv en ddd para exa-

minar la página de inicio de Microsoft:

ddd -perl wsrv U

http://microsoft.com

La Figura 1 muestra la GUI en acción. Se

facilita la fijación de puntos de ruptura y

la vigilancia de expresiones (tales como

la cadena $url en la Figura 1). Se puede

realizar algo parecido a la orden de

pre-prompt del depurador de Perl, Pero

algunas personas prefieren que se mues-

tren correctamente formateadas ajustán-

dose al formato de la GUI. Como alterna-

tivas, existe un IDE comercial del tipo

GUI, Komodo y uno libre Ptkdb, que

están disponibles en CPAN.

perl -MCPAN -e U

'install(Tk,Devel::ptkdb)'

perl -d:ptkdb wsrv U

http://microsoft.com

La Figura 2 muestra Ptkdb iterando con el

método de la petición en el paquete

LWP::UserAgent. La columna derecha

muestra los atributos del objeto

LWP::UserAgent, que se pasó al método.

TrazasPor ultimo, simplemente un pequeño

truco para mostrar como se consigue eje-

cutar cada línea de código por un guión.

La variable de entorno de PERLDB_OPTS

controla el trazado del depurador, con

solo agregarlo a la línea de ordenes antes

de llamar al depurador:

PERLDB_OPTS="NonStop=1U

AutoTrace=1 frame=2 "U

perl -d Sprogram

La opción AutoTrace cambia el depura-

dor al modo de trazado, donde muestra

cada línea del código fuente antes de eje-

cutarla. La opción NonStop le dice al

depurador que no pare al principio o al

final para la entrada del usuario.

frame=2 añade mensajes de entrada y

de salida o subrutinas de entrada y de

salida. Si también necesita información

sobre cualquier parámetro pasado y los

valores devueltos por las subrutinas,

necesita especificar frame=4. Por ulti-

mo, la opción Perl -S busca la $PATH

completa para el guión, no solamente el

directorio actual.

Cada nueva distribución de Perl viene

con una corta introducción al arte de la

eliminación de errores, con perldoc perl-

debtut se muestra la página del manual.

En perldebug encontrará documentación

más detallada y si realmente desea obte-

ner los pormenores de la depuración,

examine perldebguts. �

Perl • DESARROLLO

59Número 07W W W . L I N U X - M A G A Z I N E . E S

[1] Listados para este articulo: http://

www.linux-magazine.es/Magazine/

Downloads/07/Perl

[2] Michael Schilli, “Retire your

Debugger,log smartly with

Log::Log4perl”: http://www.perl.com/

pub/a/2002/09/11/log4perl.html

[3] Peter Scott y Ed Wright: “Perl

Debugged”, Addison-Wesley 2001

RECURSOS

Figura 2: El depurador gráfico Ptkdb está basado en Perl/Tk

y es fácil de instalar desde CPAN.

Page 60: Linux Magazine - Edición en Castellano, Nº 07
Page 61: Linux Magazine - Edición en Castellano, Nº 07

Python • DESARROLLO

61Número 07W W W . L I N U X - M A G A Z I N E . E S

En Java, en general, para reproducir un

sonido es necesario definir varias partes:

Obtener el stream de audio, descodificar-

lo, tratarlo y escribirlo en el dispositivo de

nuestro PC.

RequisitosComo requisitos fundamentales, vamos a

necesitar nuestro querido intérprete de

Jython. Para obtenerlo nos dirigimos a su

web [1] y descargamos la ultima versión

(versión 2.1 en el momento de escribir

esto). Necesitamos la nueva versión de

Java (JRE 1.5 o JDK 1.5), disponible en

[3], ya que incorpora algunas novedades

y mejoras que necesitaremos para nuestro

pequeño reproductor de MP3. Por ultimo

necesitamos obtener las librerías que

vamos a utilizar, MPSPI que podemos

encontrar en la web de Javazoom (ver

[2]) y más concretamente en http://www.

Javazoom.net/mp3spi/mp3spi.html.

Una vez instalados el interprete de

Jython y el JDK 1.5 (o JRE 1.5) debemos

proceder a instalar las librerías de

Javazoom. Para ello, descomprimimos el

fichero que contiene las librerías de

Javazoom (ya sabéis, unzip -x fichero.zip

o bien tar xvfz fichero.tar.gz ) y, como en

la mayoría de los casos, se nos creará un

directorio nuevo con el contenido del

fichero. El primer paso será copiar las

librerías que necesitamos al directorio

lib/ext/ de nuestro JRE (Maquina virtual

de Java). En nuestro caso, después de ins-

talar el JDK 1.5, este directorio se encuen-

tra en /usr/Java/jdk1.5.0_02/jre/lib/ext/ y

debemos copiar aquí (obviamente como

root) los paquetes mp3spi1.9.2.jar, y den-

tro del directorio lib, jl1.0.jar y

tritonus_share.jar.

Una vez hecho esto, al arrancar el intér-

prete de Jython nos aparecerá un mensaje

por cada archivo que hemos copiado,

indicando que dicho paquete se está pro-

cesando para su uso (justo antes de arran-

car nuestro intérprete). Para confirmar

que todo es correcto, en el interprete

introducimos import Javazoom y no debe-

ría salir ningún mensaje de error (en caso

de que así fuera, comprobad que los

archivos están copiados en el sitio correc-

to).

Con estas librerías tenemos ahora un

descodificador del stream de nuestros

archivos MP3 además de algunas otras

utilidades (librerías para conversión de

formatos, lector de la información de las

El formato de sonido MP3 es uno de

los mas consolidados dentro de la

música. A diario miles de personas

en todo el mundo comparten y crean

millones de ficheros en MP3 y los repro-

ductores de música, ya sea en el ordena-

dor, en los equipos de música o para el

coche, se han adaptado para reproducir

este formato. Actualmente la mayoría de

los reproductores de MP3 desarrollados

para PC (como xmms, etc..) soportan este

formato de música. Pero, ¿cómo podemos

crear nuestro propio reproductor de MP3?

Programar un reproductor de sonido

en Java, exceptuando que reproduzca los

formatos comunes que soporta, es bas-

tante complicado. Se necesita mucho

tiempo para realizar el descodificador

del formato (MP3 en este caso) que pro-

cese los datos (conocidos como stream

de audio) que contiene cada canción

codificada en este formato. Por eso, lo

mejor para poder crear nuestro reproduc-

tor, es utilizar librerías que ya estén pre-

paradas para descodificar el stream y

para que podamos reproducirlo. En este

caso utilizaremos librerías bajo la licen-

cia LGPL (Lesser General Public

License).

JUKEBOX CON JYTHON

Aprovecha y usa cualquier librerías de Java.

JUKEBOX CON JYTHON

Damos otro pequeño avance con Jython: Este mes utilizamos librerías Java y analizamos la reproducción de

sonidos desde Java para crear un mini reproductor de MP3 donde reproducir nuestra música.

POR JOSÉ PEDRO ORANTES Y JOSÉ MARÍA RUÍZ

Page 62: Linux Magazine - Edición en Castellano, Nº 07

DESARROLLO • Python

62 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 import org.tritonus.share.sam-

pled.TAudioFormat as taf

02 import org.tritonus.share.sam-

pled.file.TAudioFileFormat as ftaf

03 import javax.sound.sampled as

sampled

04 import java.io as io

05 import jarray

06 import java.util as util

07 import javax.swing as swing

08 import java.lang as lang

09 import java.awt as awt

10 import java.util as util

11

12 class jyMusica(lang.Thread):

13 def __init__(self):

14

self.panelReproductor()

15 self.menu()

16 self.win =

swing.JFrame("JyMusica",

size=(150,

150),windowClosing=self.exit)

17

self.win.setJMenuBar(self.menu

)

18

self.win.contentPane.add(self.

pnlBoton,

awt.BorderLayout.NORTH)

19

self.win.contentPane.add(self.

pnlBoton2,

awt.BorderLayout.CENTER)

20 self.win.show()

21

self.win.setResizable(0)

22 self.win.pack()

23

24 def exit(self, event):

25 lang.System.exit(0)

26

27 def run(self):

28 archivo =

io.File(self.nombre)

29 inp =

sampled.AudioSystem.getAudioIn

putStream(archivo)

30 baseFileFormat = sam-

pled.AudioSystem.getAudioFileF

ormat(archivo)

31 baseFormat =

baseFileFormat.getFormat()

32

self.getTag(baseFileFormat)

33 self.player.play()

34

35 def getTag(self,

baseFileFormat):

36 properties = ftaf.pro-

perties(baseFileFormat)

37 key = "author"

38 val =

properties.get(key)

39 key = "title"

40 tag=

properties.get(key)

41 key = "album"

42 alb =

properties.get(key)

43

self.txtArea.setText("")

44

self.txtArea.append("\nAuthor:

")

45

self.txtArea.append(val +

"\n")

46

self.txtArea.append("title: ")

47

self.txtArea.append(tag +"\n")

48

self.txtArea.append("Album: ")

49

self.txtArea.append(alb +

"\n")

50

51 def

panelReproductor(self):

52 self.pnlBoton =

swing.JPanel(awt.FlowLayout())

53 self.pnlBoton2 =

swing.JPanel(awt.FlowLayout())

54 acciones = ["Play",

"Stop"]

55 self.txtArea =

swing.JTextArea(6,18)

56 self.areaSrl =

swing.JScrollPane(self.txtArea

)

57

self.pnlBoton.add(self.areaSrl

)

58 for cadaBoton in

acciones:

59

self.pnlBoton2.add(swing.JButt

on(cadaBoton,

actionPerformed=self.accionMen

u))

60

61 def menu(self):

62 opciones = ["Play",

"Stop"]

63 self.menu =

swing.JMenuBar()

64 archivo =

swing.JMenu("Archivo")

65 for eachOpcion in

opciones:

66

archivo.add(swing.JMenuItem(ea

chOpcion,

actionPerformed=self.accionMen

u))

67

archivo.addSeparator()

68 self.menu.add(archivo)

69

70 def accionMenu(self,

event):

71 self.accion =

event.getActionCommand()

72 if self.accion ==

'Play':

73 selector =

swing.JFileChooser()

74 rtn =

selector.showOpenDialog(self.w

in)

75 archivo = selec-

tor.getSelectedFile()

76 self.player =

pad.AdvancedPlayer(io.FileInpu

tStream(archivo))

77 self.nombre=archi-

vo.toString()

78 self.play()

79

80 elif

self.accion=='Stop':

81 self.stop()

82

83 def play(self):

84 self.hilo =

lang.Thread(self)

85 self.hilo.start()

86

87 def stop(self):

88 self.player.stop()

89 # self.line.drain()

90 # self.line.stop()

91 # self.line.close()

92 # self.din.close()

93 # self.hilo.interrupt()

94 # self.hilo.finalize()

95 #

96

97 if __name__=='__main__':

98 jyMusica()

Listado 1: jython-julebox.py

Page 63: Linux Magazine - Edición en Castellano, Nº 07

applets. Una de las limitaciones de CLIP,

es que necesita cargar el sonido entero en

memoria antes de reproducirlo lo cual

aumenta los recursos utilizados, además

de que sólo está preparada

para reproducir los formatos

típicos en Java (Wav, A-Law,

U-Law, etc.). Nosotros utili-

zaremos un SourceDataLine

y trabajaremos con un

pequeño Buffer que llenare-

mos con el stream de sonido

descodificado que luego

introduciremos en nuestro

dispositivo de sonido.

Los pasos que seguiremos para tratar el

sonido serán los siguientes. Primero,

obtendremos el Stream y el formato de

sonido (utilizando AudioSystem y sus

métodos getAudioInputStream, y

getAudioFileFormat). Además, del forma-

to de audio (AudioFormat) leeremos los

datos del MP3 (el título, el álbum, el

autor, etc…).

Una vez obtenido

todo esto (el descodifi-

cador ya esta haciendo

su trabajo), necesitare-

mos crear el buffer,

que no es otra cosa

que un array de Bytes.

Para crear dicho array.

Jython nos provee de

un modulo llamado

jarray que tiene dos

constructores: zeros y

array. El primero crea un array inicializa-

do a 0 del tamaño y del tipo que nosotros

necesitemos y el segundo crea un array ya

inicializado (por nosotros) de un tipo de

datos.

Veamos una ejemplo del uso de Jarray.

>>> import jarray

>>> a = jarray.zeros(4,'i')

>>> print a

array([0, 0, 0, 0], int)

>>> b = jarray.array([1,2,3,4],U

'i')

>>> print b

array([1, 2, 3, 4], int)

Como podéis ver el funcionamiento es

sencillo. Jarray.zeros recibe dos argumen-

tos que son el numero de elementos y el

tipo de datos, en este caso 'i' son enteros

(integer). Y jarray.array recibe la secuen-

cia que forma el array y el tipo de datos

también. Para nuestro buffer necesitamos

un array de 4096 Bytes que crearemos

usando jarray.zeros(4096,'b'). Si quisiéra-

mos que nuestro array fuera de Strings,

haríamos un jarray.zeros(45,Java.

lang.String). En caso de que necesitára-

mos (que, de hecho, necesitamos) pasar

como argumento la longitud de nuestro

array a un método, haríamos len(array)

ya que los arrays de Jython no tienen un

método como .length() de los arrays de

Java.

Por ultimo, crearemos el

SourceDataLine y desde su método

write() escribiremos nuestro sonido en

nuestro dispositivo de audio (entonces ya

empezaremos a oír música) y luego basta-

ra con rellenar el buffer (desde nuestro

AudioInputStream) y volver a escribirlo

en nuestro dispositivo de sonido hasta

que lleguemos al final de la canción o

hasta que paremos la reproducción.

Finalmente, y dado que vamos a usar

un pequeño interfaz para manejarnos

(hecho con swing),

necesitaremos progra-

mar Java con hilos

(Thread), por lo que

nuestro reproductor

heredara de la clase

Thread y en el

momento de reprodu-

cir, se lanzará un hilo

que será el encargado

de reproducir la músi-

ca mientras seguimos

teniendo el control en

nuestro pequeño reproductor. Un Thread

es una secuencia de instrucciones que se

ejecuta en paralelo con la aplicación que

lo invoca, podríamos decir que mientras

nosotros usamos nuestra aplicación, lan-

zamos otra pequeña aplicación que repro-

ducirá nuestro sonido sin interferir en la

primera (ejecución en paralelo).

Métodos y LibreríasVamos a implementar un total de once

métodos. Empezaremos describiendo el

motor del reproductor y terminaremos

describiendo los de creación del interfaz.

Son cuatro métodos.

• Run(). Desde este método es de

donde comienza el proceso del

tratamiento de nuestro fichero

MP3. Desde aquí obtendremos

el InputStream y el AudioFormat

y una vez que los tengamos,

pasaremos a llamar al siguiente

método (Reproducir() ha de lla-

canciones -artista, álbum, etc.- y algunas

cosas más).

Nos falta un último paso: Debemos eli-

minar una de las limitaciones de Jython.

Java tiene distintos tipos de

variables, métodos, cons-

tructores, etc., que pueden

ser privados (private) o

públicos (public). Es impor-

tante saber que en Jython no

se pueden declarar variables,

métodos, etc., como públicas

ni como privadas y cuando

intentamos acceder, por

ejemplo, a una interfaz abs-

tracta privada, nos saltará un mensaje de

error diciendo que no es posible acceder a

la interfaz abstracta con el denominador

public.

Solventar esta limitación es sencillo.

Basta con editar el fichero de registro de

jython que se encuentra en el direc-

torio d o n d e h aya m o s i n s t a l a d o

j y t h o n ( e n nuestro caso $HOME/

Desarrollo/jython-2.1/registry) y bus-

camos la línea python.

security.respectJavaAccessibility = true y

cambiamos true por false. Ya tenemos

nuestro sistema preparado.

Por último, es muy importante tener a

mano la API (documentación) de Java

disponible también en su web y la de las

librerías que vamos a utilizar. De

Javazoom deberéis bajar la documenta-

ción de JLayer (la de MPSPI viene en el

fichero que bajasteis al principio) y la API

de las librerías tritonus la podéis bajar de

[4] (están al final de la página).

¿Sonido en Java?El sonido de Java requiere que los progra-

madores conozcan como funcionan sus

clases principales. Las que vamos a utili-

zar son AudioSystem, AudioFormat y

SourceDataLine. AudioSystem está conec-

tada a los dispositivos del sistema de

forma que podemos acceder a ellos ade-

más de que dentro de ella tenemos méto-

dos para tratar el stream de audio.

AudioFormat con el que manejaremos el

formato de audio que necesitaremos. Y

SourceDataLine que nos proporciona la

entrada al dispositivo de sonido, es decir,

que podremos introducir nuestro sonido

en el dispositivo y de esta forma escu-

charlo).

Java proporciona una clase más directa

que es CLIP. Suele utilizarse más para

sonidos pequeños en aplicaciones o en

Figura 1: Aquí tenemos

a nuestro pequeño

reproductor de MP3.

Figura 2: Este es el selector de

ficheros (JFileChooser) que se lan-

zará al ejecutar su método

showOpenDialog().

Python • DESARROLLO

63Número 07W W W . L I N U X - M A G A Z I N E . E S

Page 64: Linux Magazine - Edición en Castellano, Nº 07

marse run() ya que es una

implementación del método

run() que heredamos de la clase

Thread. De esta forma al invocar

el método start() del hilo nuevo,

directamente ejecutara el

método run().

• Reproducir(). Aquí es donde

creamos el buffer de Bytes y el

SourceDataLine. De esta forma,

recibimos el AudioInputStream

(el stream de audio) y creare-

mos el SourceDataLine (que

recibimos desde el método

getLine que definiremos un poco

más adelante). Luego entrare-

mos en un bucle en el que con-

taremos los bytes que leámos y

los bytes que escribamos, y

desde el que leeremos (llenando

el buffer) desde el AudioInputS-

tream y luego lo escribiremos en

el dispositivo de sonido desde el

SourceDataLine. Finalmente,

cuando se termina la canción,

cerraremos el SourceDataLine y

el AudioInputSource.

• GetLine(). Desde este método

creamos el SourceDataLine

(desde AudioSystem) a partir del

stream ya descodificado y nos lo

devolverá. Usaremos un método

que implementa el JDK1.5 que

es el getSourceDataLine(), de

esta forma nos evitamos hacer

downcasting desde el método

getLine() de AudioSystem (que

nos devuelve un DataLine.info).

• Finalmente tenemos getTag().

Este método será el encargado

de devolvernos la información

de la canción (autor, titulo,

etc…). Recibirá el formato del

fichero sin descodificar, creara

una ocurrencia de tipo Map

desde la cual accederemos a los

datos que mas nos interesan, en

este caso, álbum, titulo y autor.

Para los métodos de la interfaz (fig1), ten-

dremos el creador del botón y del cuadro

de texto (panelReproductor()) desde el

que crearemos los botones (JButtons) y el

área de texto (JTextArea()) que nos mos-

trará la información del MP3, el creador

del menú (menu()) que creará un menú

con dos opciones (play y stop) que reali-

zarán las mismas funciones que los boto-

nes, el recogedor de los eventos del ratón

(accionMenu()) que ejecutará los meto-

dos Play y Stop, el método Play() que ini-

ciara el hilo que reproducirá la canción,

además de lanzar el selector de ficheros y

el método Stop() que detendrá la repro-

ducción en curso.

La interfaz es muy simple, una área de

texto (donde se insertarán los datos del

MP3) el botón Play que abrirá un selector

de ficheros (fig2) desde el que selecciona-

remos el fichero a reproducir y el botón

Stop que detendrá la reproducción de la

música. Cada vez que pulsemos en Play

tendremos que seleccionar de nuevo la

canción a reproducir. En vosotros queda

la idea de mejorarlo añadiéndole una lista

de reproducción, botón para pasar a la

siguiente canción y a la anterior, etc. En el

número 4 de Linux Magzine, vimos el uso

de otros componentes como JList y alma-

cenar datos en ficheros, con eso sabréis

ponerle una lista de reproducción a nues-

tro player.

Para reducir el tamaño de la aplicación

hemos omitido algunos puntos como

recoger las excepciones, esto lo podréis

notar cuando se abra el selector de fiche-

ros y pulséis el botón cancelar, abráis un

fichero que no contiene MP3, etc.

Deberéis depurarlo.

Y por último, el método __init__() típi-

co en las aplicaciones Python y Jython

que inicializará los valores de la aplica-

ción creando el panel contenedor de la

interfaz gráfica, e inicializará la variable

booleana desde la que se controlará la

parada del reproductor (Stop) y el método

exit() que permitirá a nuestra aplicación

salir cuando hagamos clic en el botón de

cerrar la ventana (la típica X arriba a la

derecha).

Otro punto que debemos comentar es el

trato que le da Jython a las variables boo-

leanas ya que no existen los valores true y

false. Para solucionar este problema, en

vez de true utilizamos el valor 1 y en vez

de false utilizaremos el 0, que son los

valores equivalentes para Java.

Las librerías que vamos a utilizar son

las siguientes: org.tritonus.share.sam-

pled.TAudioFormat y org.tritonus

.share.sampled.file.TAudioFileFormat que

vamos a usar para obtener la información

de nuestro MP3. Javax.sound.sampled

aquí dentro están nuestras preciadas cla-

ses SourceDataLine, AudioSystem, etc.

Java.io para el acceso a ficheros. jarray

que nos permite crear arrays compatibles

con Java, y por ultimo Java.util,

Javax.swing, Java.lang, Java.awt,

Java.util que nos servirán para el resto de

nuestras tareas.

En caso de que quisiéramos reproducir

canciones situadas en Internet abriríamos la

ubicación creando una ocurrencia URL

(deberemos añadir la librería Java.net, a la

cual le pasamos el protocolo que vamos a

usar, el host al que tiene que conectarse, el

puerto de conexión y el nombre del fichero.

Una vez que tenemos preparada la ubica-

ción, el objeto URL con el método

openStream() empieza a extraer el stream de

ese fichero, ya solo tenemos que pasárselo a

nuestro reproductor (desde el

get.AudioInputStream()) y al poco rato

(dependiendo de la velocidad de conexión y

el tamaño) empezaremos a escuchar música.

Todo el programa se puede ver en el

Listado 1.

Otro Reproductor es PosibleSí, sí que tenemos una forma mas fácil de

crear un reproductor. El cometido de este

artículo era ver como podíamos crear, a

partir de los elementos que tenemos de

Java, un reproductor según nuestras nece-

sidades (como el tamaño del buffer). En

las librerías que hemos instalado de

Javazoom, en JLayer concretamente, exis-

te una clase que crea un reproductor de

MP3 completo al que únicamente hemos

de pasarle el InputStream (con

FileInputStream) cuando lo creamos, y al

ejecutar el método .play() (Fig3) de dicho

reproductor y él se encargará del resto.

Y El mes que viene volveremos con

más scripts en Python y Jython. �

José Pedro Orantes Casado cursa

3º de Ingeniería Técnica en

Informática de Sistemas y desde

hace varios años utiliza linux

como herramienta de trabajo y

como sistema de escritorio. Jose

María Ruíz está realizando el

Proyecto Fín de Carrera de

Ingeniería Técnica en Informática

de Sistemas y lleva mas de 7 años

usando y desarrollando Software

Libre, y desde hace 2 en FreeBSD

LOS

AU

TO

RE

S

[1] http://www.jython.org

[2] http://www.Javazoom.net

[3] http://Java.sun.com

[4] http://www.tritonus.org

[5] Descargas de http://www.linux-

magazine.es

RECURSOS

DESARROLLO • Python

64 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Page 65: Linux Magazine - Edición en Castellano, Nº 07

La herramienta de monitorización

Smokeping está en la lista de paque-

tes de muchas distribuciones como

Debian y Gentoo. Y si no puede encontrar

el paquete, los 200 KByte del fichero tar en

[1] son muy fáciles de instalar. Smokeping

necesita unas cuantas herramientas del

mismo autor, tal como RRDTool, Fping,

SpeedyCGI y un servidor web donde puede

mostrar los resultados [2].

Smokeping utiliza un fichero de confi-

guración central que proporciona a los

administradores ejemplos muy útiles. El

fichero de configuración es el lugar donde

configurar los paths de los binarios y del

servidor web. Las cosas empiezan a

ponerse interesante cuando se configura

los resorte de alarmas, ya que Smokeping

utiliza un formato extremadamente poco

usual pero efectivo. Un resorte por defec-

to sería así:

+bigloss

type = loss

pattern = ==0%,==0%,==0%,BB

==0%,>0%,>0%,>0%

+bigloss es la etiqueta del resorte. Debe

ser única y alfanumérica. La entrada

type=loss dispara al resorte cuando los

paquetes se pierden. La entrada pattern le

proporciona al resorte el modelo a compa-

rar. Las entradas separadas por comas son

para el porcentaje de paquetes perdidos.

Por defecto, Smokeping realiza pings a la

tarjeta veinte veces cada cinco minutos.

Si los paquetes se pierden en tres pings

consecutivos, Smokeping dispara el resor-

te.

Feliz Ping-eadoEl segundo ejemplo se ha tomado tam-

bién de la configuración por defecto:

+rttdetect

type = rtt

pattern = <10,<10,<10,<10,U

<10,<100,>100,>100,>100

type = rtt significa que Smokeping no

reacciona ante paquetes perdidos; en

cambio observa aumentos notables en el

tiempo de viaje de ida y vuelta. Los valo-

res del viaje de ida y vuelta separados por

punto y coma (en milisegundos) en la

línea pattern se define una secuencia. El

ejemplo espera respuestas de ping en

menos de 10 milisegundos. Si una secuen-

cia de múltiples RTTs de más de 100 mili-

segundos ocurre (>100,>100,>100),

Smokeping le avisa de ello.

Bien hasta ahora, pero Smokeping no

sabe a qué servidores se les quiere hacer

el seguimiento. Otra sección más abajo en

el fichero de configuración define los ser-

vidores. Por defecto utiliza ordenación

geográfica:

+World

++Europe

+++UK

+++Switzerland

He añadido mi servidor:

menu = Germany

title = Charlys Webserver

host = kuehnast.com

alerts = bigloss,rttdetect

Después de lanzar Smokeping, la herra-

mienta smokeping.cgi, que forma parte

del paquete, muestra las respuestas del

servidor (ver Figura 1). Si una de estas

entradas produce una notificación al

resorte, se me avisa por email. Smokeping

puede hacer mucho más que esto, como

se muestra en la documentación [1].

Ahora todo lo que necesito es colgar mi

servidor para poder ver a Smokeping en

acción. �

65

La Columna de Charly • ADMINISTRACIÓN

65Número 07W W W . L I N U X - M A G A Z I N E . E S

[1] Smokeping: http://people.ee.ethz.ch/

~oetiker/webtools/smokeping/

[2] Documentación: http://people.ee.ethz.

ch/~oetiker/webtools/smokeping/

docs/install.en.html

RECURSOS

Charly Kühnast es Ge-

rente de Sistemas Unix

en el centro de datos

de Moers, Alemania

cerca del conocido

Rhin. Entre sus labores

se incluye la seguridad del corta-

fuego, la disponibilidad y cuidado

del DMZ (zona desmilitarizada).

EL

AU

TO

R

Taller del Administrador: Backups…66

Sus datos nunca se perderán si imple-

menta una estrategia correcta de

backup.

Alta Disponibilidad para VPNs……...68

Switch transparente para un túnel de

seguridad sin perturbar conexiones

VPN.

SYSADMIN

Si no recibe una respuesta de ping o si la respuesta tarda mucho, debe

tomarlo como una advertencia. Pero, ¿quién realiza ping durante todo

el día? Necesita una utilidad de monitorización basado en ping como

Smokeping. POR CHARLY KÜHNAST

El día a día del Administrador de Sistemas: Smokeping

MENOS HUMOS

Figura 1:El CGI muestra los resultados de

Smokeping.

Page 66: Linux Magazine - Edición en Castellano, Nº 07

66

Por contra, los backups on-line “en

caliente” se guardan en dispositivos que

soportan acceso automatizado 24 horas

al día, 7 días a la semana. Este método

ahorra tiempo, y normalmente también

dinero. Sin embargo, los backups “en

caliente” sólo protegen frente a daños

del hardware. No tienen protección fren-

te a errores del usuario o administrador,

errores que propagaran al medio de

almacenamiento tan pronto como se

haga la copia. Esta es la razón por la cual

la mayoría de los administradores no

considera el backup en caliente como

alternativa al convencional.

FormatosLos administradores no se ponen de

acuerdo en los pros y contras de guardar

los ficheros simples tal cual, o bien guar-

dados dentro de archivos que los conten-

gan, con un formato estructurado, meta-

datos y checksum.

Los ficheros simples se recuperan más

rápidamente, y si el medio de almacena-

miento sufre un fallo sólo quedará afec-

tado ese archivo, mientras que si un

archivo “contenedor” falla, seguramente

se pierdan muchos ficheros.

Los archivos que contienen ficheros

tienen algunas características que los

backups de ficheros simples no tienen.

Por ejemplo, pueden guardar informa-

ción acerca del propietario, permisos de

acceso y marcas de tiempo junto con el

fichero propiamente dicho. Incluso pode-

mos hacer copia de seguridad de disposi-

Storage) para añadir capacidad a sus dis-

cos duros.

Del mismo modo que existen distintos

medios de almacenamiento, existen tam-

bién diferentes estrategias de backup. En

la mayoría de los casos, los administra-

dores optan por backups incrementales,

que guardan sólo los cambios ocurridos

desde la última copia. Este método per-

mite un ahorro considerable de espacio

en los medios de almacenamiento, que

se traduce en una mejora en cuanto al

coste, y la convierte en la estrategia más

utilizada.

La gran desventaja de los backups

incrementales es que la restauración de

los archivos consume mucho más tiem-

po que con un backup completo.

Además de todo esto, es probable que

los administradores tengan que estar

cambiando el medio de almacenamiento

si no disponen de un equipo jukebox.

Una tercera variante es el backup dife-

rencial, en el cual siempre se guarda los

cambios respecto a la última copia com-

pleta. La Figura 1 ilustra los tres méto-

dos.

Off-line, on-line, “encaliente”La elección del método de backup puede

depender de las circunstancias en las

que se recuperarán los datos. Si el fiche-

ro que necesita un usuario está en una

cinta dentro de un armario, el proceso

para recuperarlo puede llevar tiempo y

esfuerzo.

Debido a la amplia tipología de

requerimientos en lo concernien-

te a pérdida de datos, a lo largo

del tiempo han surgido un gran número

de soluciones distintas. Cada tipo de

solución tiene sus ventajas e inconve-

nientes. En el artículo de este mes de

taller de administración, describiremos

algunas técnicas y herramientas básicas

de backups.

Alternativas de backupsLa cinta magnética ha sido durante

mucho tiempo el medio de almacena-

miento más habitual, y lo sigue siendo

en redes con grandes cantidades de

datos a almacenar. Las cintas son baratas

en relación a su capacidad, pero su esca-

sa velocidad es probablemente su mayor

desventaja. Una solución basada en cin-

tas y un jukebox suele ser la mejor para

backups automatizados. Aún así, las cin-

tas magnéticas suelen ser demasiado

caras para entornos domésticos o de ofi-

cinas pequeñas.

Hoy día las soluciones basadas en CD,

DVD, memorias flash o discos duros

internos o externos son mucho más

comunes. En entornos mayores, los

administradores pueden usar también

sistemas NAS (Network Attached

Los datos siempre acaban

perdiéndose en el peor

momento, pero con una

estrategia de copias de seguri-

dad adecuada no tendremos

problemas para restablecer

los archivos perdidos.

POR MARC ANDRÉ SELIG

Administración: Backups

RIESGOSLABORALES

ADMINISTRACIÓN • BackUps

66 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Page 67: Linux Magazine - Edición en Castellano, Nº 07

tivos especiales del directorio

/dev/. Señalar también que las

cintas magnéticas no están

orientadas a almacenamiento

de ficheros individuales.

Algunos programas, como tar

y cpio, intentan un término

medio. Si un archivo cpio resulta

dañado, quedan afectados sólo

los ficheros guardados en la

zona dañada. El programa vuel-

ve a sincronizar desde la siguien-

te marca de fin de fichero, y

todos los ficheros que le siguen

se recuperan sin problemas.

Al tratar este tema, también

hemos de considerar la compre-

sión y la encriptación de los

ficheros. La característica de

resincronización de cpio que

hemos comentado sólo funciona

para backups sin compresión. Si un error

nos impide descomprimir un archivo con-

tenedor, cpio no nos será de gran ayuda.

La popular herramienta gzip se cierra

en caso de leer errores, por lo que es una

mala elección para hacer copias de segu-

ridad. (zcat al menos descomprime el

archivo hasta el punto donde aparece el

error de lectura). La alternativa, bzip2,

comprime y descomprime los ficheros en

bloques de 900 kbytes como mucho. Si

sufrimos un error de lectura, probable-

mente sólo perdamos un bloque, salván-

dose de este modo los bloques anteriores

y posteriores.

Los administradores también se

encuentran ante un dilema similar con la

encriptación de datos. La mayoría de los

programas de encriptación usados en bac-

kups nos impedirán acceder a los datos si

sufrimos un error. Una manera de solucio-

narlo podría ser comprimir y descompri-

mir cada fichero de manera individual

dentro del archivo contenedor. La herra-

mienta afio es una alternativa a cpio a

este respecto, ya que puede manejar la

encriptación individualizada de los fiche-

ros.

Backup con CDUna solución backup con cinta magnéti-

ca como Amanda (véase cuadro 1)

puede ajustarse a entornos menores,

pero sigue estando orientada preferente-

mente a grandes sistemas. Para

usuarios domésticos, o peque-

ñas empresas puede que les sea

más que suficiente un backup

basado en CD o DVD. En com-

paración con las cintas magné-

ticas, los CDs y DVDs son extre-

madamente baratos y tienen un

ciclo de vida bastante largo.

El listado 1 muestra un senci-

llo script para hacer backups,

que utiliza gpg para encriptar

los datos y guarda un checksum

MD5. Si se pierde el CD, al

menos no tenemos que preocu-

parnos de que accedan a los

datos indebidamente. Podemos

modificar el script para poder

usar memoria flash, o un disco

duro externo.

El Camino a SeguirUn sistema de backups es tan bueno

como lo sean los datos guardados en el

medio de almacenamiento. Y estos datos

no tienen que ser necesariamente los

que debían de haberse guardado. Por lo

tanto tiene mucho sentido verificar los

backups para comprobar que pueden

leerse y que son los datos adecuados

cada cierto tiempo.

Asimismo, deberíamos asegurarnos de

que los usuarios son capaces de recupe-

rar los datos por sí mismos. No hay nada

peor que tener la necesidad de recuperar

un backup configurado por otra persona

hace mucho tiempo, y no ser capaces de

hacerlo porque esta persona ya no está

en la empresa.

El caso de pérdida total de los datos

conlleva otras muchas consideraciones.

Como el propio sistema operativo proba-

blemente no estará disponible, tiene sen-

tido prever un sistema de rescate. Este

sistema podría arrancar desde un CD o

disco duro externo y permitiría al admi-

nistrador recuperar todos los datos desde

allí. Por supuesto, este tipo de soluciones

requiere de una buena planificación y

algo de práctica. �

BackUps • ADMINISTRACIÓN

67Número 07W W W . L I N U X - M A G A Z I N E . E S 67

Figura 1: Un backup completo guarda todos los ficheros, un bac-

kup diferencial guarda todos aquellos ficheros modificados desde

el último backup completo y un backup incremental guarda todos

los ficheros modificados desde el último backup, ya fuese este

incremental o completo.

01 #!/bin/sh

02

03 [ `id -u` -eq 0 ] || ( echo

'Must be root to write a

CD/DVD!' && exit )

04

05 TODAY=`date +%Y%m%d.%H%M`

06 MYKEY='0x598342d9'

07

08 umask 022

09 mkdir -p

/tmp/root/backup-$TODAY

10

11 cd /

12 tar cf - etc home usr/local |

\

13 gpg -v --homedir $HOME/.gnupg

-e -r $MYKEY | \

14 tee

/tmp/root/backup-$TODAY/backup

-$TODAY.tar.gpg | \

15 md5sum -b

>/tmp/root/backup-$TODAY/bac-

kup-$TODAY.tar.gpg.md5

16

17 cd /tmp/root

18 mkisofs -r -pad -o backup.iso

19 backup-$TODAY

20 cdrecord -v -eject -multi

dev=0,0,0 -driveropts= burn-

proof -speed=24 -pad

backup.iso

21

22 rm -rf backup-$TODAY

backup.iso

Listado 1: Script simple para Backup

[1] Afio: http://directory.fsf.org/sysadmin/

backup/afio.html

[2] Amanda: http://www.amanda.org

[3] Amanda para Windows: http://

sourceforge.net/projects/

amanda-win32/

RECURSOS

Page 68: Linux Magazine - Edición en Castellano, Nº 07

68

esta solución, se necesitan dos túneles

independientes paralelos; sólo se utiliza-

rá uno de estos túneles en cada momen-

to determinado. Cada túnel en cada red

tiene sus propios extremos, los cuales

sirven como puertas de enlace de la red

local. Linux-HA implementa una reconfi-

guración automática de direcciones IP

para apoyar esta configuración.

Ambos nodos HA tiene una dirección

individual y otra compartida. La direc-

ción compartida sólo la utiliza una de las

máquinas en cada momento determina-

do. El mecanismo está diseñado para

servidores operativos (Web, email,…)

con una dirección compartida. El servi-

cio se ejecuta en ambas máquinas y

escucha cada dirección IP, sin embargo,

las peticiones sólo llegan mediante la IP

compartida. Esto permite a Linux-HA

asignar la dirección externa a la segunda

máquina en caso de emergencia, sin que

los usuarios se den cuenta de que la pri-

mera máquina está caída.

Un cable serie proporciona el heartbe-

at para las dos máquinas. El heartbeat es

una parte importante de Linux-HA, ya

backup en un proceso que a menudo

implica físicamente el parcheado de las

interfaces. No es exactamente una buena

solución. Sería preferible para los dispo-

sitivos de la red detectar un fallo en la

línea y conmutar automáticamente. El

sistema automático ideal también gene-

raría la configuración para ambos extre-

mos haciendo referencia a una configu-

ración central.

Para los cortafuegos y las puertas de

enlace IPSec, la configuración central es

una tecnología en desarrollo. En Linux,

SSPE (Simple Security Police Editor, [4])

maneja esto. Sin embargo, la solución

HA presentada en este artículo no está

capacitada para SSPE aún.

Linux-HAEl proyecto LINUX-HA [5] pretende

aportar soluciones de alta disponibilidad

para servidores Linux. Este software per-

mite a los administradores configurar

una VPN de alta disponibilidad (que no

requiere BGP) que conmutará desde el

sistema estándar a operaciones de bac-

kup de forma rápida. Para implementar

Los administradores a menudo

desean que el sistema de conexión

de la red conmute transparente-

mente a un sistema de backup si la cone-

xión primaria cae. Pero si se utiliza una

VPN con IPSec para proteger su tráfico

de que sea enrutado a través de Internet,

la línea de backup necesita una atención

especial.

La razón para esta atención es que

IPSec [1] [2] requiere una dirección IP

consistente al final del túnel, así cuando

la red conmuta a un túnel distinto, la

dirección IP debe conmutar a un nuevo

extremo o sino las conexiones existentes

finalizarán. El Border Gateway Protocol

(BGP [3]) ofrece un método fiable de

mantenimiento de direcciones IP con un

número de proveedores.

Desafortunadamente, el servicio de los

proveedores a menudo impide a los

administradores usar BGP en una cone-

xión de Internet existente.

La solución es que, muchos adminis-

tradores prescinden de la automatización

y si ocurre lo peor, conmutar manual-

mente de la línea estándar a la línea de

IPSec obstaculiza muchos de los trucos que se emplean en los productos de alta disponibilidad. Le

mostramos una solución que proporciona backups transparentes para las conexiones IPSec.

POR JOHANNES HUBERTZ

Alta Disponibilidad para VPNs

RUTAS ALTERNATIVASAlta Disponibilidad para VPNs

RUTAS ALTERNATIVAS

ADMINISTRACIÓN • VPN

68 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Page 69: Linux Magazine - Edición en Castellano, Nº 07

que los ordenadores implicados lo usan

para comprobar la disponibilidad de sus

parejas. Si un ordenador falla, su pareja

adopta la dirección IP perteneciente al

primer ordenador. Genera una transmi-

sión ARP usando una dirección IP com-

partida y su propia dirección MAC en la

LAN (y realiza una especie de ARP-

Spoofing legal). Además, la máquina

permite un alias de interfaz. Tan pronto

como el primer nodo vuelve a ponerse

online, el protocolo heartbeat se asegura

de que el Servidor 2 deshabilite el inter-

faz del alias de nuevo, mientras el

Servidor 1 habilita su interfaz y la trans-

misión ARP en la LAN.

Dos Instalaciones Linux-HAEl escenario de la Figura 1 muestra al

cliente a la izquierda y a la empresa a la

derecha. El lado de los clientes (izquier-

da, gw-aa) y el lado del proveedor de ser-

vicios IPSec (derecha, gw-ba) utilizan

ESP (Encapsulating Security Payload y el

protocolo IPSec) para enviar paquetes a

VPN • ADMINISTRACIÓN

69Número 07W W W . L I N U X - M A G A Z I N E . E S 69

01 #!/bin/bash

02 # Supervisor HA VPN en gw-aa

03

04 # El otro extremo del túnel

05 TARGET="gw-ba"

06

07 # Número de segundos entre

pings

08 TIMEOUT=1

09

10 # Esperar MAXFAIL * TIMEOUT,

antes de habilitar backout

11 MAXFAIL=5

12

13 # Espera HYSTERE * TIMEOUT

después de un corte

14 # antes de que el script vuel-

va a las operaciones normales

15 HYSTERE=180

16

17 # Suposición: No hay condición

de error el comienzo

18 FAIL=0

19

20 VERBOSE=""

21

22

ACTION_FAIL_START="/root/bin/H

A-VPN-action-script start"

23

ACTION_OK_AGAIN="/root/bin/HA-

VPN-action-script stop"

24

25 PING=/usr/bin/echoping

26 LOG="/usr/bin/logger -t

HA-VPN"

27

28 math () {

29 eval echo "\$(($*))"

30 }

31

32 echo "`date

+%Y%m%d%H%M%S``basename $0`

arrancando" | $LOG

33

34 while :

35 do

36 VAL=`$PING ${VERBOSE} -u -t

$TIMEOUT -s 5 ${TARGET} 2>&1`

37 ERROR=$?

38 if [ $ERROR -gt 0 ] ; then

39 echo "$DAT $ERROR $FAIL $VAL"

| $LOG

40 # Timeout

41 if [ $FAIL -lt 0 ] ; then

42 # Otro error en la fase

43 FAIL=`math $MAXFAIL + 1`

44 fi

45 if [ $FAIL -eq $MAXFAIL ];

then

46 # Empieza backout

47 :

48 FAIL=`math $FAIL + 1`

49 echo "$DAT arrancando backup

ahora: ${ACTION_FAIL_START}" |

$LOG

50 ${ACTION_FAIL_START}

51 else

52 if [ $FAIL -lt $MAXFAIL ] ;

then

53 FAIL=`math $FAIL + 1`

54 fi

55 fi

56 else

57 # Ping con éxito

58 if [ $FAIL -gt $MAXFAIL ];

then

59 FAIL=`math 0 - $HYSTERE `

60 fi

61 if [ $FAIL -le $MAXFAIL -a

$FAIL -ge 0 ] ; then

62 FAIL=0

63 fi

64 if [ $FAIL -lt 0 ] ; then

65 # Espera un período de histé-

resis

66 echo "$DAT $ERROR $FAIL $VAL"

| $LOG

67 FAIL=`math $FAIL + 1`

68 if [ $FAIL -eq 0 ] ;then

69 # Restaura las operaciones

normales

70 :

71 echo "$DAT normal de nuevo:

${ACTION_OK_AGAIN}"| $LOG

72 ${ACTION_OK_AGAIN}

73 fi

74 fi

75 fi

76 #echo "$DAT $ERROR $FAIL $VAL"

| $LOG

77 sleep $TIMEOUT

78 done

79 # never happens:

80 exit 0

Listado 1: Supervisor HA VPN

Figura 1: Una red cliente está conectada a un proveedor de servicios externo mediante una

VPN. Esta conexión utiliza dos caminos alternativos; si es necesario, el Túnel 2 asume el

papel del Túnel 1.

Page 70: Linux Magazine - Edición en Castellano, Nº 07

través del túnel. El túnel reemplazado

(2) se configura en uno de los routers de

backup en la parte de arriba (gw-ab, gw-

bb) de manera parecida al Túnel 1.

Linux-HA se está ejecutando entre gw-

aa y gw-ab y entre gw-ba y gw-bb. El

heartbeat utiliza el puerto serie, que no

no se necesita para ningún otro propósi-

to y es independiente de la red, IPSec e

IPtables. Ambas instalaciones HA traba-

jan separadamente e independientemen-

te el uno del otro. En operaciones nor-

males, gw-aa y gw-ba tienen una direc-

ción IP local del router (10.1.255.254

izquierda y 10.31.0.254 derecha). En

caso de un corte, estas direcciones

migran a gw-ab y gw-bb. Para permitir a

los administradores explícitamente

conectar a los ordenadores en un sistema

HA, ambos sistemas tienen adicional-

mente direcciones IP estáticas en sus res-

pectivas LANs; esto es 10.31.0.252 para

gw-bb por ejemplo.

Script HA-VPNLa puerta de enlace por defecto gw-aa y

gw-ba ejecuta un script de la shell como

el que se muestra en el Listado 1. El

script se lanza mediante una entrada en

el inittab y monitoriza la accesibilidad

por el otro lado, independientemente del

túnel de IPSec. Para hacerlo así, el script

envía pequeños paquetes UDP al puerto

de eco. El comando ping es un compo-

nente estándar para la mayoría de las

distribuciones Linux y puede usar UDP

si se configuran las opciones adecuadas.

Esta solución evita problemas con los

cortafuegos sobreprotegidos que no

aceptan paquetes ICMP y de esta forma

bloquean los ping normales.

Mientras que la conexión entre el gw-

aa y gw-ab esté activa, el contador FAIL

estará siempre a cero. Si el comando

ping falla, el script incrementa la varia-

ble FAIL en la línea 53, mientras el valor

esté por debajo de MAXFAIL. Si el

siguiente ping es correcto, el script esta-

blece FAIL a cero (Línea 62). Si el valor

alcanza MAXFAIL, la línea 50 llama a

ACTION_FAIL_START (Listado 2 con el

parámetro start). ACTION_FAIL_START

deshabilita el heartbeat local, provocan-

do que la puerta de enlace de backup

automáticamente adopte la dirección IP

del router local.

Esperando las OperacionesNormalesEl bucle infinito se mantiene en ejecu-

ción, esperando en la línea que realiza el

backup y la señal del ping para volver al

valor normal de 0. Cuando llega la pri-

mera respuesta después de un periodo

sin conexión, la línea no será del todo

estable, así que el script espera antes de

restaurar las operaciones normales.

Establece FAIL a un valor negativo de

HYSTERE (Línea 59) e incrementa FAIL

para cada ping recibido (Línea 67). Si se

produce otro error, la línea 43 establece

la variable FAIL a un valor mayor que

MAXFAIL – esto mantiene al sistema

usando el backup.

Las operaciones normales comienzan

cuando FAIL retorna a cero y el script

llama a ACTION_OK_AGAIN en la línea

71 (Listado 2 con el parámetro stop). El

programa también rehabilita el heartbeat

y reinicia la dirección IP del router local.

Esta solución evita las oscilaciones del

router, cuando las puertas de enlace fluc-

túan entre los túneles. Las conexiones a

Internet están llenas de peligros cuando

se producen los cortes, que se resuelven

después de un breve periodo. Tres minu-

tos es un buen valor para asegurar las

operaciones estables.

La experiencia adquirida nos indica

que si el heartbeat en uno de los extre-

mos del túnel bloquea la puerta de enla-

ce, el otro extremo continúa después de

un retraso de unos segundos.

Satisfacción GarantizadaEsta solución ha estado ha estado dispo-

nible en Internet desde el 2004 y ha

demostrado repetidamente que los usua-

rios que lo utilizan ni se dan cuenta de

los cortes en el router del lado del pro-

veedor. En el caso de un fallo total, el

mecanismo normal de reintento usado

por la pila TCP/IP de la aplicación del

servidor y del PC del cliente pueden

fácilmente resolver los diez segundos

antes de que la solución de backup

irrumpa. Y la clase de inconvenientes

que acompañan a los cortes de esta clase

es ya cosa del pasado. �

[1] RFC 2401: http://www.ietf.org/rfc/

rfc2401.txt

[2] Freeswan: http://www.freeswan.ca/

code/super-freeswan/

[3] RFC 1745: http://www.ietf.org/rfc/

rfc1745.txt

[4] SSPE: http://sspe.sourceforge.net

[5] Linux-HA: http://www.linux-ha.org

RECURSOS

ADMINISTRACIÓN • VPN

70 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 #!/bin/bash

02 # HA-VPN-Aktionsskript

03

04 #VERBOSE=-v

05 VERBOSE=""

06

07 NAME=`basename $0`

08 LOG="/usr/bin/logger -t

HA-VPN"

09

10 PARAMETER_FAULT=0

11

12 if [ $# -ne 1 ] ; then

13 PARAMETER_FAULT=1

14 else

15 PARAMETER=$1

16 case $PARAMETER in

17 start) ;;

18 stop) ;;

19 *)

20 PARAMETER_FAULT=1 ;;

21 esac

22 fi

23

24 if [ $PARAMETER_FAULT -ne 0 ];

then

25 $LOG " ${NAME}: called with

:$*: ==> parameter error,

abort"

26 echo "`date +%Y%m%d%H%M%S`

${NAME}: parameter error,

abort"

27 exit 1

28 fi

29

30

ACTION_FAIL_START="/etc/init.d

/heartbeat stop"

31

ACTION_OK_AGAIN="/etc/init.d/h

eartbeat start"

32

33 case $PARAMETER in

34 start) $LOG

${ACTION_FAIL_START} ;

35 ${ACTION_FAIL_START} ;;

36 stop) $LOG ${ACTION_OK_AGAIN}

;

37 ${ACTION_OK_AGAIN};;

38 esac

39 exit 0

Listado 2: Script de Acción de HA-VPN

Page 71: Linux Magazine - Edición en Castellano, Nº 07

7171ISSUE 52 MARCH 2005W W W . L I N U X - M A G A Z I N E . C O M

Bienvenidos a Linux UserÉsta es la sección dedicada a la presentación de software interesante y útil que nos

ayuda en nuestro quehacer diario con el escritorio Linux. Aquí aprenderemos a uti-

lizar software estándar de una manera más eficiente, adquiriremos valiosos

conocimientos y descubriremos apasionantes nuevas aplicaciones.

KTools: Basket . . . . . . . . . . . . . . . . . . . . . . . 72Basket es un cómodo contenedor de documentos, notas,

imágenes, sonidos, gráficos, hojas de cálculo y otros

archivos que puede que queramos encontrar en otro

momento.

DeskTOPia: WMI . . . . . . . . . . . . . . . . . . . . . . 74WMI es un gestor de ventanas elegante y rápido con un

buen soporte para el control por teclado.

KoolDock y KXDocker . . . . . . . . . . . . . . . . . 76Si el panel de KDE no te parece suficientemente espectac-

ular, puedes mejorarlo con KoolDock o KXDocker.

Gnome SoundJuicer . . . . . . . . . . . . . . . . . . . 78

En este artículo presentamos una de las herramientas

dedicadas a al ripeado de CDs a disco duro bajo Gnome:

Sound Juicer.

KDE Image Menu (Kim) . . . . . . . . . . . . . . . . 80

Con un menú de servicio integrado en Konqueror denomi-

nado Kim, se puede modificar y manipular ficheros de

imágenes desde un menú contextual.

Educación: Accesibilidad (II) . . . . . . . . . . . 82En esta segunda parte dedicada al estudio de las tec-

nologías de accesibilidad en Linux, nos concentramos en

la tiflotecnología.

Línea de Comandos: Navegadores . . . . . . . 87Si trabajamos desde la línea de comandos y necesitamos

algo en Internet, o bien si sólo queremos convertir un

archivo HTML en un ASCII perfectamente formateado,

podemos probar un navegador en modo texto.

Page 72: Linux Magazine - Edición en Castellano, Nº 07

Basket es la herramienta perfecta

para cazadores y buscadores de

información que necesiten una

manera de ordenar información impor-

tante con un solo clic. Basket funciona

como una cesta virtual en nuestro escri-

torio Linux. Basket puede guardar trozos

de texto, enlaces, etc. Pero no sólo eso,

también funciona como un depósito de

imágenes, sonido, documentos de texto,

accesos directos de programas y muchas

otras cosas.

Los desarrolladores de Basket están

todavía trabajando bastante en el progra-

ma, por lo que si lo vamos a usar, merece

la pena visitar periódicamente la página

del proyecto para verificar la última ver-

sión. Puede que encontremos una nueva

versión cada vez que la visitemos. En

http://basket.kde.org/download.php

encontraremos enlaces que nos llevarán

al código fuente de Basket. Junto al códi-

go fuente, encontraremos también paque-

tes RPM listos para usar con Suse 9.1 y

9.2. Los usuarios de otras distribuciones

necesitarán compilar el código fuente.

Los desarrolladores de Basket han

puesto asimismo un pequeño script

para facilitar los típicos

pasos para com-

pilar: confi-

gure, make y make install configura las

variables de entorno, compila el código

fuente e instala el programa respectiva-

mente. Pero antes de ejecutar el script,

hemos de asegurarnos de tener los

paquetes devel para

KDE y Qt en nuestro

equipo, si queremos

evitar una avalancha

de mensajes de error

del script.

Tras la instalación,

podemos lanzar

Basket desde

Utilities | Basket en

el menú Start, o bien

tecleando basket en un ter-

minal.

MateAñadir datos a Basket es tan

fácil como poner una mone-

da en una cesta. Basket es

una más de las aplicaciones

de KDE con soporte “arras-

trar y soltar”. Si queremos

guar-

dar una imagen, un enlace o un fichero de

texto, sólo tenemos que arrastrar los datos

a la ventana abierta y soltar el icono allí.

Lo mejor de la característica de “arrastrar

y soltar” es que ni siquiera tenemos que

guardar los cambios. El programa guarda

automáticamente cualquier cosa que

soltemos en la cesta.

Por supuesto, podemos usar un

método más tradicional si así lo

preferimos. Para guardar datos a

la vieja usanza, seleccionamos

Insert en la barra de herramientas

y seleccionamos en el tipo de

datos en el submenú: las

opciones son Image, Text

para texto normal y Rich

Text para archivos RTF. Los

diseñadores de páginas

Web pueden seleccionar

colores y guardarlos

en código

72

Si tendemos a recolectar información para luego

olvidar dónde la pusimos, la herramienta de KDE

Basket puede ser justo lo que necesitamos. Basket es

un cómodo contenedor de documentos, notas, imá-

genes, sonidos, gráficos, hojas de cálculo, y otros

archivos que puede que queramos encontrar en otro

momento. POR STEFANIE TEUFEL

LINUX USER • KTools

72 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Guardar, ordenar y catalogar con Basket

CANASTA VIRTUAL

Page 73: Linux Magazine - Edición en Castellano, Nº 07

73

KTools • LINUX USER

73Número 07W W W . L I N U X - M A G A Z I N E . E S

hexadecimal HTML, lo cual es útil si

solemos olvidar los valores de color de

páginas que visitamos.

Basket añade y organiza los documen-

tos a la colección, permitiéndonos acce-

der a ellos de un vistazo (véase Figura

1). Para cambiar el orden, podemos

hacerlo bien arrastrando y soltando, o

bien seleccionando Item | Move Up o

Item | Move down.

Si hemos trabajado previamente con

alguna herramienta de notas como

KNotes, Kjots o Gnome Sticky Notes,

podemos importar la información de

esas otras herramientas directamente a

Basket. Para ello seleccionamos Basket |

Import y así añadimos esas notas a nues-

tra cesta.

Además de este sistema de cestas,

Basket también nos proporciona meta-

datos como otra utili-

dad para llevar la

cuenta de nuestra

colección de informa-

ción. Podemos añadir

los detalles clave para cualquier ima-

gen, texto o enlace. El metadato apare-

cerá cuando posemos nuestro ratón

encima de cualquier entrada. Para con-

figurar la opción de metadato, pulsa-

mos el botón derecho sobre el objeto

del que queramos especificar el meta-

dato, y seleccionamos la opción del

menú Edit Meta-data…, y añadimos el

comentario.

Cuestión de GustosAl igual que otros programas KDE,

Basket nos permite fijar preferencias.

Seleccionamos Preferences | Set up

Basket para ello. Podemos usar la pesta-

ña General para especficar si queremos o

no que Basket nos muestre consejos,

añadir una entrada desde Kicker y

demás. Incluso podemos especificar

cómo nos mostrará los objetos. Por ejem-

plo, podemos definir aspectos como el

color del texto y del fondo, tamaño de

las imágenes o iconos, todo ello desde

las pestañas Items Default Values e Items

Look.

Desde el apartado Program podremos

definir el programa que usará Basket

para abrir el archivo, según la extensión

asociada, ya sea texto, sonido o anima-

ciones. Si las que vienen por defecto no

nos convencen, pulsamos sobre el botón

Choose y elegimos el programa a asociar

con el tipo de archivo desde el cuadro de

diálogo que aparece.

Listas de Comprobación yMás…Basket tiene funcionalidades para ayudar-

nos a usar listas de chequeo o listas de

cosas por hacer, de manera parecida a las

que ofrece KOrganizer (véase Figura 2).

Para crear una lista de chequeo, nos vamos

a Check list dentro del menú Basket | New.

Como muestra la figura 2, estas listas

muestran un checkbox para cada entra-

da, que podemos marcar para señalar

que ya las hemos atendido.

Si hemos recopilado un montón de

información útil, puede que queramos

compartirla. De nuevo, Basket nos ayuda

a convertir los contenedores de informa-

ción a código HTML. Para ello, seleccio-

namos una lista y pulsamos sobre Basket

| Export to HTML en el menú. Si lo nece-

sitamos, podemos empotrar nuestros

ficheros o directorios desde el cuadro de

diálogo que aparece. Después de guardar

el contenido en HTML, sólo tenemos que

subirlo a la red o a la página Web para

permitir a otras personas admirar nues-

tra colección de documentos. �

Figura 1: Basket nos permite agrupar una colección de docu-

mentos, imágenes y enlaces, en un lugar único y fácilmente

accesible.

Figura 2: Podemos organizar la lista de obje-

tos como lista de chequeo.

Figura 3: Configuración de Basket con el menú Settings.

Stefanie Teufel es

programadora

Linux vocacional,

aunque no se

lleva bien con las

pseudo-explica-

ciones crípticas ni con el tecno-

lenguaje elitista. Como econo-

mista titulada, Stefanie es la

prueba viviente de que no es

necesario ser un gurú para

divertirse con Linux.

LAAUTORA

Page 74: Linux Magazine - Edición en Castellano, Nº 07

RPM. Se procede de forma normal para

instalar los paquetes y compilar el códi-

go fuente siguiendo la secuencia están-

dar: ”./configure; make; sudo make ins-

tall”. Después de instalarse WMI, hay

que establecerlo como el gestor de venta-

nas por defecto. Si se entra en modo con-

sola, las entradas en el fichero ~/.xinitrc

mostrado en el Listado 1 realizarán el

trabajo. (Las últimas tres líneas en el

fichero no tienen interés por el momen-

to, pero más adelante nos fijaremos en

ellas).

El Listado 1 no tendrá efecto en el

login basado en GUI GDM o KDM.

¡Allá Vamos!La primera vez que se ejecuta WMI, no

se verá ningún menú ni otro sistema para

ejecutar programas por medio del ratón

apuntando y haciendo clic. Sin embargo,

se muestra una ventana con la página

man de ayuda de WMI, que describe los

primeros pasos y explica la forma en la

que funcionan los dos modos.

Así pues, empecemos. Lo primero que

deseamos hacer es ordenar el escritorio.

Así que vamos a dividir el escritorio en un

número de áreas o espacios de trabajo.

Los lectores estarán familiarizados con

estos elementos, ya que la mayoría de los

gestores de ventanas disponen de espa-

cios de trabajo o escritorios virtuales.

Tiene sentido configurar varios espacios

de trabajo para que sirva de ayuda a la

hora de organizar el escritorio. Un espacio

de trabajo puede ser para comunicaciones

(email, IRC, Jabber,…), el segundo para

navegar por Internet y un tercero para tra-

bajar con OpenOffice. Para crear estos

espacios de trabajo, hay que habilitar pri-

mero el modo de entrada presionando

[ALT + i], que permite el acceso a

comandos específicos de WMI. Ahora se

teclea

74

WMI es un gestor de ventanas elegante y rápido con un buen soporte para el control por teclado.

POR PHILIPP KLEIN

LINUX USER • Desktopia: WMI

74 Número 07 W W W . L I N U X - M A G A Z I N E . E S

WMI y la reencarnación del teclado

LA VELOCIDAD DE LA LUZ

01 #!/bin/sh

02 exec /usr/local/bin/wmi

03

04 if test -x $HOME/.wmi/sti.pl ;

05 then

06 $HOME/.wmi/sti.pl &

07 fi

Listado 1: ~/.xinitrc

WMI, Window Manager

Improved (Gestor de Ventanas

Mejorado) es un gestor de ven-

tanas elegante y rápido que hace un

especial énfasis en el uso del teclado [1].

WMI ofrece mayor velocidad mejorando

la experiencia del usuario en hardware

más antiguo.

Ideas y SolucionesEsta herramienta permiten que el usua-

rio disponga de dos modos. La parte

inferior de la pantalla contiene una línea

para la entrada de comandos, que se

habilita pulsando [ALT + e]. En el modo

comando, los usuarios pueden ejecutar

los programas instalados en el sistema;

dicho de otro modo, el gestor de venta-

nas cumple el rol de un terminal simple.

El segundo modo en WMI es para atajos

[ALT + i].

InstalaciónEl sitio web del proyecto WMI en [1]

tiene descargas en varios formatos.

Además de los ficheros con el código

fuente, estas descargas incluyen paque-

tes binarios para Debian, Slackware y

Page 75: Linux Magazine - Edición en Castellano, Nº 07

75

Desktopia: WMI • LINUX USER

75Número 07W W W . L I N U X - M A G A Z I N E . E S

create-workspace

se solicitará la entrada de un nombre

para el nuevo espacio de trabajo.

Tecleando Browser se crea un espacio de

trabajo con este nombre. El espacio de

trabajo aparece en la parte inferior del

escritorio. Para ejecutar un navegador

web, primero hay que habilitar el modo

comando presionando [ALT + e].

Entonces, ya se puede introducir

firefox

para ejecutar el navegador Firefox. Si se

quiere restaurar la ventana a pantalla

completa, hay que hacer clic en el botón

de la parte de arriba en la esquina dere-

cha de la ventana del programa o más

rápidamente presionando [ALT + M].

Se pueden seguir los mismos pasos

para crear más espacios de trabajo.

Tecleando:

save-settings

se guardarán las configuraciones de

modo que estén disponibles la próxima

vez que se conecte al sistema.

Si se desea ejecutar una aplicación

automáticamente después de entrar en el

sistema, se puede especificar introdu-

ciendo una entrada en el fichero

~/.xinitrc. Para lanzar una terminal

XTerm llamada shell en la esquina supe-

rior derecha del espacio de trabajo:

exec wmiremote -a U

select-workspace+web

exec firefox&

Por último, para desconectarse del siste-

ma se presiona [ALT + q] y nos volve-

mos a conectar de nuevo para asegurar-

nos de que la configuración esté funcio-

nando de forma correcta.

Nota: Para mostrar un listado de los

atajos actualmente definidos basta con

teclear

wmiremote -p | less

Configuración IndividualHay que admitir que el conjunto actual

de controles de WMI es poco intuitivo.

Así que vamos a añadir unos cuantos

atajos propios a WMI.

Para ello, se entra al directorio de con-

figuración de WMI en ~/.wmi. En esta

carpeta, el fichero actions.conf se usa

para definir los atajos. Los ejemplos

mostrados en el Listado 2 son de mi pro-

pia colección.

La mayoría de los comandos son auto-

explicativos, pero vamos a echarle un

vistazo. La Línea 1 asocia CTRL + s al

comando que conmuta entre espacios de

trabajos. Si se está en el espacio de traba-

jo 3, presionando CTRL + s se pasará al

espacio de trabajo 2. Las líneas que van

desde la tres a la ocho contienen los ata-

jos para conmutar explícitamente entre

los espacios de trabajo. ALT + 1 nos

lleva al espacio de trabajo 1 (que es IRC

en este caso). Del mismo modo ALT + 2

nos lleva al espacio de trabajo 2 y ALT +

3 al espacio de trabajo 3.

Por supuesto que se pueden usar los

atajos para ejecutar comandos externos.

Por ejemplo, las Líneas 10 y 11 le indican

a WMI que ejecute Firefox cuando se

presione SHIFT + F9. También son posi-

bles atajos “avanzados”, por ejemplo, los

atajos de las líneas 13-25 que controlan

el reproductor de audio xmms.

Extendiendo WMIWMI es fácilmente extensible y configu-

rable usando temas y scripts. Se puede

encontrar una colección de temas en [2]

que se pueden adaptar para usar nues-

tros colores favoritos. Es bastante fácil

instalar un tema: simplemente se copia

el fichero theme.conf del nuevo tema en

~/.wmi.

El script Perl wmi.pl [3] muestra lo

fácil que es realizar scripts WMI para

extenderlo. Por ejemplo, este script

añade una barra de estado, que da infor-

mación detallada de la carga, el número

de mensajes leídos y no leídos y la hora

del día. Para instalar el script, hay que

ejecutarlo antes de ejecutar WMI (por

ejemplo, en ~/.xinitrc). El Cuadro ~/

.xinitrc explica como instalar el script

wmi.pl. Desde luego, el script Perl tiene

que estar ubicado en ~/.wmi y necesita

los privilegios apropiados para que se

ejecute correctamente. �

[1] Web oficial del proyecto: http://wmi.

modprobe.de

[2] Temas WMI:http://wmi.modprobe.

de/index.php/WMI/Themes

[3] sti.pl:http://www.dcs.gla.ac.uk/

~lativyn/sti/

RECURSOS

[Alt + I] Habilita el modo de

entrada

[Alt + E] Habilita el modo ejecu

ción

[Esc] Salir del modo entrada/

ejecución

[Alt + M] Maximiza una ventana

[Alt + D] Oculta una ventana

[Alt+ A] Restaura una ventana

[Alt + Tab] Conmuta entre ventanas

[Ctrl + Alt + Q] Salida del sistema

Atajos Comunes en WMI

01

intern.cycle-workspace-prev.ke

ys=ctrl+s

02

03 chain.wsia.seq="selectworkspa-

ce+irc"

04 chain.wsia.keys=alt+1

05 chain.wsis.seq="selectworkspa-

ce+web"

06 chain.wsis.keys=alt+2

07 chain.wsio.seq="selectworkspa-

ce+shell"

08 chain.wsio.keys=alt+3

09

10

extern.firefox.cmd=/usr/bin/fi

refox

11 extern.firefox.keys=shift+F9

12

13 # Rebobinar en XMMS

14 extern.xmmsr.cmd="xmpisms -r"

15 extern.xmmsr.keys=shift+F5

16 # Reproducir o continuar con

la pista actual

17 extern.xmmst.cmd="xmms -t"

18 extern.xmmst.keys=shift+F6

19 # Detener la pista actual

20 extern.xmmss.cmd="xmms -s"

21 extern.xmmss.keys=shift+F7

22 # Saltar una canción en la

lista de reproducción

23 extern.xmms.cmd="xmms -f"

24 extern.xmms.keys=shift+F8

Listado 2: ~/.wmi/

actions.conf

Page 76: Linux Magazine - Edición en Castellano, Nº 07

Kicker es la base de operaciones en

KDE. Lanza programas, cambia

entre escritorios y permite añadir-

le applets a la barra de herramientas.

Además de estas funciones básicas, el

programa permite algunos efectos gráfi-

cos. Kicker permite transparencias e ico-

nos animados con efecto cristal al posar el

ratón por encima.

Desafortunadamente, la barra de herra-

mientas de KDE no alcanza la elegancia

gráfica de su equivalente en Mac OS X.

Matías Fernández, Francisco Guidi y

Stefano querían algo más. Matías y

Francisco han desarrollado una barra de

tareas al estilo de Mac OS X. En este artí-

culo describiremos KoolDock [1] y

KXDocker [2] y mostraremos como se

puede mejorar el escritorio de KDE con

estas herramientas.

EspectacularKoolDock [1] es un proyecto que tiene la

estética como principal objetivo. No nece-

sitaremos verificar con el compilador el

factor estético de nuestra barra de herra-

mientas. Encontraremos paquetes para

Debian y Mandrake en la página del pro-

yecto y los paquetes RPM para Suse Linux

están disponibles en [3]. Si preferimos

compilar el código, hemos de seguir los

pasos habituales para compilar e instalar

KoolDook: ./configure && make && su -c

"make install".

Antes de lanzar KoolDock, puede que

prefiramos arrastrar el Kicker a la derecha

o izquierda de la pantalla, ya que

KoolDock va a secuestrar el espacio infe-

rior de la misma. Al teclear kooldock, apa-

rece sin más una ventana indicándonos

que movamos el ratón hasta la parte infe-

rior de la ventana para comprobar que allí

está KoolDock. Al hacerlo, aparece una

aplicación que se parece mucho a

Mac OS *X (véase Figura 1).

Por defecto, KoolDock nos proporciona

espacio para seis iconos de aplicaciones.

Cuando pasamos el ratón por encima del

panel, el programa amplía el icono corres-

pondiente. KoolDock muestra por encima

del icono correspondiente la acción que

se ejecutará si pulsamos el botón izquier-

do, por ejemplo, en el caso del icono más

a la izquierda del panel, se iniciará

Konqueror.

Si pulsamos con el botón derecho,

KoolDock abre un menú, donde precisa-

mente la entrada KoolDock tiene muchas

e importantes opciones. Por ejemplo, Go

to Desktop cambia a otro escritorio y Task

List muestra una lista de ventanas activas.

Con Edit Preferences (véase Figura 2) des-

plegamos un cuadro de diálogo donde

podemos personalizar KoolDock.

Mejor que desplegar el menú para ver

la lista de programas activos, podemos

hacer que KoolDock integre iconos para

esos programas en la barra de tareas. Para

ello, habilitamos Enable Taskbar en la

pestaña Visual. Si seleccionamos Show K

Menu añadiremos el menú K a KoolDock.

Pulsamos en OK cuando hayamos termi-

nado para añadir así el icono a la parte

izquierda de la barra de herramientas. Si

76

Si el panel de KDE no te parece suficientemente espectacular, puedes

mejorarlo en KDE con KoolDock o KXDocker. POR HAGEN HÖPFNER

LINUX USER • KoolDock

76 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Uso de KoolDock y KXDocker

EN EL MUELLE

Figura 2: Usamos este cuadro de diálogo

para especificar como integrar KoolDock con

el menú de KDE.

Figura 1: KoolDock aparece al llevar el ratón

al borde inferior de la pantalla.

Page 77: Linux Magazine - Edición en Castellano, Nº 07

77

KoolDock • LINUX USER

77Número 07W W W . L I N U X - M A G A Z I N E . E S

nos gusta experimentar, podemos pulsar

también sobre Enable System Tray para

añadir las áreas del panel Kicker a

KoolDock.

Cada vez que ejecutemos un applet

para el panel de ahora en adelante, debe-

ría aparecer un icono para ese applet en la

barra de herramientas. Pero, tal y como

hemos comprobado, esto no funciona

para algunos applets. Cuando ejecutamos

el applet de kamix en nuestro ordenador

de laboratorio, para cambiar el volumen

en Suse Linux, no ocurrió nada.

La pestaña Application List nos permi-

te añadir iconos de aplicaciones a

KoolDock. La manera más fácil de añadir

un programa es arrastrar el lanzador del

programa desde el menú K y soltarlo en

la ventana de configuración. Pulsamos

en Add en el cuadro de diálogo para aña-

dir por fin el lanzador a nuestra colec-

ción en KoolDock.

Si solemos abrir muchas ventanas de

terminal al mismo tiempo y no queremos

sacrificar todo ese espacio en la barra de

herramientas, podemos añadir la ventana

de terminal a la lista de Ignore list. Para

ello, primero seleccionamos Grab

Window y entonces pulsamos en una de

las ventanas del programa que queramos

eliminar de la lista de programas activos.

Pulsamos entonces en Add en el cuadro

de diálogo configuración de KoolDock: así

se añade el programa seleccionado a la

lista y evitamos que se muestre como

activo.

Un Toque de OS XKXDocker [2] es otra barra de herramien-

tas que se parece mucho a la de

Mac OS X. Los archivos RPM para

KXDocker de Mandrake Linux se instala-

rán sin problema en Fedora Core 2. Para

compilar KXDocker

desde el código fuente,

necesitamos compilar

previamente el paquete

kxdocker-0.27 y luego el

paquete kxdocker-resources-0.9 que con-

tiene los datos e iconos para la barra.

Tecleamos kxdocker para lanzar nuestro

nuevo programa. De nuevo, la barra se

hace con el espacio inferior de la pantalla.

En esta ocasión, no sólo tenemos los ico-

nos de los programas, sino que también

tenemos el menú de inicio de KDE y una

colección de applets (véase Figura 3).

Por defecto, la selección de applets

incluye calendario, reloj, red y carga de la

CPU, así como un indicador del estado de

la batería. Además de la barra, KXDocker

añade también un mini-icono al panel de

Kicker, permitiéndonos mostrar u ocultar

KXDocker con sólo pulsarlo.

Podemos borrar el indicador de estado

de la batería en los ordenadores de sobre-

mesa, y tener así más espacio para acce-

sos directos en la barra. Para ello seleccio-

namos Configurator en el menú de

KXDocker para acceder al cuadro de diá-

logo de configuración (véase Figura 4).

La pestaña Objects, en el ciertamente

desordenado cuadro de diálogo, nos per-

mite eliminar accesos directos y applets.

Sólo tenemos que seleccionar el elemento

en cuestión y pulsar, en el panel de la

derecha, sobre el icono que se parece a un

círculo negro con una cruz blanca.

Con el icono en forma de varita pode-

mos crear nuevos accesos directos de pro-

gramas. Pulsamos en la varita para crear

una nueva entrada y luego especificamos

las propiedades usando las pestañas de la

parte derecha de la ventana. KXDocker

acepta cualquier valor para Name.

Tecleamos el texto para mostrar en Over

Text showed y seleccionamos un icono

para la nueva entrada en la pestaña

Images. Para ejecutar el programa cuando

pulsemos el botón izquierdo, definimos la

acción requerida como onClickExec den-

tro de Actions. Podríamos hacer esto por

ejemplo para thunderbird, si queremos

una entrada para nuestro cliente de

correo electrónico.

Los botones de flecha nos ayudarán a

posicionar el nuevo icono adecuadamen-

te. Cuanto más arriba en la lista esté el

icono, más a la izquierda aparecerá en

nuestra barra de herramientas. Cuando

hayamos acabado, pulsamos en el icono

del disquete para guardar los cambios. Se

nos pregunta por un nombre de archivo, y

si queremos que se cargue esta configura-

ción la próxima vez que ejecutemos la

barra de herramientas.

El manual [5] nos ofrece más detalles

acerca de la configuración de KXDocker

e incluye unos cuantos ejemplos de con-

figuración.

Mucho Donde ElegirTanto KoolDock como KXDocker ofrecen

al usuario una fantástica barra de herra-

mientas, pero ninguna de las dos alcanza

la funcionalidad del Kicker original. Los

desarrolladores no han tenido el punto de

vista del usuario suficientemente en cuen-

ta a la hora de integrar el menú K. Si pul-

samos el icono del menú K, simplemente

abriremos el menú estándar, que tendrá

una pinta muy aburrida en comparación a

los espectaculares gráficos de cualquiera

de las dos barras. Asimismo, ninguna de

ambas barras nos permite prescindir com-

pletamente del Kicker original, ya que

ambas usan funciones del Kicker para

integrarse en el menú de inicio de KDE.

Si no tenemos un proceso Kicker activo,

KoolDock y KXDocker pierden parte de su

funcionalidad. Aún así, si somos de los

que aprecian esos efectos gráficos y esta-

mos buscando una manera de darle vida

a nuestro escritorio e incluso añadir algu-

nas funcionalidades, seguro que pasare-

mos un buen rato con este par de aplica-

ciones. �

Figura 3: KXDocker se presenta con un botón para el menú K,

accesos directos de programas y applets.

Figura 4: Desde este desordenado cuadro de

diálogo, configuramos el comportamiento de

KXDocker.

[1] KoolDock: http://ktown.kde.cl/

kooldock/

[2] KXDocker: http://www.xiaprojects.

com/www/prodotti/kxdocker/main.

php

[3] RPMs SuSE para KoolDock: http://

linux01.gwdg.de/~pbleser/

rpm-navigation.

php?cat=%2FUtilities%2Fkooldock/

[4] RPMs SuSE para KXDocker: http://

linux01.gwdg.de/~pbleser/

rpm-navigation.

php?cat=%2FUtilities%2Fkxdocker/

[5] Documentación de KXDocker: http://

www.xiaprojects.com/www/prodotti/

kxdocker/main.php?action=manual

RECURSOS

Page 78: Linux Magazine - Edición en Castellano, Nº 07

Si lo que queremos es volcar el

contenido de un CD de audio en

el disco duro de nuestro ordena-

dor, lo que necesitamos es una herra-

mienta que ofrezca la posibilidad de

extraer las pistas de un disco compacto y

escoger el formato en el que las quere-

mos guardar. Ahora bien, pese a que

Ross Burton (el desarrollador de Sound

Juicer) ha manifestado repetidamente

que su objetivo es el de conseguir una

aplicación que también reproduzca las

pistas del disco y así su programa sea

sustituto del ya anticuado reproductor de

CD, este objetivo no ha sido todavía

alcanzado en su aplicación. De momen-

to, pues, Sound Juicer sólo nos permite

hacer copia de discos, sin oír previamen-

te las pistas que lo componen.

78

Es posible que queramos hacer copias de seguridad de los CDs que tenemos, o que queramos guardar nues-

tras canciones en el ordenador, para después poder ir reproduciendo toda nuestra discoteca de forma aleato-

ria, agrupada por géneros, por artista… directamente desde el ordenador. En este artículo presentamos una

de las herramientas dedicadas a ello: Sound Juicer. POR ALBERTO MORA

LINUX USER • GTools

78 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Soundjuicer para la copia de CDs musicales

¡EXPRIME TUS CDS!¡EXPRIME TUS CDS!

Figura 3: Renombramos pistas de ser nece-

sario.

Figura 2: Cuadro que representa el tamaño

que ocupa la canción Badlands, de Bruce

Springsteen, según formato: WAV no compri-

mido, Ogg/Vorbis, MP3 y FLAC, respectiva-

mente.

Figura 1: Diagrama donde se refleja el proce-

so de extracción de las canciones de un disco

compacto.

Page 79: Linux Magazine - Edición en Castellano, Nº 07

79

GTools • LINUX USER

79Número 07W W W . L I N U X - M A G A Z I N E . E S

El proceso de extrac-

ción de pistas (que en

argot se conoce como

ripear, del verbo inglés

to rip) se describe en la

Figura 1: primero se

copian en el disco duro

del ordenador las pistas

en un formato de audio

no comprimido (tal

como se encuentra en el

CD), luego --y según el

algoritmo de compresión

que escojamos-- un segundo

programa comprimirá estos

ficheros para obtener los

resultantes. Los efectos de

esta compresión, según el for-

mato, quedan reflejados en la

Figura 2. Sound Juicer permi-

te obtener archivos en varios

formatos de audio: uno de

ellos no comprimido (con

extensión WAV), y tantos

comprimidos como plug-ins tengamos

instalados, típicamente: Vorbis u Ogg/

Vorbis (compresor lossy totalmente

libre), FLAC (compresor lossless total-

mente libre) y MP3 (compresor lossy par-

cialmente patentado, con lo cual el plu-

gin asociado no se proporciona en todas

las distribuciones de GNU/Linux).

Arranque del ProgramaSi tenemos instalado y debidamente con-

figurado gnome-volume-manager (el

módulo que se encarga de gestionar

automágicamente los dispositivos multi-

media y de almacenamiento), cuando

insertemos un CD en el

ordenador se arrancará

la aplicación selecciona-

da, que nos permitirá

reproducir directamente

el disco o extraer sus pis-

tas y copiarlas a disco

duro. En caso de que no

sea esta última opción la

que suceda, podemos

arrancar la aplicación

elegida desde el menú de

GNOME.

La Figura 3 corresponde a

la ventana inicial del progra-

ma Sound Juicer. En ella

vemos que el programa nos

ofrece la información relativa

a las pistas del disco que

tenemos insertado, y que

rellena gracias a la herra-

mienta de autodetección con

que cuenta, y que funciona

extraordinariamente bien en

la mayoría de casos. Caso que Sound

Juicer no etiquete correctamente el

disco, también podemos escribir, indivi-

dualmente, los campos correspondientes

al artista, título del disco y nombres de

cada pista.

Configurar el ProgramaOtro de los escenarios posibles se produce

cuando arrancamos Sound Juicer manual-

mente en un ordenador que disponga de

más de una unidad CD, y el programa esté

consultando una unidad incorrecta. En el

menú de configuración (Figura 4), dispo-

nemos de una opción que lista todas las

unidades que tenemos en nuestro ordena-

dor, para que podamos indicar en cual de

ellas acabamos de insertar nuestro disco.

Adicionalmente, en este menú de configu-

ración también podemos ajus-

tar una serie de preferencias

que serán de nuestro interés,

como son la carpeta

donde Sound

Juicer almacena-

rá los archivos

de música

generados, el

formato de

estos, o el

patrón que debe

seguir para nom-

brarlos (por ejem-

plo, “Artista - Nombre

de la canción.ogg”) basándose

en la información del que dispone.

Extracción de CancionesSound Juicer permite seleccionar que pis-

tas del CD queremos transferir al disco

(aquellas que tengan la casilla de la

izquierda seleccionada), con lo cual pode-

mos copiar todo el disco o sólo unas can-

ciones. Y… ¡ya está! Sólo nos queda pul-

sar el botón de ‘extracción’ y el programa

realizará la tarea que le hemos encomen-

dado: hacer la copia de las pistas seleccio-

nadas, como se muestra en la Figura 5.

Y ¡ya podremos disfrutar de la nuestra

música en nuestro ordenador sin necesi-

dad de rebuscar en el armario de los

CDs! �

Figura 4: Ventana de configu-

ración del programa.

Figura 5: Las barras

de progreso indican

el estado de la

extracción de las

pistas del disco.

[1] Página de Sound Juicer: http://

burtonini.com/blog/computers/

sound-juicer

[2] Página de Ogg/Vorbis: http://www.

vorbis.com

[3] Página de FLAC: http://flac.sf.net

[4] Página de GStreamer: http://

gstreamer.freedesktop.org

RECURSOS

Una vez tenemos un archivo de sonido

(generalmente se tratará de música, y

en formato WAV) en nuestro ordena-

dor, nos puede interesar comprimirlo

para que así ocupe un espacio menor.

Esencialmente, las técnicas de compre-

sión se catalogan según si esta com-

presión supone pérdida de la informa-

ción del archivo (aunque ésta no sea

audible por los humanos) o no. En el

primer caso, se dice que que el formato

es lossy, y son ejemplos de ello Ogg/

Vorbis [2] y MP3. En el segundo habla-

mos de formatos lossless, y incluye

FLAC [3]. El rendimiento de cada uno

de estos algoritmos queda representa-

do en la Figura 2.

Compresión lossless vs.compresión lossy

GStreamer [4] es una librería que de-

sarrolla la comunidad de software libre

para que sea el estándar en todo lo que

concierne al mundo del multimedia

(audio y vídeo), ya sea en funciones de

creación, edición o reproducción. Su

diseño basado en un sistema de plug-

ins, ofrece la posibilidad de añadir

fácilmente formatos (lo que técnica-

mente se conoce como codecs) a cual-

quier programa que utilice esta librería,

como es el caso de los dos programas

presentados en este artículo.

La librería GStreamer

Albert J. Mora (Barcelona, 1981)

es Ingeniero en Informática por

la Universitat Pompeu Fabra

(2003) y está estudiando Comu-

nicación Audiovisual (Universi-

tat Oberta de Catalunya). Sus

intereses se centran en ser feliz,

el medio digital (y las posibili-

dades que ofrece de gestión de

la información), los movimien-

tos sociales alternativos y -cómo

no- el software libre.

ELAUTOR

Page 80: Linux Magazine - Edición en Castellano, Nº 07

Mientras Windows ha dejado a

las aplicaciones añadir funcio-

nes al administrador de fiche-

ros Explorer por algún tiempo, KDE ver-

sión 3.2 fue la primera versión de KDE

que le proporcionó a los usuarios esta

capacidad. KDE 3.3 incluyó una versión

de Konqueror con un menú de contexto

separado para archivos de imagen.

Gracias a este menú, los usuarios

haciendo clic con el botón derecho del

ratón, pueden ver, rotar y escalar imá-

genes directamente desde dentro de

Konqueror.

El KDE Image Menu (Kim) de Charles

Bouveyron [1] le proporciona a esta

característica un paso más. Kim le facili-

ta más opciones de las que un usuario

Windows pueda esperar. El menú de

contexto permite a los usuarios conver-

tir, comprimir, rotar, recortar y enviar

por correo electrónico imágenes en

varios formatos mediante Konqueror. El

programa puede crear un clip MPEG a

partir de un directorio que contenga imá-

genes. Para todo ello, Kim utiliza la fun-

cionalidad de manipulación de imágenes

del programa ImageMagick [2] y de

Mpegtools [3]. Kim también integra

Kalbum [4], un programa KDE diseñado

para crear galerías Web y álbumes de

fotos.

Descarga e InstalaciónEl sitio web de Kim [1] incluye los

paquetes para Debian y Suse 9.1, así

como un fichero tar. Para este caso,

supondremos que se va a instalar desde

un fichero.

Comenzaremos la instalación copian-

do el fichero, kim_0.7.tar.gz, a cualquier

directorio. Luego descomprimimos el

fichero tecleando:

tar xvfz kim_0.7.tar.gz

Cambie al directorio que se ha creado en

este paso y teclee su para ser root (Suse

Linux tiene el comando sux para esto). A

continuación arranque el script de insta-

lación tecleando ./install.sh. Aparece

una ventana Kdialog, proporcionándole

las siguientes opciones:

• Standard

• With plugins

• Uninstall

Si quisiera instalar los plugins, necesita-

rá Mjpegtools, Digikam y Kalbum.

Digikam también requiere a su vez el

paquete kipi-plugins (Digikam 0.7.x) o

digikamplugins (Digikam 0.6.x). Estos

paquetes incluyen el script image2mpg

que Kim utiliza para convertir imágenes

a películas MPEG. Los usuarios de Suse

Linux necesitan instalar las Mjpegtools

desde [5], ya que el paquete original de

Suse no contiene un número importante

de programas. Los usuarios de otras dis-

tribuciones normalmente pueden insta-

lar el paquete Mjpegtools sin ningún

cambio, pero pueden tener alguna difi-

cultad con Digikam. Por ejemplo, Fedora

Core 3 no tiene ningún paquete de la

versión 0.7 de Digikam, aunque los

paquete de [6] y [7] con Digikam 0.6.2

pueden ejecutarse bajo Core 3.

El instalador no comprueba si los ins-

trumentos necesarios existen sobre su

sistema y esto puede significar que no

ocurre nada cuando usted selecciona un

elemento del menú específico. De hecho,

Kim no le proporciona un mensaje de

error si la herramienta no está presente.

El plugin le proporciona elementos

para lanzar Kalbum con las imágenes

seleccionadas y para desenfocar o nor-

malizar imágenes con Imagemagick.

Podemos añadir un par de entradas para

crear una presentación con o sin sonido

en formato MPEG. Como la versión 3.2

de KDE o superior tiene un menú desple-

80

Con un menú de servicio integrado en Konqueror denominado Kim, se puede modificar y manipular ficheros

de imágenes desde un menú contextual. POR PETER BUBENIK Y MARCEL HILZINGER

LINUX USER • Kim

80 Número 07 W W W . L I N U X - M A G A Z I N E . E S

Convirtiendo Imágenes con Kim

ADMINISTRADOR DEFOTOGRAFÍAS

Convirtiendo Imágenes con Kim

ADMINISTRADOR DEFOTOGRAFÍAS

01 [Desktop Action WebExp75800]

02 Name=Pal-Movie: 768x576 at 75 %

03 Name[de]=Film im Pal-Format : 768x576 bei 75 %

04 Icon=tgz

05 Exec=kimgsm_webexport 768x576 %D %U && images2mpg -T /tmp -d

06 `kdialog -- inputbox "Choose duration of each image (sec):" 3` -t

07 `kdialog -- inputbox "Choose transition speed:" 5` -o

08 `kdialog -- getsavefilename %d *.mpg` -i %U

Cuadro 1: Creación de una película formateada en PAL

Page 81: Linux Magazine - Edición en Castellano, Nº 07

81

Kim • LINUX USER

81Número 07W W W . L I N U X - M A G A Z I N E . E S

gable para la manipulación de imágenes,

Kim crea una copia de seguridad del

menú original cuando se instala, almace-

nando las entradas del menú en $KDE/

share/apps/konqueror/servicemenues/

antes de terminar borrando las entradas

originales.

En nuestros dos sistemas de laborato-

rio, una con Suse Linux 9.1 y otra con

Fedora Core 3, el instalador de Kim mos-

tró varios mensajes de error antes de

decir Good bye, que es la forma que tiene

Kim de indicar que la instalación se ha

completado correctamente. Desinstalar

Kim fue tan fácil como instalarlo y no

hubo mayores problemas utilizando el

programa.

Funciones PrincipalesEl menú principal de Kim (ver Figura 1)

tiene cuatro elementos. Compress and

Resize permite a los usuarios comprimir

y redimensionar múltiples imágenes a

la vez. Al igual que con los formatos

comunes, Kim también proporciona a

los usuarios las opciones de individual-

mente especificar el factor de compre-

sión y el tamaño. La tercera entrada del

menú es para la exportación Web, que

es muy útil para los lectores que quie-

ran realizar un mantenimiento de pági-

nas web. Por ejemplo, con un solo clic

de ratón, comprimiremos imágenes for-

mateadas con TIF de su cámara de 5

Megapixels a formatos compatibles con

el estándar de páginas web de 800x600

manejables con una ratio de compre-

sión del 75 por ciento.

Nótese que muchos pasos de manipu-

lación pueden ocurrir sin una entrada

de usuario o la característica deshacer.

Por ejemplo, si convertimos todas las

imágenes de una carpeta de 2030 x 1536

(3 Megapixels) a 640 x 480, inevitable-

mente perderemos las imágenes origi-

nales. Primero, hemos de asegurarnos

de crear una copia de seguridad de los

ficheros antes de empezar a manipular-

los.

La mejor forma de crear una copia se

seguridad es seleccionando Convert to

TIF desde el menú Convert and Rotate.

TIF es un formato muy útil para copias

de seguridad ya que soporta manipula-

ción libre de errores. Por el contrario, la

calidad de las imágenes JPEG se ve afec-

tada con cualquier cambio que realice.

Además de las opciones de conversión y

rotación, el menú también tiene una

entrada para reflejar imágenes.

El menú Plugins proporciona entradas

para crear una película MPEG (ver

Cuadro 2) o una galería Web con

Kalbum. El menú también tiene una

entrada para el suavizado de imágenes

(Gaussian Blur) y para la normalización

de colores (Normalize Image).

Finalmente, el menú Publication and

treatment tiene entradas que le permiten

a los usuarios enviar por correo electró-

nico imágenes, convertir imágenes a

blanco y negro o añadir un marco.

ExtensibilidadLas entradas del menú son simples fun-

ciones de la shell, así puede fácilmente

modificarlas o añadir nuevas entradas.

Por ejemplo, si a menudo necesita con-

vertir ficheros a formato 350 x 500,

puede añadir una entrada para esta tarea

en el fichero kimgsm_compressandresi-

ze.desktop. No hay necesidad de modifi-

car el fichero de script (bin/

kimgsm_webexport).

Si normalmente crea vídeos desde imá-

genes para verlos en su TV, a los lectores

de Europa les gustaría convertir las imáge-

nes a formato PAL (768 x 576 píxeles).

Otra vez, puede añadir una entrada al

menú Compress and Resize para hacer esto

y enlazarlo con la entrada para crear una

película. El Cuadro 1 muestra un ejemplo.

Kim no proporciona un indicador de pro-

greso para tareas complejas, pero el

comando top permite ver qué pasos está

realizando cada programa. Un sistema con

procesador Centrino de 1.4 GHz tardó

sobre un cuarto de hora para crear una

presentación con 30 imágenes. �

Figura 1: El menú principal de Kim aparece

cuando se hace clic con el botón derecho del

ratón en un fichero de imagen.

[1] Kim: http://bouveyron.free.fr/kim/

[2] ImageMagick: http://www.

imagemagick.org/

[3] Mpegtools: http://www.metzlerbros.

org/dvb/

[4] Kalbum: http://www.paldandy.com/

kalbum/

[5] Mjpegtools para Suse: http://

packman.links2linux.org/

[6] Digikam para Fedora: http://manta.

univ.gda.pl/~mgarski/RPMS/digikam/

[7] Digikamplugins para Fedora: ftp://ftp.

icm.edu.pl/vol/rzm8/linux-kderedhat/

kde-redhat/fedora/1/RPMS.stable/

digikamplugins-0.6.2-0.fdr.0.1.i386.

rpm

RECURSOSVamos a suponer que tiene un directorio con 100 imágenes JPEG con una resolución,

digamos de 2048 por 1536 píxeles (sobre 3 Megas). Le gustaría crear un vídeo MPEG de

sus 25 favoritas y grabar el resultado en un video CD. En circunstancias ideales, las 25

imágenes estarían en el formato de paisaje; pero también trabajará con el formato de

retrato. Seleccione las imágenes que necesite para el video (presione la tecla [CTRL] en

Konqueror para hacerlo). Haga clic derecho en una de las imágenes seleccionadas y

seleccione Actions | Kim - Convert and Rotate | Convert to PNG. Esta opción le dice a Kim

que cree copias del fichero JPG en formato PNG. Ahora queremos que Kim cree una pelí-

cula de estas copias. Seleccione las nuevas 25 PNGs que hemos creado, en vez de las

JPGs originales y seleccione Actions | Kim - Compress and Resize | Resize (640x480

pixels) del menú de contexto. Haga clic con el botón derecho en uno de los ficheros

seleccionados y seleccione Actions | Kim - Plugins | Make an Mpeg movie.

Kim muestra tres diálogos para exponerle la presentación con transiciones de fundido

entre las imágenes individuales y luego le pide que introduzca un nombre para el fichero

de la película. El script images2mpg genera un vídeo en unos minutos dependiendo de la

capacidad de su CPU. El programa no muestra un indicador de progreso, pero el hecho

de que la carga de CPU se acerque al 100 por ciento significa que Kim está trabajando

duro. Puede borrar lo ficheros fuente en formato PNG cuando haya terminado con la

película.

Cuadro 2: Creando Videos MPEG

Page 82: Linux Magazine - Edición en Castellano, Nº 07

Habiendo consultado a varioscolegas sobre la entrega anteriorde este artículo, me señalaron

que había una imprecisión en el vocabu-lario y la necesidad de reconducir la pre-sente entrega en respuestas hacia pre-guntas formuladas por enseñantes, sinentrar en clasificaciones de personassegún sus discapacidades.Proseguimos nuestro viaje, pues, hablan-do de la tiflotecnología.

Braille¿Tiene sentido seguir hablando de Braillecuando ya hemos conocido las posibili-

dades que ofrecen los lectores de panta-lla? Un mensaje a la lista de distribucióntiflonet[1] nos da la respuesta: es el últi-mo vínculo con la lectura y la escriturade los invidentes. En el lenguaje habladono hay ortografía, es más las palabras seconfunden en grupos fónicos regidos porel ritmo y la entonación.

Como sabemos, el código Braille con-siste generalmente en celdas de seis pun-tos en relieve, organizados como unamatriz de tres filas por dos columnas [2]¿Cómo se utiliza en informática?Mediante hardware específico, y paraevitar confusiones debemos empezar por

una breve clasificación: debemos distin-guir dispositivos de entrada (anotadoresbraille, procedentes de las máquinasPerkins, y que están siendo, por su pre-cio, sustituidos por PDAs) de los disposi-tivos de salida (terminales o líneas brai-lle e impresoras braille)[3].

La entrada no presenta dificultades:pueden utilizarse teclados especialesbraille, o bien adaptaciones de los tecla-dos ordinarios para escribir Braille. O elteclado completo y un programa conver-sor (en la lista de distribución de blinuxy sin buscar mucho he encontradonfbtrans, Turbo Braille, Duxbury for

82

Prometíamos al término el artículo anterior «examinar los sistemas alternativos de comunicación con el

ordenador (morse, braille), la disponibilidad o no de aplicaciones destinadas a los alumnos con discapaci-

dades, la accesibilidad en la web, y finalmente un cambio de enfoque para examinar todas estas herramien-

tas y especificaciones desde el punto de vista pedagógico». Es el momento de cumplir en la medida de lo

posible lo prometido. POR JUAN RAFAEL FERNÁNDEZ GARCÍA

LINUX USER • Educación

82 Número 07 W W W . L I N U X - M A G A Z I N E . E S

TIFLOTECNOLOGÍAAccesibilidad en 2005

TIFLOTECNOLOGÍA

Page 83: Linux Magazine - Edición en Castellano, Nº 07

83

Educación • LINUX USER

83Número 07W W W . L I N U X - M A G A Z I N E . E S

como gnopernicus

(imagen 1). Ladocumentaciónmuestra un ampliolistado de líneasbraille contempla-das. ¿Cómo funcio-na? Brltty reprodu-ce una porción rec-tangular de la pan-talla del ordenadorcomo texto Brailleen el dispositivo, ypermite utilizar loscontroles del dispo-sitivo para moversepor la ventanareproducida.

Brltty solamente funciona con conso-las y aplicaciones basadas en texto.¿Cómo lograr reproducir imágenes? Unarespuesta es imprimirlas en relieve, loveremos ahora; pero en una terminal conrefresco es posible también utilizar undesarrollo proporcionado por See by

Touch[5]. SeebyTouch proporciona laposibilidad de percibir imá-genes mediante el sentidotáctil. Presentado comoproyecto de fuente abiertaen marzo de 2004, consisteen una unidad movible porel usuario y controlada deforma paralela con dosbarras (foto 2). Esta unidadcontiene celdas braille que

hacen la función de matriz táctil.Dependiendo de su posición el usuariopercibe mediante el tacto partes de laimagen; moviendo la unidad el usuariopuede identificar distintas partes de lafoto o dibujo y hacerse una composiciónmental de la imagen.

Existen también las impresoras brai-lle[6], que imprimen en relieve (por esose llaman «embossers» en inglés). Seconfiguran en Linux como impresoras deagujas (cf. https://www.redhat.com/archives/blinux-list/2005-January/msg00053.html). Y una tecnología lla-mada «horno fúser» que permite la plas-mación en soportes especiales de dibujosde línea resaltada.

Morse

¿Por qué hablar aquí del código Morse?Porque es uno de los métodos de adapta-ción de la interrelación con el ordenadorque se han demostrado eficaces paraayudar a personas con necesidades espe-cíficas (figura 4). Y porque nos va a ser-vir para mostrar una de las paradojaspresentes en el mundo del software libre.

¿En qué medida es práctico y útil eluso de morse? En el artículo Morse Code

Demystified: a Powerful Alternative for

Access to AAC and Computers[7], deBruce Fleming et al., se señalan las ven-tajas del Morse frente a otras formasadaptadas de interacción con el ordena-dor (vid. la tabla 1). Al hablar de morsecomo herramienta de comunicación enatención a la diversidad debemos rompervarios prejuicios:

• Se cree que se tarda mucho enaprender (en realidad sólohacen falta de dos a cuatrohoras)

• Se dice que es pesado y difícilde usar (¿recuerdan lo que esaprender a escribir a máquinasin mirar?)

• Se piensa que es una mecanis-mo lento (en realidad son nor-males velocidades de 10 a 25palabras por minuto, más rápi-do que muchos escáners; hayusuarios que llegan a superarlas 30 palabras por minuto).

Ahora cambiamos de idioma: la comuni-cación mediante código Morse se llama«onda continua» (continuous wave), deahí los «cw» presentes en los nombres delas herramientas disponibles. Y es queen GNU Linux como de costumbre eltema del Morse está en manos de hac-

kers, en este caso de los peores, losradioaficionados (adviértase el tono iró-nico, por favor). Lo que hace que seaposible utilizar Morse con las más varia-das y complejas tecnologías, pero que nohaya una interfaz atractiva para niños

Linux). Las dificultades están en la sali-da. Una primera solución ya la vimos enel artículo anterior: los lectores de panta-lla. La alternativa son las llamadas «líne-as braille». Son dispositivos que seconectan por el puerto serie o usb alordenador, basados en un mecanismoelectro-mecánico capaz de representarcaracteres Braille mediantela elevación de puntos através de una superficieplana con agujeros hechosa tal efecto (cada célulacontiene ocho pequeñasagujas, por lo que la repre-sentación se realizamediante Braille de ochopuntos). Complejos y deelevado coste, suelen tener 20, 40 u 80celdas; también dispone de botones paradesplazar el texto y realizar otras funcio-nes especiales.

El uso de terminales braille bajo GNULinux pasa a bajo nivel por brltty[4],aunque puedan utilizarse interfaces

Figura 1: Configuración de una terminal braille con gnopernicus.

Ventajas Desventajas

Como método directo de selección es eficaz Con un ratón no es intuitivo

A medida que se coge soltura, el proceso Obliga al estudio previo del código

se vuelve automático

Requiere muy poco esfuerzo físico Se percibe como obsoleto o

pasado de moda

Es fácilmente adaptable a la diversidad Prejuicio generalizado de medio difícil

de los usuarios de aprender

Puede utilizarse desde una diversas El éxito de la comunicación depende al 100%

posiciones depende al 100% de la entrada

Requiere poco procesamiento visual de la información

Puede combinarse con otras adaptaciones

Es una excelente opción como medio de entrada de texto

Tabla 1:Ventajas y desventajas del Morse como herra-mienta de comunicación

Figura 2: SeebyTouch

para ver con el tacto.

Page 84: Linux Magazine - Edición en Castellano, Nº 07

similar a la del programa Preescritura

Morse, donde por ejemplo el punto sonpelotas y la raya son coches y el niñojuega hasta aprender a reconocer y aintroducir los caracteres como si tirara alplato. Tampoco he encontrado nadasimilar en los listados de actividadespara (j)clic, atnag, childsplay o gcom-pris.

La primera opción disponible en soft-ware libre para aprender Morse es utili-zar el juego (entiéndase juego como«juego para hackers» morse, de bsdga-mes. No es más que un conversor, peroes útil si el objetivo es aprender. En elcuadro 1 tenemos un ejemplo aclaratoriodel funcionamiento de morse.

La interfaz más amigable, créanme, esxcwcp, un programa tutor interactivo decódigo Morse para Xwindows (figura 3).Nos permite elegir varias modalidadesde práctica, incluidos el envío de carac-teres aleatorios, palabras al azar o carac-teres introducidos mediante el teclado.También permite utilizar el teclado o elratón para enviar Morse (creo que la fun-

ción se llama a Morsekeyer), y permite moni-torizar este código ymostrar los caracteresque ve.

¿Pero entonces nohay ninguna aplicaciónLinux que permita utilizar el Morse paramanejar el ordenador? Sí la hay: morseall

(existe paquete rpm). Es una aplicaciónpara gnome que permite controlar unaterminal pulsando con el teclado (unabreve pulsación del botón izquierdo es elpunto, una pulsación más larga o unclick con el botón derecho es la raya, elprograma presenta una ventana con laequivalencia de los caracteres en puntosy rayas como ayuda al usuario).

La opción preferible (aunque evidente-mente más cara) es usar hardware espe-cífico. Los fabricantes de Darci Too yDarci USB (recordemos la figura 4) hanrespondido afirmativamente a mi pre-gunta de si tenían constancia de su fun-cionamiento correcto bajo GNU Linux.

Otros Sistemas deInteracción y ComunicaciónEs el momento de replantearse el artícu-lo en la forma en que va a ser publicadoen la revista. El espacio prohíbe conti-nuar la exploración detallada de los sis-temas de interacción con el ordenador. Elespacio y el sentido común: el detalle delmaterial encontrado durante la fase depreparación lleva a huir de una aplastan-te acumulación de tecnologías querequerirá una plasmación web más pau-sada y nos aleja de nuestros objetivosprimeros. Podríamos discutir de lamadurez del OCR en GNU Linux yhablar de la existencia de aplicacionescomerciales y de otras libres (clara, gocr,ocrad) y de la utilidad de la tecnologíadel Reconocimiento Óptico de Caracterespara permitir que las personas con pro-blemas serios de visión puedan accedera libros e impresos y volcarlos ya comotextos en lectores de pantalla o líneasbraille, pero deberemos limitarnos aenunciarla.

O podemos hablar de las pantallas tác-tiles (touch screens), totalmente funcio-nales en Linux. http://www.tldp.org/

HOWTO/XFree86-Touch-Screen-HOWTO.

html, escrita por Christoph Baumann,nos da los detalles necesarios.

O de las tecnologías de dispositivoshápticos (relativos al tacto) bidimensio-

nales, que pueden utilizarse para ayudara usuarios con discapacidades visualesproporcionando ligera resistencia en losbordes de ventanas y botones de maneraque el usuario «sienta» la interfaz gráficao pueda de algún modo diferenciar textu-ras en las imágenes digitales. Esta tecno-logía ya es una realidad en ratones comoel iFeel Mouse y el IFeel Mouseman deLogitech.

O del resto de sistemas aumentativos yalternativos de comunicación, tablerosde conceptos…

Sobre la Ausencia deSoftwareEs verdad que el de las necesidadesespecíficas es un nicho de mercado muylimitado, donde el desarrollo de softwareestá subordinado al más lucrativo dehardware, y donde se dan característicaspropias de los primeros tiempos de estaera de lo digital. Recordemos la explo-sión de software de pequeñas empresasy de autores independientes durante losaños del DOS y Windows 3.1 y los pri-meros Mac. Multitud de autores crearony distribuyeron sus pequeñas aplicacio-nes educativas. La situación es similar,predominan las pequeñas empresas y losdesarrollos de uno o dos autores que sonprofesionales de la atención a la diversi-dad. El riesgo es que vuelva a caer en latrampa del software gratuito de fuentecerrada: un cambio en los estándares deprogramación o de interfaz de usuario oen los sistemas operativos utilizadosmayoritariamente hacen que ese softwa-re quede inutilizable.

Durante la fase de preparación de esteartículo he escrito a algunos de los másimportantes desarrolladores de lenguahispana de software específico para eltratamiento de las necesidades especia-les. Amablemente algunos han contes-tado y hemos discutido qué impedía elpaso de las licencias freeware con códi-go cerrado que tradicionalmente utili-zan a software libre. Sin citar nombressí citaré frases textuales, para analizarbrevemente la problemática. Afirmansimpatía y estar meditando seriamente

LINUX USER • Educación

84 Número 07 W W W . L I N U X - M A G A Z I N E . E S

01 $ morse casa

02 daw dit daw dit

03 dit daw

04 dit dit dit

05 dit daw

06

07 dit dit dit daw dit daw

08

09 $ morse -s casa

10 -.-.

11 .-

12 ...

13 .-

14

15 ...-.-

16

17 $ morse -d

18 -.-.

19 C

20 .-

21 A

22 ...

23 S

24 .-

25 A

Listado 1: El juego morse

Figura 3:xcwcp, programa para aprender Morse.

Page 85: Linux Magazine - Edición en Castellano, Nº 07

Educación • LINUX USER

85Número 07W W W . L I N U X - M A G A Z I N E . E S

sible confusión del derecho de reconoci-miento de autoría con licencia, permisosque el dueño de la obra concede sobre eluso, copia, distribución de la misma.

«¿Cómo se gana la vida la gente quedesarrolla el software libre?» Pues igual,trabajando. Como no existe la killer-application el modelo de negocio se cen-tra en encargos y en servicios, y se traba-ja sobre lo que han hecho otros y se sabeque otros trabajarán sobre lo que hace-mos nosotros. ¿No era esto el progreso?

Accesibilidad en la WebLa primera en la frente, y en pocas pala-bras: existe software de creación de pági-nas web que debería haber dejado deutilizarse hace mucho tiempo ya, si esque en algún momento tuvo una justifi-cación (estoy siendo diplomático), enfo-ques de la creación de páginas web queno conocen y anulan la separación entrecontenido y presentación. Y ahora expli-caré porqué.

El estándar html no lo ha creado unaempresa para hacerse con el mercado. Loha creado un consorcio de organizacio-nes (el W3C, hay oficina española http://

www.w3c.es/) por impulso de TimWerners-Lee, el inventor del protocolohttp y de la web. Fue creado en octubrede 1994 «para guiar la Web a su máximopotencial mediante el desarrollo de pro-tocolos comunes que promoviesen suevolución y asegurasen su interoperabili-dad». La principal tarea del consorcio es,pues, definir estándares (recomendacio-nes, en sus palabras) que funcionen concualquier sistema operativo y cualquiernavegador. Así a lo largo de los años hanido definiendo nuevas versiones del len-guaje de etiquetado html con el que estáescrita la WWW y han creado CSS, lashojas de estilo en cascada para definir lapresentación de las páginas.

Para los que nunca hayan examinadoel código de una página web quizás sirvaun breve ejemplo: esto sería un fragmen-to de texto html

<p>

Un puntoU

<strong>importante</strong>.

</p>

Hemos visto cómo se marca el comienzode un párrafo (<p>), su contenido yuna etiqueta semántica para señalar laimportancia de una expresión. Esto es

importante: en esta fase el autor debepreocuparse de la estructura semánticade su documento, que será independien-te de su salida impresa. ¿Y la hoja deestilo? Una forma sencilla sería

p {

text-indent: 1.8em;

text-align: justify;

color: black;

background-color: white;

font-family: verdana,sans-serif;

}

Se definen aquí las propiedades que ten-drá el párrafo (todos los párrafos deldocumento, no será necesario ir copián-dolas párrafo a párrafo): sangría, tipo deletra, su color y el de su fondo, justifica-ción…

¿Qué tiene que ver esto con la accesi-bilidad? Todo: su Iniciativa de

Accesibilidad Web (WAI) ha publicadolas Directrices de Accesibilidad para el

Contenido (http://www.w3.org/TR/

WCAG/), que no sólo están dirigidas aatender a las discapacidades sino a inde-pendizar el contenido del llamado «agen-te de usuario». Mediante hojas de estiloes posible definir distintas salidas o pre-sentaciones del contenido (el navegador,sí, pero también un sintetizador de voz,un teléfono móvil y un dispositivo insta-lado en el coche, etc.). Para ejemplobasta un párrafo.

p {

voice-family: paul;

stress: 20;

richness: 90;

cue-before: url("ping.au");

volume: x-soft;

azimuth: center-left;

}

Balance PedagógicoDebemos volver a nuestra pregunta ini-cial: ¿en qué grado está el software libremaduro para responder a las necesidadesde atención a todos nuestros alumnos,tengan las barreras que tengan y las difi-cultades que tengan? Si hemos dispuestoen esta segunda parte del artículo decuatro o cinco páginas, debemos llegar aconclusiones aunque sean provisionalesy abiertas a la discusión.

En primer lugar podemos concluir quela interfaz de usuario ha llegado a sumadurez en cuanto al soporte de la tec-

la posibilidad de dar el paso. ¿Qué pro-blemas ven?

«el primero de estos programas quedesarrollé (…) pusimos el código fuenteen Internet (…) Lo quitamos porque nosencontramos con un impensado proble-ma, consistente en que hubo personasque comenzaron a tomar el desarrollo,modificarlo sin un análisis con profesio-nales del área de la educación especial(lo cual era sumamente peligroso paraalgunos posibles usuarios, por una cues-tión de desconocimiento que, aunque nodebería existir, es real aquí), y luego pro-ponían venderlo. (…) “comerciantes”que ante un campo con relativamentepoco desarrollo como el de la tecnologíay las necesidades especiales, sólo quie-ren ganar dinero sin tener en cuenta lacalidad y potenciales riesgos que gene-ran.» Argumento de responsabilidadsobre la obra, totalmente independientede que sea libre o no.

«(…) el problema de que, ante unaregistración de la propiedad intelectualsólo en el país (como está hecho ahorapor cuestión de costos), personas confines exclusivamente lucrativos lo regis-tren en otro lugar y lo vendan, cosa quelos autores originales no queríamos.»Esto es un problema de protección delcopyright, no de licencia. Luego tambiénes independiente de que la obra sea libreo no.

«(…) el desarrollo en formato tenedor.Es decir si dejo, pongamos un ejemplo,el código de P libre y alguien hace uncambio en un sitio y otro alguien en otro,¿qué es lo que exactamente queda de P?Hasta ahora la solución que he adoptadoes que cualquier persona que precisauna modificación me la propone y yo lahago y es una manera de tener controla-do el programa». La habitual y compren-

Figura 4: Darci usb, dispositivo de acceso al

ordenador mediante morse.Morse.

Page 86: Linux Magazine - Edición en Castellano, Nº 07

nología de asistencia. Todo hardwareque funciona mediante el uso de contro-ladores estándar o abiertos funcionarácon GNU Linux. Y con un enfoquecorrecto: no hacen falta aplicacionesespecíficas de teclados virtuales, emula-ciones de teclado o ratón, etc., porque esel sistema operativo o el entorno integra-do (Gnome, KDE) los que se ocupan deello; tampoco es una tarea de la quedeban ocuparse las aplicaciones específi-cas, salvo cumplir unas reglas en su des-arrollo (lo que equivale a seguir adecua-damente una API y unas instrucciones).Por tanto no hace falta desarrollar juegosespecíficos para jugar mediante sóloteclado o sólo joystick o sólo switches,sino que cualquier juego debe poder serjugado mediante el dispositivo que elijael usuario.

Existen distribuciones específicaspara por ejemplo personas con discapa-cidades visuales, caso de Oralux(http://www.oralux.org/). Aunque com-prendo su utilidad, entiendo que lo quehay que hacer es desarrollar las distri-buciones generales para que puedanser utilizadas por todos, una distribu-ción específica nunca podrá mantener-se al día y ser completa. En este sentidono se ha solucionado el segundo pro-blema, la configuración del soporte deasistencia para cada persona: yo mismohe tenido que bucear en la documenta-ción y en las profundidades del entornopara poder configurar algunas opcio-nes. Sugiero la creación de perfiles quede forma sencilla y autónoma permitanla configuración y la adaptación a lascapacidades de cada uno del entornode trabajo (y de juego y de comunica-ción y aprendizaje).

En consecuencia deja de ser tan cier-to que no existan aplicaciones específi-cas[8]: en primer lugar porque aquellasaplicaciones que no dependen directa-mente de la presencia de determinados

controladores de hardware pueden fun-cionar perfectamente con wine (figura5) o dosemu o incluso con máquinasvirtuales qemu, sino porque además lasaplicaciones educativas libres «genera-listas» pueden ser utilizadas tras unacorrecta configuración de la interfaz deusuario. Sí es verdad que hay que tra-bajar en el desarrollo de estos núcleosde aplicaciones, jclic, atnag, wims,childsplay, gcompris, leterrier, para dis-poner de actividades y juegos de fami-liarización con el hardware adaptativopor un lado y para proporcionar ejerci-cios y prácticas de todos los nivelescognitivos y para todas las capacidades.Este es un tema que no podemos pasarpor alto, porque es la clave del éxito yel sentido del software educativo, tantolibre como privativo.

Y en el Próximo NúmeroExaminaremos qué se esconde detrás delproyecto ATNAG, del francés GeardSellès: una herramienta de autor, desti-

nada a crear juegos y actividades desti-nados a educación infantil, pero tambiénun conjunto de actividades y un sistemade planificación y seguimiento del traba-jo con los alumnos. Veremos en concretocómo se está utilizando por el equipo detrabajo que lidera María DoloresAlmansa en el Colegio Sagrado Corazónde Palencia y nos servirá para ver cómose aplica la filosofía del software libre enla realidad de las aulas. �

LINUX USER • Educación

86 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] Citado en Rafael Sánchez Montoya, Ordenador y discapacidad, 2ª edic., ed. CEPE,

Madrid 2002, página 158.

[2] Existen numerosas ampliaciones y adaptaciones del código Braille original. Ha sido

ampliado a un código de ocho puntos (Sánchez Montoya le llama braille computeriza-

do), de tal manera que una letra individual puede ser codificada con una sola celda, lo

que permite 256 combinaciones posibles codificadas según el estándar Unicode. Y

disponemos de extensiones para representar fórmulas matemáticas o música. O (lo

encuentro en http://www.tcts.fpms.ac.be/synthesis/w/) un Braille de grado II utilizado

desde 1829 en el que existen contracciones y abreviaturas, con un ahorro del 30 al

50%. El documento que cito lo defiende con ventaja comparativa respecto a los algo-

ritmos de predicción de palabras (los vimos en el artículo anterior): frente a estos y la

necesidad de comprobar y corregir la predicción, es fácil aprender de memoria las

abreviaturas.

[3] Más información en http://cidat.once.es/, en http://snow.utoronto.ca/technology/

products/refreshable-braille.html y claro, en la wikipedia: teclados Braille (Perkins

Brailler, máquinas Perkins); Braille Notetakers: anotadores electrónicos, portátiles

Braille; líneas Braille = Terminales Braille = (refreshable) Displays Braille; Impresoras

(embossers) Braille.

[4] http://dave.mielke.cc/brltty/. Hay manual en español: http://rt001pvr.eresmas.net/

Manual-1.html.

[5] http://see-by-touch.sourceforge.net/index_.html.

[6] http://www.utoronto.ca/atrc/reference/tech/brailleemb.html. Sobre hornos fúser cf.

http://www.cepmalaga.com/actividades/Interedvisual/recursos_didacticos_adaptados.

htm.

[7] http://www.csun.edu/cod/conf/2003/proceedings/71.htm, recogido en las Actas de la

Conferencia de 2003 de la Technology and Persons with Disabilities Conference de la

Universidad del Estado de California Northridge.

[8] Con un matiz: es verdad que no existen aplicaciones para logopedia, o para el aprendi-

zaje de los sistemas pictográficos de comunicación por poner dos ejemplos. Pero la

tecnología y el conocimiento están ahí, y las aplicaciones gratuitas también, es cues-

tión de que las dos tradiciones se encuentren.

RECURSOS

Juan Rafael Fernández García es

profesor de educación secunda-

ria y tiene una larga experiencia

en la traducción y documenta-

ción del software libre. Ha sido

coordinador de uno de los

Centros que participan en la

experiencia andaluza de integrar

las TIC en la educación y actual-

mente trabaja como asesor de

formación del profesorado.

EL AUTOR

Figura 5: Una aplicación específica reutiliza-

da bajo wine.

Page 87: Linux Magazine - Edición en Castellano, Nº 07

Si trabajamos desde la línea de comandos y necesitamos algo en Internet, o bien si sólo queremos convertir

un archivo HTML en un ASCII perfectamente formateado, podemos probar un navegador en modo texto.

POR HEIKE JURZIK

87

Línea de Comandos: Navegadores• LINUX USER

87Número 07W W W . L I N U X - M A G A Z I N E . E S

Navegadores desde la línea de comandos: Lynx, Links y w3m

NAVEGAR EN CONSOLA

controla completamente desde teclado.

La tabla 1 muestra los atajos de teclado

más importantes.

Podemos modificar el comportamiento

de Lynx especificando las opciones al

hacer la llamada al navegador, o bien

cambiando las opciones en el cuadro de

diálogo, que aparece al presionar [O]. Si

preferimos que no se nos pregunte acer-

ca de aceptar Cookies, podemos desacti-

var esa opción mediante:

lynx -accept_all_cookies

Para fijar esta configuración como per-

manente, bajamos por el cuadro de

diálogo con la flecha hacia abajo hasta

que encontramos la entrada de las

Cookies, y presionamos entonces la fle-

cha derecha. En el menú que aparece

podemos seleccionar ignore, ask user

(opción por defecto) y accept all (véase

Figura 1). Para asegurarnos de que

Lynx no se olvidará de esta configura-

ción al cerrar el programa, necesitamos

guardar los cambios (antes debemos

confirmar pulsando en Submit o en

Accept Changes). Para hacer esto, mar-

camos la opción Save options to disk

pulsando la tecla [Enter]. Lynx guarda

la configuración de usuario en un

archivo oculto llamado ~/.lynxc, que

podemos modificar con un editor de

texto.

Podemos usar la opción -book para for-

zar a Lynx que se inicie con nuestros

favoritos.

Para páginas protegidas con contrase-

ña, o bien introducimos el nombre y

contraseña interactivamente, o bien pro-

porcionamos las credenciales al ejecutar

el navegador:

La navegación Web en modo texto

puede parecer el último recurso,

pero un navegador de este tipo

puede ser la herramienta perfecta en

ciertos casos. En el artículo de este mes

relativo a la línea de comandos, revisare-

mos los navegadores sin interfaz gráfica

Lynx [1], Links [2] y w3m [3].

LynxPodemos ejecutar Lynx en una terminal

tecleando lynx, o si lo preferimos así,

mediante el paso de la URL o archivo

local HTML en el momento de realizar la

llamada, es decir:

lynx www.linux-magazine.com

Por defecto, Lynx muestra un resumen

de los atajos de teclado más comunes en

la parte inferior de la pantalla. Lynx se

Page 88: Linux Magazine - Edición en Castellano, Nº 07

lynx -auth=nombre:contraseñaU

www.url.es

Si vamos a usar Lynx para ver páginas

HTML locales, podemos indicarle al

navegador que no siga enlaces externos

mediante la opción -localhost. También

podemos usar nuestro editor favorito en

Lynx. Si tecleamos lo siguiente:

lynx -editor=vim

podemos teclear [E] para cargar la pági-

na HTML que estamos viendo en ese

momento en el editor Vim. Al cerrar el

editor volveremos automáticamente a

Lynx, dónde podremos recargar la pági-

na presionando [Ctrl-R].

Para asegurarnos que Lynx recuerda

nuestro editor favorito la próxima vez

que usemos el navegador, presionamos

la tecla [O] de nuevo para acceder al

cuadro de diálogo, donde podemos intro-

ducir el nombre de nuestro editor favori-

to en en cuadro Box.

De Lynx a LinksEl segundo navegador en modo texto,

Links, nos permite el control por teclado

y por ratón. Para ejecutarlo tecleamos

links y nuevamente podemos especificar

una URL o un archivo local. Si presiona-

mos [Esc] o pulsamos en el borde supe-

rior de la ventana con el ratón, Links nos

mostrará un menú que podremos mane-

jar mediante ratón o teclado. Existen ata-

jos de teclado para la mayoría de las

entradas del menú, y es bastante reco-

mendable aprenderse estos atajos y dejar

el ratón quieto en su alfombrilla. La

Tabla 2 muestra un resumen de los

comandos más comunes. Como el ratón

se usa para controlar el programa, no

podemos seleccionar una porción de

texto y mandarla al portapapeles de la

manera habitual. En vez de esto, tene-

mos que dejar presionada la tecla [Shift]

mientras seleccionamos el texto.

El menú Setup nos permite configurar

el navegador. Desde el menú Setup

podremos configurar el idioma, teclado,

opciones del terminal (color, cursor, etc),

tamaño de la caché y similares. La confi-

guración personal se guarda en un archi-

vo llamado links.cfg en el directorio

~/.links. De nuevo, links.cfg es un

archivo de texto que podemos modificar

usando un editor.

Links renderiza las tablas y los marcos

mejor que Lynx, e incluso podemos

especificarle la manera de renderizar

tipos específicos de archivos. Por ejem-

plo, para mostrar imágenes PNG con el

programa display (sólo funciona bajo X

Window), debemos definir previamente

LINUX USER • Línea de Comandos: Navegadores

88 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[Shift--] o [H] Llama a la ayuda de Lynx.

[Q] Cierra el programa tras preguntar.

[Shiftt-Q] Cierra el programa sin preguntar.

[Flecha Arriba], Desplaza hacia arriba o hacia abajo por los enlaces.

[Flecha Abajo]

[Pg Up], Desplaza arriba o abajo una página.

[Pg Dn]

[Flecha Derecha] Sigue un enlace.

o [Enter]

[Flecha Izquierda] Vuelve a la última página.

[K] Muestra una lista de comandos de teclado disponibles.

[M] Vuelve a la página de inicio. Confirmamos presionando [Y].

[G] Abre un cuadro de diálogo donde podemos teclear una nueva URL.

Confirmamos presionando [Enter].

[Shift-G] Va a la última URL, permitiendo modificarla.

[L] Muestra todos los enlaces disponibles en el documento actual.

[P] Opciones de impresión: Guarda el documento en un archivo local, lo envía por

email o lo envía directamente a impresión.

[D] Guarda el archivo (con todas las imágenes).

[A] Añade a favoritos bien la página que vemos ([D]) o bien la página cuyo enlace

tenemos bajo el cursor ([L]).

[V] Abre un administrador de favoritos.

[Ctrl-A] Vuelve al comienzo de la página.

[Ctrl-E] Va al final de la página.

[Ctrl-R] Recarga la página.

[Shift-7] (/) Comienza la búsqueda.

[Retroceso] Muestra el historial.

[O] Abre el cuadro de diálogo de configuración de Lynx.

Tabla 1: Controles de Lynx

[Esc] Muestra/esconde la barra de menú.

[Q] Cierra Links - preguntando antes de salir.

[Shift-Q], [Ctrl-C] Cierra el programa sin preguntar.

[Flecha Arriba], Navega delante y detrás a través de los enlaces.

[Flecha Abajo]

[Pg Up], Desplaza una página arriba/abajo.

[Pg Dn]

[Flecha Derecha] Sigue un enlace.

[Flecha izquierda] Vuelve un paso en el historial.

[G] Abre una línea donde introducir una nueva dirección.

[Shift-G] Abre la misma línea pero mostrando la última dirección visitada, permitiendo

modificar la dirección.

[D] Guarda una copia local del documento en nuestro ordenador.

[Shift-7] (/) Búsqueda hacia delante en el documento actual.

[Shift--] (?) Búsqueda hacia atrás en el documento actual.

[N] Va hasta la siguiente coincidencia.

[Shift-N] Vuelve a la anterior coincidencia.

[Shift-0] (=) Abre una ventana con información de la URL, tamaño, juego de caracteres,

servidor Web, etc.

[\\] Muestra el código fuente del documento, pulsando de nuevo la tecla volvemos

a la vista del navegador.

[A] Añade a favoritos.

[S] Abre el administrador de favoritos.

[Ctrl-R] Recarga el documento.

Tabla 2: Comandos de teclado para Links

Page 89: Linux Magazine - Edición en Castellano, Nº 07

Línea de Comandos: Navegadores• LINUX USER

en menú Setup / File extensions para

definir los tipos de extensiones para el

tipo de archivo que acabamos de definir.

Añadimos las posibles extensiones del

archivo en Extensions como una lista

separada por comas, por ejemplo:

png,PNG

De nuevo tecleamos image/png en

Content-Type, confirmamos seleccionan-

do OK y guardamos los cambios. A partir

de este momento, cada vez que pulse-

mos con el botón derecho sobre una

imagen PNG que se muestra como

[IMG], podemos seleccionar View image

o presionar el botón de flecha derecha

para abrir un cuadro de diálogo que nos

permite abrir, guardar o mostrar (el códi-

go fuente) del archivo.

Simplemente w3mEl tercer navegador de nuestra lista es

w3m. A diferencia de Links y Lynx, w3m

sí aguarda que le pasemos una dirección

Web o una ruta local. Si no se la suminis-

tramos, w3m simplemente mostrará una

lista de opciones en nuestra ventana.

De nuevo, el navegador soporta con-

trol por teclado y por ratón (véase Tabla

3 para un resumen de los atajos de tecla-

do) y de nuevo necesitamos mantener

pulsada la tecla [Shift] para seleccionar

porciones de texto con el ratón.

La posibilidad de abrir múltiples pági-

nas Web usando el atajo de tecladdo

[Shift-T] y navegar pasando de una pes-

un tipo de archivo en Setup /

Associations / Add. Para ello, introduci-

mos un nombre en el campo Field, por

ejemplo PNGs. Fijamos Type a

image/png, y finalmente definimos en

Program la aplicación que usará Links

para mostrar los archivos PNG. Después

de completar estos pasos, usamos Add

Figura 1: Cuadro de diálogo para configurar Lynx.

Page 90: Linux Magazine - Edición en Castellano, Nº 07

taña a otra es una característica realmen-

te interesante. Si presionamos { iremos a

la siguiente pestaña, mientras que con }

volvemos a la anterior. Si presionamos

[Esc-T] (o [Alt-T] en algunos escritorios)

se abre un cuadro de selección de pesta-

ñas, y con [Ctrl-Q] eliminamos la pesta-

ña actual (véase Figura 2).

Los usuarios de w3m necesitarán con

seguridad abrir el cuadro de configuración

presionando [O] y realizar los cambios

que necesiten. w3m proporciona un gran

número de opciones de configuración, y si

las configuramos a nuestro gusto mejora-

remos enormemente la navegación.

Trucos y Más TrucosLos navegadores en modo texto brillan

en todo su esplendor en conjunción con

otros programas. Si nuestro editor favori-

to es Vim, por ejemplo, sólo necesitamos

añadir una simple

línea a la configura-

ción del archivo

~/.vimrc para confi-

gurar nuestro navega-

dor favorito como

visor HTML.

Podemos asignar

una tecla para lanzar

el navegador o definir

un nuevo comando.

Por ejemplo, necesi-

taremos añadir la

siguiente línea a

~/.vimrc para ejecu-

tar Lynx cada vez que presionemos [F2]:

map <F2> :!lynx %<CR>

De esta manera podemos iniciar el nave-

gador mientras trabajamos con Vim.

Para lanzar el navegador desde Vim, pre-

sionamos [Esc] para pasar al modo

comando y tecleamos :View

Es igualmente muy sencillo integrar los

tres navegadores en Mutt [4]. Para ver

adjuntos HTML directamente en nuestro

cliente de correo, añadimos la siguiente

línea en el archivo ~/.mail-cap:

text/html; links %s

Añadimos la ruta de nuestro archivo

mailcap al archivo de configuración

~/.muttrc:

set mailcap_path = ~/.mailcap

La próxima vez que recibamos un correo

formateado como HTML, sólo tendremos

que presionar [V] (para la opción view

attachments) y seleccionar el adjunto

HTML presionando la tecla [Enter].

FormatosLos tres navegadores comentados en este

artículo usan la opción del comando

dump para convertir páginas HTML a

ficheros de texto ASCII convenientemen-

te formateados. Los siguientes coman-

dos:

lynx -dump /home/huhn/ U

lynx.html | less

hacen que el navegador Lynx formatee el

documento y llame al paginador less

para mostrar el documento pantalla a

pantalla. �

LINUX USER • Línea de Comandos: Navegadores

90 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] Lynx: http://lynx.isc.org/

[2] Links: http://links.sourceforge.net/

[3] w3m: http://w3m.sourceforge

[4] Mutt: http://www.mutt.org/

RECURSOS

Figura 2: w3m ofrece navegación mediante pestañas.

[Shift-H] Llama a la ayuda.

[Q] Cierra w3m tras pedir confirmación.

[Shift-Q] Cierra w3m sin pedir confirmación.

[Space], [B] Desplaza una página arriba / abajo en el documento actual.

[G], [Shift-G] Va a la primera / última línea del documento.

[Tab] Va al siguiente enlace.

[Esc], [Tab] Vuelve al enlace anterior.

(o [Alt-Tab])

[Return] Sigue el enlace.

[Shift-B] Vuelve a la página anterior.

[U] Muestra la URL del archivo actual en la esquina inferior izquierda de la ventana.

[Shift-U] Abre un cuadro de diálogo donde los usuarios pueden introducir una nueva URL.

[Shift-7] (I) Búsqueda hacia delante por palabra clave.

[Shift-?] (?) Búsqueda hacia detrás por palabra clave.

[V] Alterna en navegador entre vista normal y vista de código fuente.

[Esc], [A] (o [Alt-A]) Añade un documento a la lista de favoritos.

[Esc], [B] (o [Alt-B]) Muestra los favoritos.

[Shift-R] Recarga la página.

[S] Abre un historial de páginas visitadas recientemente.

[Esc], [S] (o [Alt-S]) Guarda el archivo a disco.

[O] Abre un cuadro de diálogo para la configuración personal.

[E] Abre la página en el editor (definido en el cuadro de configuración).

Tabla 3: Controles de teclado de w3m

Heike Jurzik

estudió Alemán,

Informática e

Inglés en la Uni-

versidad de Colo-

nia, Alemania. Descubrió Linux

en 1996 y quedó fascinada con

la potencia de la línea de coman-

dos desde ese momento. En su

tiempo libre puede que la

encuentre en clases de folclore

irlandés, o visitando Irlanda.

LAAUTORA

Page 91: Linux Magazine - Edición en Castellano, Nº 07
Page 92: Linux Magazine - Edición en Castellano, Nº 07

La instalación empezó a las 4:30

pm. A las 4:45 las cosas no podían

ir peor…

Windows no pitaba, sólo habíamos

conseguido una instalación parcial de

Linux y no había conexión a la red para

consultar los errores ni descargar las

herramientas para corregirlos. Un desas-

tre. Cuando las cosas se ponen así de

mal, sólo queda una solución: Extensión

520. Alberto.

Flashback: 24 horas antesPerfil de la víctima: Luis, 41 años, dise-

ñador gráfico. Nivel de proficiencia

informática: usuario final. Con semejan-

te panorama ¿a quién se le ocurre acon-

sejar que se instale Linux? Pero no lo

puede resistir. Hay un personajillo chovi-

nista del Software Libre a ultranza en mi

cerebro, quiero pensar que vestido con

los hábitos blancos de los angelitos de

los dibujos animados, que me obliga de

vez en cuando a decir aquello de “Pues

con Linux eso no pasa”.

“Pues con Linux eso no pasa”. Luis

andaba renegando de la cantidad de

Trucos

92 Número 07 W W W . L I N U X - M A G A Z I N E . E S

El orden de las particiones sí altera al producto

RM -FR /

En el día a día del usuario y desarrollador de Linux, nos topamos con problemas de toda suerte e índole, que

se resuelven con o mucha, poca o ninguna ayuda de la comunidad, con Google, Dogpile, o Usenet, pero

siempre con dosis de imaginación e intuición. Esta sección reúne los mejores soluciones para el beneficio de

todos. Soluciones que no se encuentran googleando o que se encuentran, pero o que son insatisfactorias,

incompletas o directamente mal planteadas. Este mes Alberto Planas y Paul C. Brown lidian con un Windows

2000 en una máquina de arranque dual que se niega a atender a razones.. POR PAUL C. BROWN

Page 93: Linux Magazine - Edición en Castellano, Nº 07

Trucos

93Número 07W W W . L I N U X - M A G A Z I N E . E S

héroe que lucha en pro del software

libre, por cirujano tipo Urgencias, dis-

puesto a improvisar una traqueotomía

con el canutillo de un bolígrafo.

“Destornillador” ordena. Desmonta la

carcasa del ordenador de Luis veloz y

con pericia. Uno casi espera encontrar

un corazón fibrilando entre los cables y

placas. “Pinzas”. Quita un jumper, cam-

bia la posición de otro. Vuelve a montar

la carcasa con tres precisos movimientos

de muñeca.

“Se recuperará” informa mientras se

quita guantes y mascarilla. “He puesto el

reproductor de esclavo de la grabadora.

Los dos estaban como maestros y con-

fundían a la placa base. Que duerma.

pasaré por la mañana”. Se despide cho-

cando las manos a todos los atónitos pre-

sentes.

“Sigamos” digo suspirando. Echo una

rápida ojeada al reloj. No vaya a ser que

Alberto se vaya a casa y me deje colgado

con el marrón.

La instalación propiamente dicha va

como la seda. Utilizamos el modo exper-

to para poder configurar a nuestro gusto

particiones y hardware. El sujeto, mues-

tra un disco duro de 80 gigas, con dos

particiones afectadas por sendos casos

terminales de Windows y otro sano dedi-

cado a datos. Hemos de salvar al menos

uno: la operación tratará de sustraer la

partición vfat de 20 Gigas con Windows

98 y sustituirlo por uno ext3 Linux y un

swap. Por algún oscuro motivo, la fami-

lia desea que se respete la partición con

Windows 2000, a pesar de que se le

informa que ésta puede ser extraída sin

que peligre la vida del paciente. Pero la

familia insiste. Motivos religiosos, ale-

gan.

Lo dicho. A las 4:45, llega el momento

de la verdad: reiniciamos. Aparece el

menú de GRUB. El paciente parece esta-

ble y en buen estado de salud. El arran-

que de Linux es impecable: Mandrake

muestra sus colores en toda su gloria.

Una vez se ha comprobado que Linux da

la talla, pasamos a ver si ese putrescente

tumor (es decir, la partición Windows)

sigue en su sitio.

Sudor FríoParece que sí. Empieza el arranque, pero

de repente…

Error: NTOSKRNL.EXE isU

missing or corrupt

Lo pri-

mero

que

haces es

no creérte-

lo. A fin de

cuentas

¿quién puede

fiarse de un

error de

Windows?

Knoppix

en ristre,

registras la

partición NTFS y,

ahí, bajo

WINNT/SYTEM32

aparece el fichero NTOSKRNL.EXE,

intacto. Bien. Lo que sospechaba. Algo

ha pasado para que Windows no lo

encuentre en el arranque.

Ahora llega el momento de pensar

detenidamente y con calma, cosa impo-

sible, claro, por que miras a Luis y está al

borde de la apoplejía. El confiametro ha

bajado de golpe a -10º y el pánicometro

amenaza con romper las barreras conoci-

das. Y eso que un examen de su disco

duro nos dice que todo está bien, que su

partición Windows 2000 está intacta.

Pero explícale eso a él. Además, la

máquina la comparte con su esposa, y ni

nos podemos imaginar la bronca que le

propinará Coral cuando descubra que

todos sus datos son irrecuperables. O

esto es lo que se imagina Luis. ¿Qué

puede haber ocurrido?

Windows 2000 estaba ubicado en

hda2 (NTFS). Bueno de hecho sigue ahí,

pero en la particionamiento, hda1

(donde estaba W98) ha desaparecido,

siendo sustituido por hda5 (ext3) y hda6

(swap). Um. Windows decide ignorar la

existencia de estas particiones. Parece

obvio que para Windows 2000 la parti-

ción anterior simplemente ha desapare-

cido y ahora se halla en la primera parti-

ción.

Veamos que nos cuenta San Google

(ver [1]). ¡Ajajá! Dice…

“Fichero boot.ini corrupto:

Este problema a menudo surge cuando

el fichero boot.ini o falta o no está correc-

tamente configurado. Ocurre cuando el

usuario a añadido o eliminado un siste-

ma operativo del ordenador […]. Hay que

asegurarse de que la línea que apunta al

sistema operativo y si dispositivo y parti-

ción están correctamente configurados en

virus, spyware y troyanos pululando por

su máquina que hacían que el arranque

fuese un martirio, la inicialización del

entorno gráfico una tortura y la ejecu-

ción de las aplicaciones un sinvivir.

Inmediatamente, el otro personaje que

conforma mi conciencia, el ying al yang

del angelito fanático de mi cerebro, un

diablillo que vive en mi vientre, me

clavó su tridente profundamente en

alguna parte sensible de mi duodeno.

¡Ay!

”¿Estás bien?” pregunta Luis, solícito.

“Perfectamente,” le aseguro “pues debe-

rías plantearte instalarte Linux”. Estoy

perdido. He puesto el piloto automático

y el ángel se hace cargo de todo lo que

digo. Empiezo a enumerar todas las ven-

tajas de Linux, su seguridad, su estabili-

dad, su configurabilidad, a este bienin-

tencionado, inteligente, pero informáti-

camente simplón artista de los pinceles y

los lápices.

“Pero ¿qué haces?” grita el diablillo,

retorciendo el tridente salvajemente en

mis tripas. “Te estás buscando la perdi-

ción. Como algo salga mal, que saldrá, lo

habrás perdido para siempre”. Pero yo ya

había cogido carrerilla y me era imposi-

ble parar. “Si quieres, me traes tu máqui-

na y te ayudo con la instalación”. Y

entonces fue cuando me di cuenta de

que, de los dos, el diablillo es el que

tenía razón.

Flashforward: HoyHemos pasado por el DVD que no arran-

ca. Esa fue la primera llamada a

Alberto. A menudo veo a los acólitos

que pretendo ganarme como un par de

termómetros. Uno mide su confianza en

mi y, normalmente va bajando. Estoy

contento si no se llega al punto de con-

gelación. El otro mide el nivel de pánico

y va subiendo a medida que se multipli-

can los mensajes de error sobre la irre-

cuperabilidad del sistema, los pantalla-

zos en negro y las preguntas tipo

“Eeeh… te acordaste de hacer copias de

seguridad ¿verdad?”.

En cuanto a Alberto, creo que tiene un

salvapantallas con un pingüino con las

alas desplegadas sobre un círculo blan-

co, a lo Batman, conectado a la salida

del teléfono. Cuando un usuario en apu-

ros llama, aparece el pingüino, Alberto

se pone sus bat-camiseta con Tux y llega

corriendo a resolver cualquier bat-

entuerto. Cuando llega, cambia de super-

Page 94: Linux Magazine - Edición en Castellano, Nº 07

las secciones de [cargador de disco] y [sis-

temas operativos]…”

Stupendo. Veamos el ficherito de

marras:

$ cat /mnt/windows/boot.ini

[boot loader]

timeout=5

default=multi(0)disk(0)rdisk(0)U

partition(2)\WINDOWS

[operating systems]

multi(0)disk(0)rdisk(0)U

partitions(2)\WINDOWS=U

"Microsoft Windows XPU

Home Edition" /fastdetect

Y ahí lo tienes. La partición a la que

apunta es el 2, pero es que hda2 sigue

siendo hda2 y si no lo es para Windows,

¿qué narices es ahora? Y además, estan-

do ubicado en NTFS ¿cómo podemos

cambiarlo? Desde Linux, puedo verlo,

pero sólo eso: el driver actual es de sólo

lectura.

He llegado al límite de mis conoci-

mientos. Levanto el auricular y marco el

520…

Pingüinoman al Rescate“Podemos intentar restaurar el cargador

de disco original en el MBR” sugiere

Alberto. Parece una buena idea, pero

hemos de introducirnos en el modo res-

cate de Windows y ni Luis ni yo tenemos

un disco para hacerlo. Pero

Alberto es el hombre

de los mil recursos,

desaparece en su

despacho durante

un breve intervalo

y reaparece con un

CD de Windows

original en la

mano. Es increí-

ble lo que tiene

este hombre den-

tro de cuatro

paredes aparen-

temente desnu-

das. Ante mi

mirada inte-

rrogadora,

me dice,

casi avergonzado, “a veces tengo que

administrar máquinas Windows”.

Arrancamos el CD de Windows en

modo rescate. Consultamos el famoso

“How to Remove Linux and Install

Windows XP” [2] – que, a pesar de los

pesares, no es tan ofensivo como sugiere

el título) en el sitio de Microsoft y, casi a

tontas y a locas, intentamos aplicar un

poco de la sabiduría que destila.

Nos saltamos la parte de quitar parti-

ciones e intentamos restaurar el MBR

con un

c:\> fdisk \mbr

Nos sale una advertencia informándonos

que se perderán los cambios realizados

en el MBR. Alberto y yo dudamos. Luis

no. Notamos que que se pone en tensión

y se aclara la garganta. Es suficiente:

“Dale a enter, Alberto”.

Borra, borra , escribe, escribe, copia,

copia. “Vamos a reiniciar” nos informa

Alberto.

Comprobación de memoria, discos

duros y DVDs detectados, LILO…

¿Cómo? Linux empieza a arrancar.

Alberto y yo suspiramos aliviados. Luis

no.

Yo, apóstol de lo obvio, comento

“Bueno eso no ha funcionado”. “No

importa” declara Alberto.

“Modificaremos el boot.ini”. Nueva rea-

rrancada al rescate de Windows.

Instintivamente, Al escribe vi en la línea

de comandos. “¿Qué haces?” le pregun-

to. “Caray, es verdad” dice, apesadum-

brado. “¿No hay un programa edit o algo

por el estilo?”

No, no hay. No al menos en el modo

rescate. El programa EDIT del MS-DOS

sólo está disponible si tenemos el QBA-

SIC y QBASIC hace mucho que no se

suministra con Windows. Conclusión: El

modo rescate de Windows no contiene

un editor (???!!!!).

“No importa” dice de nuevo Alberto.

“Copiaremos el fichero a un disquete y lo

editaremos en Linux”. Disquete. copy

c:\boot.ini a:. Enter. Espera.

”¿Ha hecho algo?” Saco el disquete y

lo monto en Linux. “Aquí no hay nada”

les informo a ambos.

Otra vez: Disquete. copy c:\boot.ini a:.

Enter. Espera. “Sigue sin haber nada”.

Hemos pecado del síndrome de

Windows: no leemos lo que nos dice:

que el modo de rescate no permite la

escritura a disquete, sólo permite la lec-

tura. “Pero, ¡eso es absurdo!” resopla

Alberto.

“No importa” Esta vez he sido yo.

“Cierto”. dice Alberto. “Lo editamos

desde Linux, lo grabamos en un dis-

quete y listos”. Perfecto. Manos a la

obra. Rearrancamos la máquina en

Linux y abrimos vi, realizamos los

cambios y guardamos, esta vez en un

disquete formateado con vfat, por que,

como mencionamos, no podemos

escribir a NTFS.

Según Alberto, la línea ofensiva

multi(0)disk(0)rdisk(0)U

partitions(2)\WINDOWS=U

"Microsoft Windows XP HomeU

Edition" /

Debe rezar

multi(0)disk(0)rdisk(0)U

partitions(1)\WINDOWS=U

"Microsoft Windows XP HomeU

Edition" /

No se nos olvida pasarle unix2dos para

evitar problemas con los finales de línea.

Volvemos al modo rescate de

Windows otra vez, volvemos a insertar el

disquete otra vez, tecleamos:

C:\> move boot.ini boot.ini.bak

C:\> copy a:boot.ini c:

Si no arranca, la hemos cagado. Ya se

nos acaban las ideas. Veamos: reset,

LILO, Windows… La cara de alivio de

Luis era pura poesía. Había recuperado

su infecto Windows 2000 de nuevo.

Podía seguir viviendo.

No puedo reprimirme: “¡rm -fR /,

Alberto!” le murmuré, “¡rm -fR /!”

EpílogoLuis llega al día siguiente, sonriente y

con un no sé qué en los andares, como si

se hubiera liberado de un enorme peso

desde la tarde anterior. “He formateado

la partición de Windows” me informa

feliz.

Eso es lo que yo llamo progreso. �

Trucos

94 Número 07 W W W . L I N U X - M A G A Z I N E . E S

[1] Información sobre el problema con

boot.ini: http://www.computerhope.

com/issues/ch000646.htm

[2] Como eliminar Linux y reinstalar

Windows: http://support.microsoft.

com/default.

aspx?scid=kb;en-us;314458

RECURSOS

Page 95: Linux Magazine - Edición en Castellano, Nº 07

Más del 30% de descuento respecto al precio de portada: Consigue 12 números por 54’90 Euros y todos los DVDs ¡Gratis!

A diferencia de otras publicaciones, Linux Magazine no llenará tu buzón de recordatorios para que renueves tu subscripción. Ésta se renovaráautomáticamente cada año. Recibirás una confirmación aproximadamente 30 días antes del final de tu periodo de subscripción, pero no serequiere que hagas nada para seguir suscrito.

¡No te pierdas Linux Magazine nunca más! La subscripción te asegura que recibas los conocimientos Linux de más alta calidad en tu domiciliocada mes.

Si por cualquier motivo decides dejar de leer Linux Magazine, puedes cancelar tu subscripción en cualquier momento. Te abonaremos el preciode todos los números que no hayas recibido. Sin preguntas, sin fechas de cancelación, sin problemas.

Linux Magazine es algo más que una revista de Linux. Patrocinamos grupos, congresos, proyectos y eventos relacionados con el Software Libre.Suscribiéndote a Linux Magazine garantizas que podamos seguir apoyando al Software Libre allá donde haga falta.

Page 96: Linux Magazine - Edición en Castellano, Nº 07
Page 97: Linux Magazine - Edición en Castellano, Nº 07

EVENTOS

97Número 07W W W . L I N U X - M A G A Z I N E . E S

Linux World San FranciscoFecha: 9-11 Agosto

Ciudad: San Francisco,CA,EE.UU.

Sitio Web:

www.linux-

worldexpo.com

CAMPUS PARTYFecha: 25-31 Julio

Ciudad:Valencia

Sitio Web:

http://www.campus-

party.org

aKademy 2005Fecha: 27 Agosto - 4 Septiembre

Ciudad:Málaga,España

Sitio Web:

http://dot.kde.org

Información de Contacto

DirectorPaul C. Brown

CoolaboradoresPaul C. Brown, Jose Manuel González Vida, JuanRafael Fernández, Pedro Orantes, José María Ruíz,Alberto Planas.

TraductoresPaqui Martín Vergara, Paul C. Brown, Jesús ReyesDelgado, Antonio Rueda, Víctor Tienda.

MaquetaciónSergio Hardasmal

Diseño de PortadaPinball([email protected])

Diseño de PublicidadFeedback(www.f-back.com)

Publicidadwww.linuxmagazine.com.es/pub/

Para EspañaPaul C. [email protected]@linuxnewmedia.esTel.: (+ 34) 951 010 556Móvil.: (+ 34) 655 036 836Fax.: (+ 34) 951 010 516

Sergio Hardasmal [email protected].: (+ 34) 951 010 556 Fax.: (+ 34) 951 010 516

Para el Resto del MundoBrian Osborn [email protected] Tel.: (+49) 6509 910 495Fax.: (+49) 6509 910 497

Director EditorialPaul C. Brown

Director de ProducciónSergio Hardasmal [email protected]

Subscripciones: www.linuxmagazine.com.es/magazine/subs

Precios Subscripción (12 números + 1 DVD cada 3 números) España: 49,50 €Europa: 59,90 €Resto del Mundo - Euros: 79,90 €Resto del Mundo - Dólares U.S.A.: $94,90 €

Tel.: (+34) 951 010 556Fax.: (+34) 951 010 516 [email protected]

Linux MagazineLinux New Media Spain, S.L.Avda. Juan López Peñalver, 2129590 - Campanillas Málaga ESPAÑA [email protected].: (+34) 951 010 556Fax.: (+34) 951 010 516

www.linux-magazine.es - Españawww.linux-magazine.com - Mundowww.linux-magazine.de - Alemania

Si bien se toman todas las medidas posibles paragarantizar la precisión del contenido de los artículos publi-cados en Linux Magazine, la editorial no se hace responsable de imprecisiones aparecidas en larevista. Asimismo, Linux Magazine no compartenecesariamente las opiniones vertidas por suscolaboradores en sus artículos. El riesgo derivado del uso del DVD y el material que contiene corren por cuenta del lector. El DVD es estudiado escrupu-losamente para confirmar que está libre de virus y errores.

Copyright y Marcas Registradas © 2004 Linux NewMedia Spain, S.L. Linux New Media Spain S.L. prohíbela reproducción total o parcial de los contenidos deLinux Magazine sin su permiso previo y por escrito.Linux es una Marca Registrada de Linus Torvalds.

Impreso en Alemania

Impresión: Dierichs Druck + Media GmbH

Distribución: SGEL

Depósito Legal: MA-116-2005

ISSN edición impresa: 1576-4079

ISSN edición online: 1699-2237

Calendario de Eventos

Evento Fecha Ciudad Sitio Web

Linux Forum Asia 2005 15-16 Junio Hong Kong,China www.linuxforumasia.com

International Lisp Conference 2005 19-22 Junio Palo Alto,CA,EE.UU. www.international-lisp-conference.org

yapc:Yet Another Perl Conference 22-24 Junio Toronto,Canadá http://yapc.org/America

LinuxTag 2005 22-25 Junio Karlsruhe,Alemania www.linuxtag.org

I Congreso de Tecnologías del Software Libre 7-8 Julio A Coruña http://congreso.gpul.org

Debconf 5 10-17 Julio Helsinki,Finlandia www.debconf.org/debconf5

2005 Linux Symposium 20-23 Julio Ottawa,Canadá www.linuxsymposium.org

Campus Party 2005 25-31 Julio Valencia,España http://www.campus-party.org

What the Hack 28-31 Julio Liempde,Holanda www.whatthehack.org

Usenix Security Symposium 1-5 Agosto Baltimore,MD,EEUU www.usenix.org

Wikimania 2005 4-8 Agosto Frankfurt,Alemania http://wikimania.wikimedia.org/wiki

LinuxWorld Conference & Expo S.F. 9-11 Agosto San Francisco,CA,EE.UU www.linuxworldexpo.com

LinuxWorld Conference & Expo Beijing 24-26 Agosto Beijing,China www.linuxworldchina.com

LinuxWorld Conference & Expo Moscow 7-9 Septiembre Moscú,Rusia www.linuxworldexpo.ru

aKademy 2005 27 Agosto - 4 Septiembre Málaga http://dot.kde.org

LinuxWorld Conference & Expo UK 5-6 Octubre Londres,Reino Unido www.linuxworldexpo.co.uk

LinuxWorld Conference & Expo NL 13-14 Octubre Utrecht,Holanda www.linuxworldexpo.nl

LinuxWorld Conference & Expo Frankfurt 15-17 Noviembre Frankfurt,Alemania www.linuxworldexpo.de

LinuxWorld Conference & Expo Australia 28-30 Marzo 06 Sydney,Australia www.linuxworldexpo.com.au

Page 98: Linux Magazine - Edición en Castellano, Nº 07

98

PRÓXIMO NÚMERO

98 Número 07 W W W . L I N U X - M A G A Z I N E . E S

PRÓXIMO NÚMEROAgosto 2005: Número 8

PRÓXIMO NÚMERO

A LA VENTA: JULIO 2005

WIKIS Y BLOGS PDFS EXTENDIDOSLa esencia de Linux es la bús-queda o creación de las herra-mientas perfectas. Si la configu-ración estándar para la creaciónde PDFs desde OpenOffice no tesatisface, es hora de modificarloa tu gusto. El mes que vienevemos como con un sencillomacro podemos crear PDFs queincluyen marcas, hiperenlaces ynotas… Y todo sin salir deOpenOffice.

GMAILSVemos comoutilizar tu cuentade GMail comosistema deficheros monta-ble accesibledesde Internet.

LINUX USEREn la sección dedicado alusuario final, veremoscomo administrar fuentesbajo KDE y Gnome, comocompartir archivos en la redKazaa con Apollon y habla-remos de uno de los pro-yectos educativos más inte-resantes de este momento:ATNAG.

BOLETÍN LINUX MAGAZINEEl Boletín de Linux Magazine te da la oportu-nidad de ver lo que se avecina en el sigu-iente número de Linux Magazine e incluyeenlaces a artículos que aparecen en nuestrositio web antes de que la versión impresallegue a los quioscos. Suscríbete enwww.linuxmagazine.es/boletin.

Y es que la web no para de crecer y lasherramientas para publicar y adminis-trar contenidos no paran de mejorar yde hacerse más poderosas. En portadael mes que viene examinamos precisa-mente esas herramientas para lapublicación y administración en web.Abarcaremos Drupal, un sistema deadministración de contenidos, unaherramienta para soportar sitios weby weblogs comunitarios. Veremos laplataforma de colaboración TWiki, unode los más veteranos motores wiki. Yle echaremos un vistazo a MediaWiki,uno de los más poderosos.Más aún, en la sección de desarrollo,Jose María Ruíz nos proporcionará unscript Python para implementar unWIki basado en CGIs.

COCHECITOSAlberto Planas nos traela segunda entrega desu serie de hardware ysoftware destinado acontrolar un coche tele-dirigido a través delpuerto paralelo.¿Logrará que eche aandar en este capítulo?¿En más de una direc-ción?¿Simultáneamente?

Page 99: Linux Magazine - Edición en Castellano, Nº 07

0Proyectos desarrolladosProgramas escritosPáginas publicadas

* Este sería el resultado de la aplicación de la directiva sobrepatentes de software propuesta alParlamento Europeo.

*

w w w . f f i i . o r g

Page 100: Linux Magazine - Edición en Castellano, Nº 07