viernes, 1 de agosto de 2014

Preparando las maletas, parte VIII - Distribuciones

Más de una vez he hablado de "distribuciones" en este blog, e incluso he recomendado alguna, pero me temo que nunca me he explicado bien. Quisiera remediar esto.

Teoría - Distribuciones

Un sistema operativo no es más que un conjunto de programas y librerías que facilitan la programación de aplicaciones proporcionando herramientas específicas para que los programadores no tengan que lidiar directamente con el hardware. Además se encarga de muchas otras tareas relacionadas, como gestionar los recursos (memoria, procesador, redes, periféricos...), evitar conflictos entre programas que se ejecutan a la vez, evitar que el cuelgue de un programa afecte a los demás, proporcionar seguridad frente a ataques y muchas otras cosas.
Lo que normalmente llamamos "Linux" es, en realidad, el sistema GNU/Linux. Linux, como tal, es el núcleo del sistema; GNU es el conjunto de programas que utilizan ese núcleo para permitir que otras aplicaciones puedan funcionar. El conjunto es el sistema operativo GNU/Linux. Otro tema es que por costumbre o por comodidad acabemos nombrando al sistema operativo igual que a su núcleo, pero no hay que olvidar que hay sistemas operativos que llevan Linux sin tener GNU, así como otros que usan GNU con otros núcleos.
Por poner un ejemplo: Windows XP, Windows Vista, Windows 7... son sistemas operativos diferentes, con distintos programas de utilidad y distintas librerías de sistema. Sin embargo, todos ellos utilizan el núcleo NT (en sus distintas evoluciones, aunque básicamente el mismo).

Podríamos montar un sistema GNU/Linux completo compilando nosotros mismos el núcleo y las herramientas GNU y después ir compilando una a una todas las aplicaciones, resolviendo a mano las dependencias (cada programa depende de versiones específicas de otros programas y librerías, que a su vez dependen de otras, y así hasta llegar al núcleo) y volviéndonos locos para evitar conflictos entre aplicaciones y librerías que no necesariamente funcionarán bien juntos... y por último pasar incontables horas haciendo pruebas y resolviendo pequeños defectos hasta tener un sistema estable.
La alternativa obvia es usar una distribución ya existente.

Una distribución, en realidad, no es más que eso: un sistema ya compilado, montado, probado y listo para usar, generalmente apoyado por un sistema que facilita la instalación, desinstalación y actualización de paquetes (programas, librerías y otros recursos) y resuelve las dependencias más o menos automáticamente.

Las primeras distribuciones tuvieron mucho éxito en su época, cada una en su especialidad, y han ido evolucionando durante años, mejorando y adaptándose a las necesidades cambiantes.
Hay decenas o cientos de distribuciones GNU/Linux, la enorme mayoría basadas unas en otras, y casi todas vienen de las mismas tres distribuciones "primigenias": RedHat, Debian y SlackWare. El origen de una distribución nos dirá muchas cosas acerca de su filosofía, su forma de trabajar y, a menudo, los programas que usa, especialmente en cuanto a gestores de paquetes (deb, rmp, etc...).
Así, por ejemplo, LXLE viene de Ubuntu, que a su vez viene de Debian, y por ello utiliza paquetes .deb, prácticamente las mismas utilidades básicas... y la misma filosofía: antes usar versiones antiguas de programas perfectamente probadas que usar versiones recientes que puedan tener fallos sin detectar, aún siendo estables.
Por contraste, tenemos a Mageia, basada en Mandriva, basada en Mandrake, basada en RedHat, y por ello utiliza paquetes .rpm, las mismas utilidades básicas... y la misma filosofía del viejo Mandrake: ser fácil de usar desde el primer momento centralizando todos los ajustes posibles en un "centro de control" gráfico, sencillo y muy intuitivo.

Teoría -  Entornos de escritorio

