Gentoonizar Debian | Optimizar programas Debian | Compilación Debian
Prescindiremos del apt-build y haremos la misma tarea manualmente.
Para más información sobre el proceso con apt-build. ¡Ojo! Destacar que el proceso es diferente y/o el número de bugs és mas alto con apt-build; de la misma manera que hacer un world con apt-build conlleva sus riesgos.
Procederemos,
El primer paso es saber si tenemos los repositorios del codigo fuente en el sources.list:
cat /etc/apt/sources.list
Nos mostrará una salida similar a:
deb http://ftp2.de.debian.org/debian/ lenny main contrib non-free
deb-src http://ftp2.de.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main contrib non-free
deb-src http://security.debian.org/ lenny/updates main
.
.
.
Que nos indicará que los tenemos activados (deb-src), de lo contrario nos mostrará una salida parecida a:
deb http://ftp2.de.debian.org/debian/ lenny main contrib non-free
#deb-src http://ftp2.de.debian.org/debian/ lenny main
deb http://security.debian.org/ lenny/updates main contrib non-free
#deb-src http://security.debian.org/ lenny/updates main
.
.
Nos indica que no los tenemos activados, ya que se trata de una línea comentada (almohadilla delante #), para activarlos deberemos eliminar el comentario (#) de nuestro fichero sources.list; para ello ejecutaremos como root:
# nano /etc/apt/sources.list
Y eliminaremos el par de almohadillas (#) del principio de las líneas, guardaremos el fichero y saldremos; ejecutaremos:
# aptitude update
Bien, llegados aquí, eligiremos el programa que queramos compilar, por ejemplo, probaremos de compilar el aMSN.
Descargaremos las fuentes:
apt-get source amsn
Ahora instalaremos las dependencias de compilación, las necesitaremos para poder compilar nuestro paquete sin tener ningún problema:
# apt-get build-dep amsn
Ingresaremos en el directorio que se ha creado cuando descargamos las fuentes:
cd amsn-versión
Donde sustituiremos versión por la versión que se haya descargado del apt-get source.
Ahora miraremos que procesador tenemos:
cat /proc/cpuinfo | grep model\ name
En mi caso, mi procesador és un Intel Core 2 Duo, la salida del comando anterior me devuelve:
model name : Intel(R) Core(TM)2 Duo CPU T7250 @ 2.00GHz
Ahora nos dirigimos aquí y selecionamos la família de nuestro procesador, en mi caso (para que sirva de ejemplo) Intel.
Nos llevará a una página con los modelos de Intel, escojeremos el nuestro...
Tengo el Core 2 Duo y con el sistema operativo x64 (64 bits), por lo tanto, según la página me corresponde:
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=nocona -O2 -pipe"
CXXFLAGS="${CFLAGS}"
Aunque en mi caso y para aquellos que tengamos un Core 2 Duo, existe el flag core2 en vez de el nocona. Por lo tanto, en mi compilación utilizaré el -march=core2 con nivel -O2 de compilación; és el recomendado de los 3 existentes (O1, O2, O3), a más nivel mayor compilación, pero no significa mayor rendimiendo, se desaconseja el nivel 3 (O3) ya que produce muchos errores y peor rendimiento.
Resumiendo, mis flags quedarían:
CHOST="x86_64-pc-linux-gnu"
CFLAGS="-march=core2 -O2 -pipe"
CXXFLAGS="${CFLAGS}"
Incluimos los flags a nuestro sistema (seguire con los del ejemplo, usad los de vuestro caso concreto):
export CHOST="x86_64-pc-linux-gnu" && export CFLAGS="-march=core2 -O2 -pipe" && export CXXFLAGS="${CFLAGS}"
Comprobamos que se han incluido correctamente:
echo $CHOST && echo $CFLAGS && echo $CXXFLAGS
Nos devolverá:
x86_64-pc-linux-gnu
-march=core2 -O2 -pipe
-march=core2 -O2 -pipe
Bien, ahora ya podemos proceder a la compilación, para poder compilar sin ser usuario root necesitaremos fakeroot, será de nuestra elección utilizarlo o no. Para saber si tenemos instalado fakeroot:
aptitude show fakeroot
Si nos responde que no está instalado lo podremos instalar con:
# aptitude install fakeroot
¡Vamos a compilar!
dpkg-buildpackage -us -uc
Esperamos a que nos compile el paquete...
Instalaremos el paquete compilado:
cd ..
# dpkg -i amsn_version.deb
Donde version és la versión de nuestro paquete.
Ahora ya tendremos instalado nuestro paquete compilado y optimizado para nuestro procesador; faltará retener el paquete, ya que si hacemos un upgrade nos lo reinstalará, quedará a nuestro criterio revisar los repositorios y recompilar/reinstalar en posteriores versiones.
Para retener el paquete:
# aptitude hold paquete && (echo "paquete hold" | dpkg --set-selections)
Sustituiremos paquete por el nombre del paquete que queramos retener, siguiendo el ejemplo: amsn.
Si en alguna ocasión queremos restaurar:
# aptitude unhold paquete && (echo "paquete install" | dpkg --set-selections)
Saludos.
Siempre he tenido de menos a Debian, pero las inmensas ventajas que conlleva el poder hacer esto.
ResponderEliminarAunque de todas formas, ni asi cambio a mi Gentoo. =)