GoboLinux DescargasDocumentaciónComunidadRecetasCapturas de Pantalla


Traducciones desactualizadas. La fecha de la última modificación de la versión original de este texto es más reciente que esta traducción. La versión original (en inglés) contiene información más reciente. ¡Usted puede contribuir con una actualización!.

Una mirada a GoboLinux

¿Qué es GoboLinux?

GoboLinux es una distribución de Linux modular: organiza los programas en tu sistema de una manera nueva y lógica. En lugar de tener algunos de los ficheros de un programa en /usr/bin, otros en /etc e incluso más ficheros del mismo programa en /usr/share/something/or/another, cada programa posee su propio directorio, manteniendo sus ficheros separados de una manera ordenada, permitiéndote ver todos los programas instalados en el sistema y que ficheros pertenecen a cada programa de una manera rápida.

Esto es lo que puedes ver en la raiz de un sistema con GoboLinux:

div class="console">
~] cd /
/] ls
Programs
Users
System
Files
Mount
Depot

/Programs es el directorio donde residen todos los programas. Sin excepciones. Puedes ver lo que tienes instalado simplemente mirando dentro de el.

/] cd /Programs
/Programs] ls

AfterStep     E2FSProgs    Htop        NTP          Subversion
ALSA-Driver   Ed           HTTPD       OpenOffice   Sudo
ALSA-Lib      Eject        Hydrogen    OpenSSH      Swfdec
ALSA-OSS      Elinks       IBM-Java2   OpenSSL      Synaptics
ALSA-Utils    Ethereal     ID3Lib      Pango        SysFSUtils
Ardour        Expat        IEEE80211   Patch        Sysklogd
Audacity      File         IMLib2      Perl         TCL
Aumix         Firefox      InetUtils   Pkgconfig    TeTeX
Autoconf      Flac         Intltool    PodXTPro     Texinfo
Automake      Flex         IpodSlave   Popt         TIFF
Bash          Fontconfig   Iptables    PPP          TiMidity++

...           ...          ...         ...          ...
Cada programa contiene todos los ficheros que este incluye en el sistema, almacenados en un subdirectorio correspondiente a su versión.
/Programs] find Bash
Bash
Bash/3.0
Bash/3.0/bin
Bash/3.0/bin/sh
Bash/3.0/bin/bash
Bash/3.0/bin/bashbug
Bash/3.0/info
Bash/3.0/info/bash.info
Bash/3.0/man
Bash/3.0/man/man1
Bash/3.0/man/man1/bash.1
...
Puedes mantener múltiples versiones de un mismo programa a la vez, de esta manera puedes usar la versión del programa que quieras, o incluso ambas cuando sea necesario.
/Programs] ls -l OpenOffice
total 8
drwxr-xr-x  9 root root 4096 2005-09-22 01:07 1.1.4
drwxr-xr-x  3 root root 4096 2005-09-23 04:36 2.0
lrwxrwxrwx  1 root root    5 2005-09-23 04:36 Current -> 2.0

/Programs] ls -l GTK+
total 12
drwxr-xr-x  10 root root 4096 2005-10-02 01:39 1.2.10
drwxr-xr-x   9 root root 4096 2005-08-21 05:48 2.6.7
lrwxrwxrwx   1 root root    6 2005-10-02 01:39 Current -> 2.6.7
drwxr-xr-x   4 root root 4096 2005-10-02 01:39 Settings

¿Cómo es esto posible?