Aunque esto no es estrictamente un tema de distribuciones, puede ser un detalle importante a la hora de decidirnos por una u otra, sobre todo si son nuestros primeros pasos en el mundillo linuxero.
A alguien que viene de Windows le puede resultar extraño saber que la forma de trabajar del usuario no tiene que depender del sistema operativo; no hay ninguna razón importante para que alguien con un Mac deba trabajar con un "dock" y alguien con Windows deba trabajar con una "barra de tareas" o con "Modern UI", si usa Windows 8. Esas limitaciones son completamente artificiales, impuestas únicamente por el desarrollador del sistema. En Linux, al no haber un único desarrollador, no existe limitación alguna para elegir un entorno u otro según nuestros gustos... o incluso crear un entorno completamente nuevo si queremos (y sabemos) hacerlo.
Hay entornos muy parecidos a los Windows clásicos, otros que funcionan de forma parecida a MacOS X, otros más propios de un teléfono móvil, otros basados en marcos o en texto. Los hay con muchos efectos 3D, transparencias, deformaciones... y otros tan austeros que parecen más propios de los años 80. Algunos requieren un buen ordenador, con mucha memoria RAM y una tarjeta gráfica potente; otros funcionan perfectamente en cualquier PC de este siglo. Algunos son tan tremendamente personalizables que pueden imitar a los demás; otros apenas permiten cambiar el color del marco y la imagen de fondo (o ni eso).
Un entorno de escritorio suele incluir todo lo necesario para que el usuario se sienta cómodo: escritorio, gestor de archivos, lanzador de aplicaciones, dock y muchas otras utilidades. Algunos entornos especialmente minimalistas sólo traen lo más imprescindible, permitiendo que el usuario instale aplicaciones de terceros que complementen la solución. También hay sistemas de ventanas que no se consideran entornos de escritorio propiamente dichos, ya que únicamente manejan ventanas: ni docks, ni menús, ni barras de tareas ni ná de ná.
Muchas distribuciones emplean un entorno u otro por defecto, otras permiten elegirlo durante la instalación y otras tantas tienen distribuciones derivadas con distintos entornos. Voy a describir algunos de los más utilizados, aunque no todos, primero porque hay demasiados, y segundo porque sólo he probado algunos.

Uno de los entornos más usados es Gnome, en sus distintas versiones. Gnome 3, la versión actual, es probablemente la más usada por defecto, aunque muchos usuarios siguen prefiriendo Gnome 2 por ser más ligera y personalizable. La versión 3 es bastante pesada, requiriendo un hardware más bien reciente para moverse con soltura, aunque a cambio soporta todo tipo de efectos gráficos.

Otro de los más antiguos y conocidos es KDE, que bebe directamente del aspecto de los Windows clásicos, aunque mejorando muchísimo tanto su ergonomía como su aspecto. Es terriblemente personalizable y, en su versión 4, algo más ligero que Gnome 3.

Tenemos también al austero LXDE, un "bicho raro" entre los de su especie. Para empezar, no tiene gestor de ventanas propio: suele utilizar Openbox, que es muy ligero, pero puede ser sustituido por muchos otros, como Kwin (el que utiliza KDE) o Metacity, por ejemplo, mejorando notablemente su aspecto y su soporte de temas. Es muy, muy configurable (es de los que se utilizan para imitar a otros entornos), pero buena parte de esta personalización debe hacerse editando archivos de texto a mano o usando programas externos.Está basado en las librerías GTK, con lo que comparte buena parte de sus temas con Gnome, aunque hay una versión en desarrollo que funciona usando QT que habrá que probar...

Debo mencionar también a Unity, amado por unos y odiado por otros, que viene por defecto en Ubuntu. Está basado en Gnome 3, usa un extraño lanzador de aplicaciones que parece inspirado en un teléfono móvil, consume recursos como una mala bestia y... supongo que es bonito, aunque no se me da muy bien apreciar estas cosas.

Hay muchos más, pero éstos son los que he probado lo suficiente como para hablar de ellos. Creo que con esto podemos hacernos una idea de la variedad de entornos disponibles...

 Práctica

