Lo primero es poderse bajar paquetes fuente: asegúrese de que su /etc/apt/sources.list
tenga una línea deb-src
al estilo de:
deb-src http://security.debian.org/ sarge/updates main contrib non-free
deb-src ftp://ftp.es.debian.org/debian/ sarge main contrib non-free
deb-src ftp://ftp.es.debian.org/debian/ sarge-proposed-updates main contrib non-free
deb-src ftp://ftp.es.debian.org/debian-non-US/ sarge/non-US main contrib non-free
deb-src ftp://ftp.es.debian.org/debian-non-US/ sarge-proposed-updates/non-US main contrib non-free
Lo siguiente es (tras un apt-get update
si es necesario) bajarse el paquete fuente que corresponde al paquete que pretende optimizar/recompilar:
$ mkdir gnumeric-source
$ cd gnumeric-source
$ apt-get source gnumeric
Y a esperar... al ratito se habrán bajado unas cuantas cosas, y verá en el directorio tres archivos y un directorio:
gnumeric-1.4.3
gnumeric_1.4.3-4.diff.gz
gnumeric_1.4.3-4.dsc
gnumeric_1.4.3.orig.tar.gz
Antes de intentar compilar el paquete, necesitamos lo que en Debian se llaman "dependencias de compilación", es decir, las librerías de desarrollo que hacen falta ara compilar el paquete. Así que (esto sí hay que hacerlo como superusuario):
# apt-get build-depends gnumeric
Los paquetes necesarios se instalarán normalmente, y podemos desinstalarlos al acabar, si queremos recuperar ese espacio.
Listo ya el paquete para compilar, vamos a decirle al sistema de empaquetado que hemos cambiado de versión, para que dpkg
nos permita instalar el paquete en vez de decirnos que se trata de la misma versión que ya tenemos. Para ello, editamos el fichero gnumeric-1.4.3/debian/changelog
y añadimos las líneas
gnumeric (1.4.3-4.Env) unstable; urgency=high
* Recompilado para AMD K6-3.
-- Noel Torres (Envite) <envite@rolamasao.org> Sun, 05 Jun 2005 10:40:30 +0000
Lo importante es cambiar el número de versión del paquete (aumentándolo) pero sin cambiar el número de Debian (para que una versión superior pueda instalarse). La solución es añadir algo al número de versión actual.
Tras este cambio, el paquete se encuentra ya completamente listo. Ahora, el sistema de compilación.
Una opción que hay quién usa es tocar el fichero de reglas de Debian, pero a veces no es elemental. Por eso, lo que vamos a hacer es crear unos guioncillos que se metan entre el empaquetador y el compilador.
Empecemos por salvar los binarios reales del compilador, para lo que tenemos que encontrarlos:
$ which gcc
/usr/bin/gcc
$ ls -l /usr/bin/gcc
lrwxr-xr-x 1 root root 7 2005-06-06 18:27 /usr/bin/gcc -> gcc-3.3
$ which gcc-3.3
/usr/bin/gcc-3.3
$ ls -l /usr/bin/gcc-3.3
-rwxr-xr-x 1 root root 85196 2005-05-25 01:03 /usr/bin/gcc-3.3
Ya hemos encontrado el auténtico binario. De igual manera, tenemos /usr/bin/g++-3.3
para revisar.
Así que vamos a crear los enlaces. Como superusuario movemos los binarios:
# dpkg-divert --rename /usr/bin/gcc-3.3
# dpkg-divert --rename /usr/bin/g++-3.3
Y ahora creamos los guiones, con el contenido siguiente (para AMD K6-3):
#!/bin/bash
/usr/bin/gcc-3.3.distrib -march=k6-3 $@
y
#!/bin/bash
/usr/bin/g++-3.3.distrib -march=k6-3 $@
con nombres (evidentemente) /usr/bin/gcc-3.3
y /usr/bin/g++-3.3
y los hacemos ejecutables:
#chmod a+x /usr/bin/gcc-3.3 /usr/bin/g++-3.3
Finalmente, (teniendo el paquete fakeroot
instalado) lanzamos la compilación desde el directorio gnumeric-source/gnumeric-1.4.3
con:
$dpkg-buildpackage -b -rfakeroot
y nos vamos a tomar un café.
A la vuelta, veremos que han aparecido en gnumeric-source
uno o varios ficheros .deb
: nuestros ansiados paquetes.
gnumeric_1.4.3-4.Env_i386.deb
gnumeric-common_1.4.3-4.Env_all.deb
gnumeric-doc_1.4.3-4.Env_all.deb
gnumeric-plugins-extra_1.4.3-4.Env_i386.deb
Como toque final, les cambiamos el nombre:
$ for i in `ls *i386.deb` ; do mv $i `basename $i _i386.deb`_k6-3.deb ; done
Y ya podemos instalar aquellos que deseemos, teniendo en cuenta las dependencias:
# dpkg -i gnumeric_1.4.3-4.Env_k6-3.deb gnumeric-common_1.4.3-4.Env_all.deb