no hace tanto
Allá por el año 1999 Daniel Robbins se aburrió de su distro habitual, Stampede Linux, y decidió crear su propia distribución. Como él mismo escribe en una serie de artículos, el hombre no tenía recursos para competir con Debian o Red Hat. Así que decidió automatizar el proceso de crear los paquetes lo más posible. La distribución se crearía a sí misma desde cero; los usuarios seguirían el mismo proceso y compilarían todos sus binarios, eliminando la grasa superflua y quedándose con un sistema optimizado al máximo.
Hacer una distribución de Linux no es cosa sencilla. La versión 1.0 estuvo lista tres años después, en marzo de 2002. ¿Por qué tanto tiempo? Gentoo no es una distribución de Linux cualquiera; no se limita a empaquetar unos cuantos programas específicos de algún campo. Más bien intenta ser una distribución universal; y con más de 10,000 paquetes y dando soporte a 6 arquitecturas, desde luego lo intenta con ganas.
Es interesante resaltar que Robbins fue contratado en mayo de 2005 por Microsoft, para "ayudarles a entender el software libre". Sin embargo, en una nueva muestra de que el software libre sobrevive a sus creadores, transfirió las marcas registradas y sus derechos de autor a una fundación, que actúa ahora de forma independiente.
por qué es diferente
Pero todavía apenas hemos empezado a rascar en las diferencias con otras distribuciones más tradicionales. Como todas, Gentoo empaqueta software; pero, al contrario que casi todas, Gentoo no configura, describe sólo someramente, y modifica poco el software distribuido. Los paquetes se bajan mediante HTTP y wget
, y suelen ser casi idénticos a los que podemos bajarnos de las páginas de cada proyecto como archivo tar comprimido.
¿Qué tiene entonces de original Gentoo? La primera novedad es el sistema de fabricación de binarios, ebuild. Tiene su origen en el software que diseñó Robbins para ayudarle a hacer su primera distro; además de los flags para el compilador, se puede elegir qué dependencias incluir, globalmente y para paquetes individuales. Yo, como haría melenas, tengo los siguientes flags:
USE="-gtk -gnome qt kde -arts"
y algunos más. Así le digo a ebuild que no quiero, en lo posible, usar GTK ni GNOME; y que me añada dependencias con KDE y cualquier interfaz que use QT. De esta manera, me libro de dependencias extrañas y sobre todo de tener software instalado que no quiero, por ejemplo el odioso demonio arts.
La segunda novedad mundial es portage (palabra difícil de traducir; sería algo como "acarreo"). Se trata de una grandísima colección de software indexado, categorizado y aún mejor: verificado. El sistema se quejará y no dejará instalar los paquetes que estén en estado masked, es decir "enmascarados". Ciertos programas no funcionan en algunas arquitecturas (por ejemplo, OpenOffice.org versión 1.x no compilaba para amd64). Otros no están todavía probados; se quedan en cuarentena hasta que se verifique que funcionan. Hay incluso paquetes incompatibles entre sí: no se pueden tener varios servidores de correo andando al mismo tiempo. Así, cuando el software pedido no cumple ciertas condiciones, se "enmascara" para que no cause problemas.
En rigor, portage no es exactamente una novedad: es similar en concepto a los ports de FreeBSD, otra colección de software que se baja y compila bajo demanda. Dado que no soy usuario de este sistema operativo no puedo decir mucho más (al contrario que Daniel Robbins, que durante una época fue usuario de FreeBSD). Lo que sí parece emanar de la documentación de portage es que FreeBSD puede llevar haciéndolo años, pero el sistema de Gentoo es mucho más flexible y cuidado. Se nota que Robbins tuvo tiempo de aprender de sus virtudes y estudiar sus puntos flacos.
Es ciertamente un archivo amplísimo. Es posible encontrar sus carencias para ciertas arquitecturas; para amd64 faltan bastantes paquetes. Pero se pueden instalar los paquetes aunque estén enmascarados, si uno se siente aventurero. Por otra parte, el que haya que probar independientemente cada paquete para cada arquitectura aumenta el esfuerzo y la complejidad, pero evita situaciones como los retrasos interminables de Debian sarge: todas las arquitecturas debían estar libres de errores críticos antes de liberarla, y el proceso duró años. Creo que esto no podría ocurrir en Gentoo.
sí pero ¿cómo me lo monto?
Para bajarnos Gentoo podemos elegir, como es habitual, entre varias opciones: instalador mínimo (equivalente a un netinstall de Debian), imagen universal o distribución en CDs (disponible también de terceras partes). En mi caso, ya que tenía que compilar un driver nuevo para la tarjeta de red, elegí la imagen universal. Al iniciarlo nos encontramos con un sistema Gentoo básico arrancado; todo lo tenemos que hacer siguiendo la guía de instalación, bastante prolija y que nos indica lo que hay que hacer paso a paso -- todo con herramientas estándar, de modo que el particionado lo hacemos con fdisk
, para el paso al sistema nuevo usamos el comando chroot
, y nos fabricamos un kernel con make menuconfig
. Si le tenéis miedo a compilar un kernel, instalar Gentoo es una terapia de choque; a la quinta vez os sentiréis como en casa. Y os aseguro que llegaréis a la quinta...
Cuando tenemos el sistema base, reiniciamos y comenzamos en el stage 3 (paso 3); entiendo que se puede comenzar antes, aunque no se recomienda. Nos encontramos con un sistema muy básico: el único editor es nano
, y no tenemos apenas herramientas de configuración. Ahora comienza el reinado de emerge
-- este comando nos permitirá poblar nuestra nueva instalación, buscar información sobre los paquetes existentes, actualizarlos y eliminar software no usado. Se trata de una especie de APT dopado que baja, configura y compila el código de un tirón, encargándose de gestionar los pasos intermedios. Siguiendo el enfoque minimalista de la distro, la información sobre los paquetes existentes se actualiza con un rsync
disfrazado de emerge --sync
. Y tarda muchísimo, es mucha información.
A partir de aquí comenzamos a bajarnos paquetes y a configurar el software resultante. Crear un fichero de configuración xorg.conf
es de las tareas más ingratas que hay; demasiado tarde me di cuenta de la existencia de xorgconfig
, que abrevia el proceso. Nunca había escrito tantos ficheros de configuración; como diría el Gran Wyoming, "se sufre, pero se aprende". Hasta los servicios deben ser añadidos manualmente al arranque. Una vez configurado todo no hay que estar dándole de comer; en esto se parece a Debian.
También se parece en la facilidad de actualización. Al grandioso
# apt-get update && apt-get upgrade
Se le contrapone el
# emerge --sync && emerge --update world
con una función similar, pero que consume 10 veces más ancho de banda y tarda 100 veces más. No veo la información de portage muy optimizada, aunque es mejor que no critique porque no sé en realidad qué contiene.
empiezan los mitos
El nombre de Gentoo viene de uno de los pingüinos más veloces en el agua, sin duda refiriéndose a lo rápido que van los binarios compilados ex profeso para nuestra máquina y nuestras necesidades. Sin embargo, los críticos dicen que no es para tanto -- salvo casos patológicos como paquetes mal compilados o procesadores exóticos, no se ganará más de un 5 o un 10%.
Así es en mi prueba favorita, POVBench: mientras que SUSE 10.0 tardó 28:03 en completar la prueba y Mandriva 2005 27:53, Gentoo la liquidó en 25:39; un 9% más rápido. (Se trata de un AMD Athlon 64 3200+; por comparación, mi antiguo P4 a 2.4 GHz tardaba 42:42.) He probado también con openssl speed
, pero no tengo todos los resultados todavía. En descomprimir y compilar manualmente el código de OpenSSL tardé unos 130 segundos en SUSE, contra 118 en Gentoo; de nuevo un 10% de diferencia. La distribución es definitivamente más rápida que SUSE y que Mandriva, pero apenas se recupera el tiempo invertido en compilarlo todo.
Y ya puestos, ¿se tarda realmente tanto en compilar las cosas? Veamos. Bajar por una línea ADSL y compilar el paquete xine-ui
, sin librerías, cuesta 2:16. La suite OpenSSL está lista desde el emerge openssl
en 3:05. Sin embargo, yo uso KDE; lo dejé toda la noche compilando el escritorio. Y para instalar Evolution, me pide nada menos que 53 paquetes. Nos informan de que Mozilla Firefox tarda unas 2 horas.
Por otro lado, no penséis que al eliminar dependencias se ahorra espacio en disco; mi sistema KDE mínimo ocupa ya más de 3 GB. El administrador cuidadoso reservará al menos 6 GB para la partición raíz (asumo que al menos home
estará en otro sitio); y vigilará periódicamente el directorio /usr/portage/distfiles/
. Aquí se guardan los paquetes bajados, y se descargarán de nuevo de internet si acaso se necesitan, por lo que es seguro borrar su contenido.
Otro mito es el del código fuente a ultranza, que reconozco haber alimentado durante todo el artículo; ahora es el momento de desmentirlo y dejaros como al principio. En realidad Gentoo sí soporta paquetes binarios; es posible incluso bajarse un kernel precompilado, y en cosas como OpenOffice.org se agradece -- la compilación requiere 3 GB de espacio libre, y supongo que debe tardar días. Como nos aclaró PATAN en un comentario, el paquete openoffice-bin nos lo da todo hecho, e incluso puedo comprobar que se baja las librerías de compatibilidad con 32 bits en el proceso.
terminamos
Gentoo da una sensación de dinamismo controlado bastante curiosa: está siempre a medio hacer, y aún así consigue generar sistemas estables con las últimas versiones de los paquetes. Su aproximación minimalista a la configuración de paquetes permite saber exactamente qué se tiene en la máquina; si no lo has hecho tú, no está.
¿Vale la pena dedicarle el esfuerzo que pide? Es difícil decir; si sólo queréis usar un sistema con un kernel Linux, ni os molestéis. Pero si tenéis aunque sea un poco de curiosidad, sí, vale la pena; es un enfoque distinto del habitual y hace ver el software como algo menos rígido de lo habitual.