redhat-system_tools.pngFUENTE: enlace

Una de las características más interesantes de Gentoo es que permite instalar las aplicaciones compiladas de forma optimizada para tu máquina, consiguiendo un mayor rendimiento.

Apt-build nos ofrece algo similar en Debian y derivadas (como Ubuntu).

Para instalarlo en el sistema:

sudo aptitude install apt-build

Se nos preguntará por el nivel de optimización que queramos conseguir; cuanto más trabajo haga el compilador para optimizar la aplicación que instalemos, mejor rendimiento obtendremos con ella, pero evidentemente, más tardaremos en compilar. Recomendado dejarlo en Medio.

También nos preguntará por la arquitectura de nuestro procesador. Si dudais os puede ser de utilidad la sección de flags seguros de Gentoo-wiki; fijaros en el flag -march. Yo tengo un Intel Core 2 Duo T7200 pero el flag -march=core2 que sería el correspondiente a las arquitecturas Core 2 Duo no está disponible más que a partir de la versión 4.3 de gcc (la de Ubuntu Feisty Fawn es la 4.1.2), así que utilizo Prescott.

Antes de empezar a usarlo hay que comprobar que los repositorios con las fuentes de las aplicaciones no estén comentadas en el archivo de fuentes:

sudo gedit /etc/apt/sources.list

y comprobad que para cada uno de los repositorios que nos interesen haya no sólo una línea que comience con deb, si no otra que comience con deb-src y que no haya un símbolo de almohadilla (#) al comienzo de la línea (si ese es el caso, borrad la almohadilla para descomentarlo).

Vereis que durante la instalación de apt-build se ha añadido una nueva fuente a sources.list que será parecido a esto:

deb file:/var/cache/apt-build/repository apt-build main

Esto es porque apt-build funciona haciendo un apt-get source para descargar el código fuente, compilándolo con dpkg-buildpackage y poniendo el paquete resultante en este nuevo repositorio local para que apt-get lo encuentre.

Primero vamos a modificar el archivo /etc/apt/preferences para que los paquetes de este nuevo repositorio local tengan prioridad sobre los del resto de repositorios:

sudo gedit /etc/apt/preferences

y añadimos las líneas:

Package: *
Pin: release o=apt-build
Pin-Priority: 990

Esto especifica que todos los paquetes (*) del release apt-build tienen una prioridad de 990 (apt-get instalará los paquetes de mayor prioridad).

El uso de apt-build es muy similar a apt-get o aptitude; tenemos todos los comandos típicos: update para actualizar la lista de paquetes, upgrade para actualizar los paquetes a las últimas versiones o install para instalar un paquete (en este caso compila, crea un paquete e instala).

Vamos a actualizar primero la lista de los paquetes disponibles:

sudo apt-build update

y ahora instalemos una aplicación cualquiera para comprobar que todo funciona correctamente, por ejemplo vamos a reinstalar gzip:

sudo apt-build install gzip

apt-build descargará las fuentes, compilará e intentará instalar el nuevo paquete, pero como ya está instalado y es la misma versión nos informará de que la versión instalada ya está en su versión más reciente. Si hacemos

sudo apt-build –reinstall install gzip

para reinstalar el paquete se quejará de que el tamaño de la versión de los repositorios es distinto de la versión de nuestro repositorio local. Si indicamos a apt-get que instale el paquete sin preocuparse por autentificarlo:

sudo apt-get –reinstall –allow-unauthenticated install gzip

ahora si, habremos sustituido la versión de gzip original por una optimizada para nuestra máquina.

Una última opción (bastante peligrosa) es world, que compila y reinstala todos los paquetes del sistema para adaptarlos a la máquina en la que se ejecuta. Si quereis más información sobre su uso (que no aconsejo) podeis echarle un vistazo a Primera experiencia con apt-build o apt-build – Optimice los paquetes Debian para su sistema.