6 de febrero de 2010

Gentoo: Domesticando a la criatura (1/2)

conjuntoEntradas() {
  Gentoo: Domesticando a la criatura (1/2)
}


Después de meteros el rollo, en el post anterior, de como empecé mis aventuras con la distribución Gentoo, voy a contar, como ya anticipé, las aventuras que voy viviendo con mi retorno.

La instalación base
Después de descargar el live CD y quemarlo (aquí no doy explicaciones, ya que sería ridículo), empecé la instalación de la criatura en mi máquina.

Enciendo la maquina, meto el CD y arranco desde él. Una vez ya se ha cargado el Linux del live CD empiezo a seguir los pasos que se especifican en el handbook.Voy haciendo lo que pone y a la vez entendiendo lo que voy haciendo, es decir nada de ejecutar instrucciones una tras otra sin saber que puñetas hacen, y entonces me topo con el primer punto que me toca documentar me un poco para conseguir una criatura bien domesticada.
Configurando los flags del GCC

Leo el párrafo del handbook y la breve explicación de unos cuantos de los flags ya me empieza a despertar las ansias de saber más de cada uno de ellos y de los valores que se les pueden dar por tal de domesticar la criatura a mí máquina y así conseguir que todo el software que compile, que es la mayoría del que se instala desde el portage de Gentoo, esté lo más optimizado para mi propia máquina.
Para ello voy a la documentación del propio gcc y veo que hay mucho que leer, como no dispongo de tanto tiempo, y el objetivo actual no es conseguir ser el un gurú del gcc, leo con especial atención el capítulo dedicado a los flags de optimización para la arquitectura i386 y x86-64, a la que pertenece mi máquina.
Después de leerme el capítulo, y con la intención de domesticar la criatura lo mejor posible decido indicar al compilador que lo que compile lo haga exclusivamente para mi arquitectura (-mtune=native) además de activar otros flags y darles el mismo valor que el handbook recomienda.
Configurando los USE flags

Después de tener al domador configurado (el gcc) toca configurar los USE flags. Los USE flags son un conjunto, bueno mejor dicho un enorme conjunto, de flags que se activan o se desactivan asignando los a la variable de entorno USE, bueno concretamente también hay otros ficheros de configuración donde indicarlos pero en la fase de instalación podemos ignorarlos y dejarlos para cuando ya estemos en la fase de afinamiento del sistema.
Estos flags son utilizados por el portage de Gentoo para especificar la configuración, funciones adicionales y/o librerías concretas a utilizar por parte de las funcionalidades del paquete a instalar.
Hay USE flags genéricos, es decir que indican lo mismo para los distintos paquetes que los soportan y otros que en función del paquete se producen resultados algo distintos. A raíz de esto y del gran número de flags que hay es difícil desde la instalación inicial activar y desactivar todos los que realmente deseamos ya que revisar todos los flags de todos los paquetes básicos que el sistema necesita puede ser un tarea bastante tediosa, además cuando activas ciertos flags se añaden nuevos paquetes que a su vez pueden tener flags los cuales no habían aparecido en la lista de paquetes a instalar que anteriormente teníamos.
Por mi parte considero que la mejor opción es revisar por encima los flags que hay, especialmente los genéricos o los que veamos que puedan influir en el core del SO y posteriormente ya afinaremos activando y desactivando los flags a medida que vayamos instalando nuevos paquetes, y en el caso que se active alguno que no se había activado el portage ya nos indicará que tiene que recompilar el paquete.
Para concluir, solo indicar que hay flags excluyentes, es decir que si se activa uno otro tiene que estar desactivado o sin indicar (entonces es como desactivado pero no se está indicando de manera forzosa) y también se puede dar el caso que al activar ciertos flags sea necesario recompilar ciertos paquetes que a raíz de esto se provoque una dependencia cíclica entre ciertos paquetes, teniendo que resolverla manualmente debido a que el sistema del portage (comando emerge) no puede resolverlo de manera autónoma, así que nos va a tocar recompilar individualmente uno de los paquetes activando y desactivando de manera temporal los flags que provocan la dependencia cíclica.

Hasta la próxima enfermos.