apt-build, optimizando los paquetes para nuestra máquina

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.

10 comentarios en «apt-build, optimizando los paquetes para nuestra máquina»

  1. Pingback: Optimizar los paquetes para nuestra máquina, APT-BUILD « PC Obsesion

  2. ¡Qué pasada! Se acabó compilar a mano. Tengo instalado el paquete checkinstall, y cuando compilaba algo me lo hacía .deb para después borrarlo facilmente, pero esta vía es muy cómoda.
    Por cierto, al igual que con gzip, se supone que podría reinstalar todo el software de mi máquina sin sufrir ningún tipo de sorpresa ¿no?.
    Gracias zootropo.

  3. En teoría podrías hacerlo, uno por uno o con world, aunque hay algún paquete que recomiendan no recompilar, el compilador (gcc) y alguno más. Echa un vistazo a los dos últimos enlaces si te interesa, pero haz una copia de todo lo que te pueda ser de interés antes por si acaso.

  4. Ostras, muy bueno el artículo.
    Faltaría a mi ver una manera de pueda autentificar los paquetes del repositorio de apt-build, más que nada para no tener que andar con el –allow-unauthenticated cada vez.
    ¿Alguna idea de cómo hacer eso?

  5. Pingback: Wikipeando » apt-build, optimizando los paquetes para nuestra máquina

  6. Pingback: apt-build, optimizando o código para o teu sw. « Que che vou contar…

  7. Jajaja chido el artículo Zootropo, en respuesta a lo que pregunta HED. Yo pondría un alias en el .bashrc de la siguiente manera:

    alias instalar=’sudo apt-get –reinstall –allow-unauthenticated install’

    para desde la consola solo llamarlo así:

    calderov@compu:$ instalar gzip

Responder a Calderov Cancelar respuesta

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.