Simplemente porque igual que usamos el sistema de ficheros para organizar los programas almacenados, también lo usamos para organizar los ficheros que contiene por categorias, así que el sistema puede encontrar un fichero sin necesidad de buscar en todos los programas instalados. GoboLinux hace esto por medio de unos directorios que contienen enlaces simbólicos y que apuntan a los ficheros instalados. De esta manera es facil saber a que paquete pertenece el fichero XYZ, por ejemplo.
/System/Links/Libraries] ls -l | cut -b 49-
...
libgtk-1.2.so.0 -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
libgtk-1.2.so.0.9.1 -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
libgtk.a -> /Programs/GTK+/1.2.10/lib/libgtk.a
libgtk.la -> /Programs/GTK+/1.2.10/lib/libgtk.la
libgtk.so -> /Programs/GTK+/1.2.10/lib/libgtk-1.2.so.0.9.1
libgtk-x11-2.0.la -> /Programs/GTK+/2.6.7/lib/libgtk-x11-2.0.la
libgtk-x11-2.0.so -> /Programs/GTK+/2.6.7/lib/libgtk-x11-2.0.so.0.600.7
libgtk-x11-2.0.so.0 -> /Programs/GTK+/2.6.7/lib/libgtk-x11-2.0.so.0.600.7
libhfs.a -> /Programs/CDRTools/2.01/lib/libhfs.a
libhistory.a -> /Programs/Readline/5.0/lib/libhistory.a
libhistory.so -> /Programs/Readline/5.0/lib/libhistory.so.5.0
libhistory.so.5 -> /Programs/Readline/5.0/lib/libhistory.so.5.0
...
El sistema está, por lo tanto, configurado para usar esos directorios cuando busca algún fichero:
~] cat /etc/ld.so.conf
/System/Links/Libraries

~] echo $PATH
/System/Links/Executables

...

Encontrarás que existen directorios que indexan las principales categorías de ficheros: ejecutables, bibliotecas, ficheros de cabecero, ficheros de datos compartidos por los programas, manuales, y algunos más. Esta especie de indexado es recursivo, de manera que si una serie de programas comparten un directorio para almacenar cierto tipo de datos, automáticamente obtienen un directorio donde pueden buscar esos datos (/System/Links/Shared/aclocal por ejemplo).

Otra propiedad importante de este indexado por medio de enlaces, es que si alguno hace referencia a un fichero que no existe, este pasa a ser un enlace roto, y queda inactivo. Esto facilita encontrar y arreglar problema y lo que es más importante, asegura que los índices estan siempre sincronizados con el estado actual del sistema. Di adios al viejo problema de ver como el gestor de paquetes te dice que libXYZ no está instalado, aunque tu lo estás viendo en tu sistema. Con GoboLinux si posee un enlace que no está roto, está en el sistema y viceversa.

¿Qué pasa con la compatibilidad con Unix?

El esquema del sistema de GoboLinux parece que está muy desviado de la tradición de Unix. ¿Siginifica esto que todos los programas deben ser ajustados para que funcionen de esta manera?, afortunadamente la respuesta es no. A través de un mapeado de las rutas tradicionales a sus correspondientes en GoboLinux, podemos mantener la compatibilidad con Unix de manera transparente.

~] ls -l /dev/null | cut -b 45-
/dev/null

~] ls -l /bin/sh | cut -b 45-
sh -> /Programs/Bash/3.0/bin/bash

~] ls -l /usr/include/stdio.h | cut -b 45-
stdio.h -> /Programs/Glibc/2.3.6/include/stdio.h

No hay un gran ciencia detrás de todo esto: /bin es un enlace a /System/Links/Executables. Y también tt>/usr/bin y /usr/sbin y ..., todos los directorios "binarios" son mapeados al mismo sitio. Graciosamente, esto nos permite incluso una mayor compatibilidad que algunas distribuciones con una apariencia más estándar. En GoboLinux, todas las rutas estándar enlazan los ficheros de su tipo, mientras que otras distribuciones dan lugar a incompatibilidades tales como un script que intenta acceder a /usr/bin/foo, cuando el fichero realmente está en /usr/local/bin/foo.

Te habrás dado cuenta de que las rutas clásicas de Unix, no son mostradas en el listado de la raiz del sistema de ficheros del primer ejemplo. Realmente están ahí, pero son "escondidas" usando GoboHide, una extensión del kernel. Esto se hace únicamente por razones estéticas y es completamente opcional, GoboLinux no necesita modificaciones en el kernel o cualquier otro componente. Pero a los usuarios de GoboLinux parece gustarles mucho. :-)

¡Más!

Un tour online puede sólo aproximarte. No hay nada como intentarlo y experimentarlo tu mismo: GoboLinux es distribuido como un Live CD, así que puedes ver los pros y los contras de el sistema arrancándolo directamente desde el disco, incluso antes de instalarlo. Descarga una imagen del disco y diviértete -- Si eres nuevo, encontrarás probablemente que la nueva estructura, más organizada, es más confortable; si eres un usuario experimentado, te gustará la facilidad de control que el sistema GoboLinux, más modular y transparente, te dará.