De Debian a Mandrake
Soy usuario de Debian GNU/Linux
desde la aparición de Debian Potato,
a mediados del año 2000. Mi paso a Debian fue la culminación
de una trayectoria con Redhat
versión a versión desde la 4.2
hasta la 6.2, y el detonante de la migración al estilo de vida
debianero fue el infierno que resultaba en ocasiones el
sistema de paquetes RPM.
Todo ex-usuario de distribuciones basadas en RPM que haya
pasado a Debian coincidirá conmigo en que el sistema de gestión
de paquetes DEB mediante dpkg y apt-get estaba a años luz del
caos que suponía el control de dependencias en Redhat, SuSE o
Mandrake.
Durante estos 3 últimos años he estado muy contento
dentro de Debian, pero hace un par de meses que he descubierto
que no cubre todas mis necesidades, o al menos no como yo lo
quisiera: estoy hablando de Debian como distribución de
escritorio. Este artículo es una mezcla al 50% entre opiniones
personales y hechos en el cual quiero explicar qué problemas
me he encontrado con Debian y cómo otra distribución de Linux
como Mandrake me los ha solucionado. Es muy posible que las razones
por las cuales he decidido usar Mandrake para mis escritorios
no coincidan con la de alguno de vosotros; en ese caso sólo pido
que termine de leer el artículo para comprender en su totalidad
mi punto de vista.
Los problemas de Debian en el escritorio
Debian es un Linux como cualquier otro, y por lo tanto en
teoría no deben existir problemas en el escritorio porque
se pueden instalar los mismos programas que en los demás
sistemas tirando de tar.gz's (binarios, o compilando). El
problema es cuando pretendes hacer uso única y exclusivamente
del sistema de paquetes DEB: la ventaja de Debian, su rígido
sistema de control de versiones en los paquetes, se torna en
su contra en ciertos casos como en el mío.
Cuando monto un sistema de escritorio, lo que pretendo es
tener un sistema estable que aproveche al 100% los recursos
de mi PC. Partiendo de esa base, comencé instalando la
distribución de Debian stable (potato) usando AfterStep
(hablo del año 2000, y tras 3 años usando Redhat).
La versión de Potato de AfterStep (cuyo ciclo de desarrollo
era muy lento) era bastante nueva, porque estamos hablando de
un tipo de gestor de ventanas que no está basado en añadir
continuamente nuevas funcionalidades. Con el paso a Debian
Woody y mi gusanillo por probar KDE
me encontré con los
primeros problemas: la versión de KDE de woody era mucho más
antigua que la disponible en ese momento en muchas otras
distribuciones.
En general uno podría asumir que una versión de KDE anterior
sería más rápida, estable y segura, pero no es así.
KDE 2.2 es más lento y pesado que KDE 3
(el hecho de que este último corra perfecto
en mi portatil Pentium 266 y el anterior no así lo atestigua :-),
al mismo tiempo que cada nueva versión incorpora gran cantidad
de mejoras y funcionalidades que yo quiero aprovechar. El modelo de
desarrollo de paquetes de Debian frenaba mis posibilidades de
uso de la nueva versión de KDE, de modo que comprendí que Debian
Stable es una distribución excelente para Servers (donde lo más
importante suele ser en el 99% de los casos la estabilidad y
seguridad), pero no para Desktops. Así pues cambié mi sources.list
y me pasé a Debian Testing.
En Testing la cosa mejora, porque tienes versiones más nuevas de
los paquetes que, sin ser las últimas, te pueden servir. Cuando yo
pasé a testing, ésta seguía con KDE 2.2, de modo que para poder
usar el 3.x hube de pasar a Debian Unstable... y esto fue el
desastre. Unstable es una distribución para desarrollo: hoy puede
ir, mañana no. Un día hay un fallo en la glibc, y te toca hacer
malabarismos para salvarlo, otro día haces un upgrade y te quedas
sin fuentes en KDE. Lo último para mí fue que hay paquetes de KDE
de 3.1.3 coexistiendo con otros de 3.1.4. El resultado es que
Konqueror (3.1.3) no se llevaba bien con KDE (3.1.4) y se cerraba
cuando le apetecía, perdiendo todo lo que estaba haciendo en ese
momento.
¿Cuál es el problema de Debian? Pues que su modelo de gestión
de paquetes necesita gran cantidad de gente para funcionar. Los
programas no se compilan, empaquetan, testean y suben a los mirrors
sólos, y por si fuera poco el ritmo de desarrollo de paquetes es
cada vez más acelerado. Quien use testing o unstable sabrá de lo
que hablo (por cada vez que hace un upgrade y ha de descargar 200MB
de paquetitos con la misma subversión que el bajado la semana
anterior). Además, hay que hacer muchas pruebas con los paquetes, y
hay que tenerlos congelados (sin añadir nuevas versiones) durante un
tiempo, de forma que cuando ya tienes el paquete disponible, éste
está obsoleto.
Debian Stable es fantástica, pero yo sólo le veo sentido en mi caso
como servidor, o para ordenadores con pocos recursos que no vayan
a utilizar X, o vayan a utilizar gestores de ventanas ligeros con
programas cuyas funcionalidades cambian apenas con el tiempo (Icewm,
mutt, slrn, vim). Debian testing es algo parecido a lo que debería
ser una distribución Debian con algo más de dinamismo, pero requiere
mucha gente trabajando para convertirla en estable. Finalmente,
Debian Unstable es un sinvivir: hay quien le funciona perfecta, y
hay quien reza 2 tuxnuestros cada vez que hace un upgrade, esperando
para ver si el churro de librerías QT que te está metiendo con el
nuevo kopete será compatible con la junta de la trócola de KDE...
Una posible solución al efecto es utilizar Debian Stable y los
backports que se van creando de nuevas aplicaciones para Stable,
como los que podemos encontrar en apt-get.org. Haciendo esto estamos
en el mismo caso que si no usáramos Debian, puesto que los paquetes
no están certificados por Debian, ni han pasado el período de
pruebas y congelación que Debian impone. Por otra parte, no tendremos
algunas de las ventajas que mencionaré luego en Mandrake, como tener
los paquetes compilados para i586 ó i686 en lugar de para i386.
Las ventajas de Mandrake
Así pues, hasta ahora tenemos una distribución Debian Stable que
se adapta como un guante a la mayoría de máquinas servidores (la
mayoría, pero no todas), pero problemas (en mi caso) en el
escritorio. Aquí es donde entra en juego Mandrake.
Mandrake es una distribución de Linux orientada al escritorio y,
sobre todo, al usuario final. Su acabado está realizado pensando en
los nuevos usuarios de Linux, con una instalación gráfica muy
sencilla, ya sea desde CDROM, HDD, o con un sólo diskette (se
descarga el instalador por http/ftp). El sistema de versiones de
Mandrake es diferente al de Debian. Aproximadamente sale una
versión al año, y esa versión tiene en ese momento una versión
lo más nueva posible de todos los programas de Linux en su
momento de lanzamiento. Eso significa última versión del kernel,
de XFree86, de KDE, de GNOME, de OpenOffice, etc.
Hace 2, 3 ó 5 años yo hubiera gritado: "¡Herejes! ¡Cómo pueden
hacer eso! ¡Nadie puede poner versiones tan recientes de los
programas, serán altamente inestables!". Puede parecer cierto:
versiones más viejas están más probadas por los usuarios, y
versiones más nuevas están menos probadas, y sobre ellas pueden
aparecer fallos. Pues bien señores, hace 5 años esto podía ser
así, pero hoy en día en general no. Antes, la diferencia entre
un Gnome 0.99 y un Gnome 1.0 la marcaba tener el $HOME lleno de
ficheros core, o no tenerlo. La diferencia entre KDE 1 beta 4 y
KDE 1.0 podía ser la corrección de un porrón de bugs que hacían
inusable algún aspecto del gestor de ventanas. Ahora el software está
mucho más acabado, los cambios no producen la misma inestabilidad
que producían antes. Lo que se hace ahora es añadir nuevas
funcionalidades: hemos pasado la etapa de desarrollo inicial, y
estamos en una etapa de maduración.
Y más aún: ahora conectamos a Internet, ejecutamos 2 comandos
y ya tenemos descargado e instalado el paquete o conjunto de
paquetes que soluciona cualquier posible bug aparecido, cosa que
antes no era tan viable (¿quién no recuerda las horas de modem
malgastadas esperando a que bajaran los debs o rpms del último
KDE o gnome enterito?).
Es decir, antes estaba justificado el utilizar versiones antiguas
y probadas de paquetes, porque efectivamente las versiones superiores
eran realmente inestables y tenían fallos. Hoy en día los debianeros
nos pasamos a testing o unstable para tener esas versiones, o incluso
las compilamos, las descargamos de sources de paquetes alternativos,
y utilizamos las betas de KDE 3.x o gnome 2.x y éstas son más estables
que las propias versiones estables de nuestras distribuciones.
Estamos en un momento en que distribuciones como Redhat o Mandrake
salen a la calle mucho más acabadas que Debian en cuanto al
escritorio, porque incorporan últimas versiones de todos los
programas que son más que estables para su uso diario.
Pero no sólo el tema de las versiones es importante. En el caso
de Mandrake, los paquetes vienen compilados para i586 (o i686...).
Estamos hablando de que no sólo el kernel, sino que también la
glibc, XFree86, o los propios KDE o gnome y todas sus aplicaciones
vienen compilados para i586 (o la arquitectura que sea) y no para
i386 como en Debian (que intenta mantener toda la compatibilidad
posible para la gran cantidad de 486s que aún quedan en el mundo).
Es posible que esta compilación "para pentium" aporte apenas un
pequeño porcentaje de rendimiento extra, pero es que tengo un
ordenador de 1.7Ghz para aprovecharlo. Cuando digo esto, no estoy
diciendo que tengo que usar toda mi CPU con recursos inútiles
para aprovecharla por narices, sino de que las XFree86 de Mandrake
están seguramente usando menos procesador, o lo
hacen de una forma más eficiente (al estar aprovechando instrucciones
que tiene mi microprocesador y no los i386), que las de Debian.
Por otra parte, las aplicaciones de Mandrake vienen compiladas
con Prelinking. Prelinking es una técnica que pretende reducir
el tiempo de carga y memoria de uso de las librerías dinámicas
que utilizan las aplicaciones. La teoría dice que cuando se
ejecuta un binario en Linux, el sistema carga las librerías
compartidas contra las que ha sido compilado y realiza una
transformación de las direcciones de memoria de las referencias
de las librerías. Mediante prelinking existe una especie de
"direcciones preferidas" por defecto que si están libres son
ocupadas sin la necesidad de hacer esta transformación (si lo
he expresado de forma incorrecta agradecería una corrección :-).
Esto hace que las aplicaciones carguen más rápido y esta carga
requiera menos memoria. Pues bien, Mandrake viene con todas
las aplicaciones posibles compiladas así, lo cual es otro
punto a su favor. Por supuesto, prelink no es la panacea,
porque si cambiamos las librerías, el proceso de "transformación"
se realizará de nuevo de forma normal, pero es un avance para
quien instala un Linux y sólo lo actualiza de versión en versión
completa de la distribución.
Otra de las ventajas de Mandrake (que a la vez es una desventaja)
es el hecho de que el kernel que distribuye Mandrake compilado en
sus distribuciones suele estar parcheado por la propia Mandrake
con una serie de parches como el Preemptive. El efecto de este
parche es que el sistema tiene menos latencia y responde mejor
(es más interactivo cuando hay carga) al usuario. Es especialmente
bueno para sistemas de escritorio. Digo que es una desventaja por
el mero hecho de no usar el kernel estándar, pero dado que el
kernel 2.6 ya será preemptive de serie (sin parche) tal vez no
sea tan importante.
Sobre qué cosas no me gustan de Mandrake, destacaría lo siguiente:
- Que dependa de una empresa. No hay más que ver qué ha pasado
con Redhat. Si algún día Mandrake decide hacer algo similar, ¿qué
pasará con los usuarios?
- Que no utilice apt-rpm sino urpmi para la gestión de paquetes
(como veremos a continuación).
- Que las ISOs no sean fácilmente descargables de Internet a
menos que seas miembro del Mandrake Club.
- Los paquetes no están lo bastante separados, como ocurre en
Debian: por ejemplo, existe un paquete kdegames que contiene todos
los juegos de KDE, pero no existen (al menos no en los 3 CDs
que yo tengo) los mismos juegos por separado... ¿qué pasa si
sólo quiero kmahjongg pero no el resto de juegos? En Debian hay
un metapaquete llamado kdegames que depende de los subpaquetes
kdegames-XYZ, de forma que puedes instalarlos todos en conjunto,
o por separado.
urpmi : un bypass a los problemas del rpm
Uno de los principales motivos por los que uso Debian en mis
servers y lo usaba en el escritorio es la gestión de paquetes.
En mi época Redhatera (desde la 4.2 hasta la 6.2) he sufrido en
mis carnes el horror de los paquetes RPM. Descargabas un paquete
(de forma manual, con wget o el navegador) y al hacer rpm -i,
dependía de 2 paquetes que le eran necesarios. Descargabas estos
2 paquetes, y al tratar de instalarlos cada uno de ellos dependía
de 5, 6 o más paquetes extras. Al final cada instalación de
programas (sobre todo los medianamente complejos) era una aventura
y perdía muchas horas solucionando los problemas de dependencias.
Como todos sabéis esto no ocurre en Debian gracias a apt. El
Advanced Packaging Tool (APT) es el encargado de analizar las
dependencias entre paquetes y de gestionar las descargas. Para
las instalaciones y desinstalaciones de paquetes (una vez
descargados), apt usa internamente a dpkg, el equivalente de rpm.
Sin apt (o sus derivados), Debian tendría los mismos problemas que
yo tenía en Redhat. Nunca me planteé la posibilidad de
volver a Redhat, SuSE o Mandrake mientras no existiera el equivalente
de apt para la gestión de los rpms.
El caso es que ya existe, y por partida triple. Apt-rpm,
yum y urpmi son frontends para rpm. Mandrake usa por defecto urpmi,
principalmente porque fue adoptado por Mandrake antes de que apt-rpm
se desarrollara al nivel que está ahora.
La herramienta urpmi (y sus interfaces en modo gráfico gurpmi y
rpmdrake) es más o menos el equivalente de APT en Mandrake. Permite
instalar, desinstalar y actualizar paquetes gestionando correctamente
las dependencias. No es tan potente como APT, pero permite
realizar correctamente instalaciones, actualizaciones y
desinstalaciones, incluyendo upgrades completos del sistema. Del mismo
modo que en APT, a esta herramienta se le añaden "sources" de paquetes
(de repositorios HTTP o FTP, por ejemplo) de los cuales se baja
el listado de paquetes y los paquetes en sí mismos.
Hace poco fue publicado en Libertonia un
artículo sobre Actualización de Mandrake con urpmi, por HnZekto, y
en la web de Sinner tenemos
un manual de urpmi en castellano en PDF. En ambos documentos podemos
ver tanto la potencia como los puntos débiles de urpmi. Personalmente espero
que Mandrake elimine el uso de urpmi en favor de apt-rpm, que por lo visto
funciona igual (de bien) que en Debian. Será cuestión de esperar a ver si
Mandrake lo hace, o directamente como usuarios tratar de presionar para
que lo hagan. Por ahora, urpmi es muy sencillo de utilizar y nos puede
servir con creces.
Así pues el principal problema de Mandrake, el motivo por el cual nunca
había siquiera considerado el acercarme a ella, está salvado: puedo instalar
y desinstalar programas sin preocuparme en exceso de las dependencias. Esto
ya permite que le pueda dar una oportunidad y testearla.
Qué tenemos hasta ahora:
En el par de semanas que llevo usando Mandrake 9.2, puedo decir
que me he encontrado lo siguiente:
- Una instalación muy fácil, rápida y cómoda, que te
permite salvar la lista de paquetes seleccionados en diskette
para realizar posteriores instalaciones similares en la
misma u otras máquinas. Un detalle interesante del instalador
es que hay dependencias entre los programas y las librerías
en ambos sentidos. Es decir, en Debian si instalas el paquete
XYZ, si este depende de la librería libXYZ te la instalará,
ya que existe una dependencia XYZ a libXYZ. El problema es que
no existe una dependencia en el otro sentido, es decir, si
desinstalamos XYZ no se desinstalará libXYZ a menos que lo
especifiquemos nosotros directamente, con lo que con el tiempo
acabamos con librerías instaladas que no son usadas por ningún
programa (algo que se puede corregir con deborphan).
El instalador de paquetes de Mandrake sí que dispone de esas
dependencias, de forma que quitar kdeedu (por ejemplo), hará
que se elimine libkdeedu.
- Unos manuales excelentes, tanto de instalación como de
usuario, administración y línea de comandos [Ver enlaces].
- Un modelo de negocio reorientado. Después de la pequeña
crisis que tuvo Mandrake, ésta orientó su modelo de negocio:
lo importante ya no es vender cajas de Linux a los usuarios
finales, cuya distribución y coste de almacenamiento no compensa.
El objetivo ahora es vender servicios, soporte, programas y
funcionalidades por medio de donaciones y del Mandrake Club. La
distribución Mandrake PowerPack sigue pudiéndose comprar en
cualquier caso.
- Mucho soporte de hardware (esto viene en gran medida por el
hecho de que incluya últimas versiones de programas y kernel).
- Versiones modernas aunque estables de la paquetería. Esta ya
no es la época en que poner la última versión de gnome o de KDE
en tu distribución es sinónimo de inestabilidad o errores. Ahora
mismo la última release estable de KDE o GNOME (3.1.4 ó 2.4) ya
es lo suficientemente estable como para no tener que utilizar
KDE 2.2 "por seguridad".
- Una distribución compacta pero a la vez flexible con un
acabado serio. El aspecto del resultado tras las instalación
es de un Linux homogéneo, tanto bajo QT como bajo GTK.
- Un sistema de gestión de dependencias llamado urpmi y un
equivalente en modo gráfico (rpmdrake) para minimizar los
problemas del sistema de paquetes RPM.
- Un sistema centralizado de configuración (drakconf) que
llama por separado a una gran cantidad de asistentes que
permiten a los usuarios una alternativa a la edición de ficheros
de configuración de toda la vida.
- Un sistema de webs/ftps con paquetería para la instalación
de aplicaciones y gestión de actualizaciones, tanto de programas
como updates de seguridad para corrección de vulnerabilidades.
- Un firewall de serie (shorewall) que permite al usuario
conectar a Internet de una forma segura evitando problemas
derivados de vulnerabilidades futuras en servicios (este
firewall se configura durante la instalación y se inicia
con el arranque del sistema).
En resumen, un Linux que se puede adaptar a todas las necesidades
de usuario de escritorio, incluyendo la posibilidad de funcionar en
línea de comandos. ¿Qué esperábamos? Al fin y al cabo es un Linux:
puedes poner tu propio kernel no tocado por Mandrake, deshabilitar
el arranque de /etc/init.d/dm (el inicio de X en runlevel 5),
poner o quitar servicios en su arranque, y estarás en un Linux
igual que si estuvieras en Debian. La única diferencia es el
sistema de paquetes y su gestión. Con esto quiero decir que
Mandrake se adapta a todo tipo de usuarios: al nuevo, que
se encontrará un Linux con un aspecto bonito y compacto nada más
instalar, y al avanzado, quien además de encontrar lo mismo
que el novato, lo podrá personalizar a su gusto como cualquier
otro Linux.
Tiene que acabarse ese estúpido mito de que quien
usa Debian es un gurú y quien usa Mandrake un lamer (todavía
circula por ahí). Si nos ponemos en ese plan, sólo quien use
Linux From Scratch
puede considerarse un verdadero gurú. Quiero repetir y recalcar
la frase "La única diferencia entre Debian y Mandrake a
nivel de Linux es el sistema de paquetes (con su propio formato y
política) y su gestión". Si bien
es cierto que no es tan potente como el de Debian, en una
distribución de escritorio, urpmi puede servir
para el 95% de las situaciones.
Y quien siga pensando que hay que tener Debian para ser
un gurú, por favor, que hable con Sinner :-).
También es cierto que no todos tenemos las mismas necesidades y es
muy posible que haya gente a la que esta afirmación no le sirva, y
Mandrake no se adapte a ellos.
Lo importante es que en 2 horas puedes tener un Linux instalado y
configurado, funcionando al 100%. Si estamos hablando de un
sistema de escritorio (no directamente conectado a Internet
ofreciendo servicios), tenemos una distribución muy homogénea
que en mi caso me permite seguir mi dinámica diaria,
consistente en acceder por telnet/ssh a otras máquinas, chatear con
xchat, leer el correo con sylpheed o kmail, usar mensajería
instantánea multiprocolo con kopete, y navegar. Para hacer esto
no necesito (no quiero) instalar una Debian Woody y pasarme a
testing o instalar backports. Debo confesar que inicialmente
me dio algo de miedo el hecho de que siga estando basada en
paquetes RPM, pero lo que he visto hasta ahora de URPMI me
confirma lo que me aseguraron Sinner y HnZekto: puedo ir
actualizando e instalando paquetes tal y como lo hacía en
Debian, y sé que antes de 1 año habrá otra Mandrake con la
última versión de KDE y que podré actualizar a ella.
No sé cuánto tiempo continuaré usando Mandrake como distribución
de escritorio; Linux cada vez se estandariza más y las diferencias
entre las distribuciones se reducen, y hoy puedo estar usando
Mandrake y mañana cualquier otra. Lo importante es eso, que si
tienes tu /home bien separado del sistema en otra partición, en
general puedes pasar de un Linux a otro sin mayores problemas,
con sólo un par de horas de tu tiempo. Yo seré sincero: si mañana
Debian sacara una distribución compilada para i586 y con el último
KDE estable, es muy posible que volviera a considerar Debian, pero
en la situación actual no quiero perder tiempo con backports o
upgrades para navegar, chatear o leer mi correo.
Si veo este artículo sirve de algo, en los próximos días lo
completaré con los pasos de instalación de Mandrake para
Debianeros, focalizando en cómo he hecho más fácil mi paso
esta distribución teniendo en cuenta las costumbres que arrastraba
con Debian.
Algunos enlaces