El primer paso es elegir qué distribución instalar. Viniendo de Windows no nos interesa empezar con una distribución en la que haya que empezar compilando el núcleo y tooodas las aplicaciones, resolviendo dependencias a mano ni nada por el estilo. Hay multitud de distribuciones pensadas para el usuario medio (suponiendo que eso exista) con instaladores muy sencillos que dejan el sistema listo para funcionar con todos los programas habituales preinstalados (navegadores, reproductores multimedia, etc...). También hay distribuciones específicas para determinados ámbitos, como el desarrollo científico, la educación, la edición de vídeo... pero vamos a centrarnos en las más generalistas.
La más habitual es Ubuntu: es fácil de usar, está muy extendida (con lo que hay soporte de sobra en Internet) y resulta muy agradable a la vista. Por otro lado, se come los recursos del sistema que da gusto, el entorno (Unity) es muy diferente al típico de Windows y no incluye soporte para hardware antiguo, así que sólo se la recomiendo a gente con ordenadores recientes y facilidad para adaptarse a los cambios (o con suficientes conocimientos para cambiar el entorno). No obstante, también hay versiones de Ubuntu con otros entornos de escritorio, como Kubuntu (con KDE), Xubuntu (con XFCE), Ubuntu Gnome (con Gnome 3), etc...
Luego tenemos Linux Mint, basada en Ubuntu (recientemente también en Debian) y con algunas mejoras que la hacen más ligera. Viene en diferentes "sabores" que podemos elegir en su página de descargas, con entornos de escritorio KDE, Cinnamon, Mate o XFCE.
También tenemos la que, personalmente, recomiendo a cualquier principiante: LXLE. Está basada en Ubuntu pero tiene cambios muy importantes: es realmente ligera, incorpora drivers para hardware de hace quince años, incluyendo componentes raros de portátiles, y el entorno por defecto es LXDE, muy parecido al estilo Windows clásico y tremendamente configurable. Es la única distribución que he podido instalar en todos los ordenadores en que la he probado sin darme (casi) ningún problema de drivers.
Por último tenemos a la rara de la familia: Mageia. Esta distro está basada en la vieja Mandrake/Mandriva, la primera en intentar hacer llegar Linux a las masas. Muy estable, muy, muy configurable (durante la instalación podemos indicarle qué programas queremos instalar, qué entorno vamos a usar...) y con herramientas de configuración centralizadas que son la envidia de cualquier otra distro. Es la rara porque todas las anteriores vienen de Debian mientras que ésta viene de RedHat, con lo que hay grandes diferencias a nivel interno (sistema de paquetes, organización de archivos, cargador de arranque...).

Una vez más, quisiera aclarar que hay muchísimas más distribuciones de todos los colores y sabores. Algunas están pensadas para usarse en servidores, otras para funcionar embebidas en ciertos dispositivos (routers, GPS, cajeros, reproductores multimedia...), otras para superordenadores o para hardware muy específico (como videoconsolas), etc... Hay distribuciones que caben en un disquete, o que funcionan completamente desde memoria RAM (lo que las hace realmente rápidas), o pensadas para darle una segunda vida a un vetusto 486. Hay distribuciones enfocadas a la educación, a la investigación científica o a personas con accesibilidad limitada. Vamos, para prácticamente cualquier ámbito de la informática... y si no existe, cualquiera puede crearse una a medida.
Desde aquí quiero invitar a todo el mundo a probar distribuciones de todo tipo, sin miedo. Puestos a particionar el disco duro, no cuesta tanto dejar una segunda o tercera partición libre para probar distros diferentes (yo mismo tengo funcionando Windows 7, LXLE y Mageia en el mismo disco duro, y el día que me pique cambiaré Mageia por Mint o por cualquier otra).

Bueno, esto iba a ser un resumen resumido de las distribuciones existentes (apenas he hablado de cuatro) y me ha salido un tocho considerable, así que humildemente pido disculpas por mi diarrea verbal.
Estaré un mes con escasa o nula conexión a Internet, poco tiempo libre y mucho calor, pero espero volver con fuerzas renovadas y alguna entrada un poco menos pesada. ¿Cambiar el gestor de ventanas de LXDE? ¿Crear una distro personalizada con Remastersys? ¿Conky Manager? ¿ObKey a fondo? Ya se verá. En todo caso, como siempre, se aceptan sugerencias.

1 comentario: