Libertonia
Portada · Todo · Software Libre · Desarrolladores · Comunidad · Internet · Tecnología · Meta · Diarios
Optimizando paquetes

Debian
Por Envite
departamento ¿Cómo que i386? , Sección Desarrolladores
Puesto a las Tue Jun 7th, 2005 at 05:04:04 PM CET
Harto de ver gastarse mis ciclos de procesador ejecutando instrucciones no optimizadas (lo único recompilado en mi equipo era el núcleo), me decidí a hacerme mis propios paquetes Debian optimizados para mi arquitectura. Aparte de tardar un poquito (o dos, o tres...) en compilar, es muy fácil.

 


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
< Debian en mac mini (I) (32 comments) | Apple Switch: Apple se cambia a Intel (36 comments) >
Enlaces Relacionados
· More on Debian
· Also by Envite

Encuesta
¿Debería Debian crear un repositorio de paquetes optimizados?
· No, sería aumentar un montón el tamaño de las réplicas 27%
· Bueno, quizá una genérica para Pentium y superiores, no una por subarquitectura 33%
· No, cualquiera que necesite paquetes así se los puede hacer 27%
· No, sería romper la compatibilidad hacia atrás de Debian 0%
· Sí, claro, sería una buena idea 11%
· Si la rubia pone el espacio de disco y los ciclos para todas las recompilaciones, sí. 0%

Votos: 18
Resultados | Otras Encuestas

Menu
· crear cuenta
· FAQ
· búsqueda
· Fuentes de Noticias

Login
Nueva cuenta
Usuario:
Contraseña:

Ver: Modo: Orden:
Optimizando paquetes | 5 comentarios (4 temáticos, 1 editoriales, 0 ocultos)
¿No dicen que todo está inventado? (5.00 / 1) (#2)
por thibaut (asp16 [ykwim] alu.ua.es) a las Mon Jun 6th, 2005 at 09:45:03 PM CET
(Información Usuario)

Pégale un ojo a apt-build.

P.S.: La próxima vez incluye "Debian" en el título, que si no nos acusan de distro-centrismo. :P



Tutorial de apt-build (none / 0) (#4)
por Quique a las Fri Jun 10th, 2005 at 11:55:36 AM CET
(Información Usuario) http://cronopios.net/blog/

He traducido y publicado en mi web un pequeño manual de apt-build:

apt-build - Optimice los paquetes Debian para su sistema.


[ Padre ]


 
Un detallito (5.00 / 1) (#3)
por jcantero (jcantero@agujero-negro.escomposlinux.org) a las Tue Jun 7th, 2005 at 11:07:29 AM CET
(Información Usuario) http://www.escomposlinux.org/jcantero/

Es que estaba leyendo las Release notes de Sarge, y dicen explicitamente:
En la distribución sarge se han movido los paquetes que antes estaban en la parte non-US de la distribución al archivo principal. Debería eliminar todas aquellas líneas que referencien a «non-us» en su fichero /etc/apt/sources.list si aún tiene alguna.
Así que hay dos lineas del sources.list que sobran ¿no?

--
"Papá, ¡Internet es más que una red pornográfica global!" -- Lisa Simpson


 
Comentario desde GULiC: dch (none / 0) (#5)
por Envite a las Wed Jul 13th, 2005 at 09:55:57 AM CET
(Información Usuario)

Este artículo está enlazado desde la página del Grupo de Usuarios de Linux de Canarias GULiC al que pertenezco (y no fui yo), y allí surgió un comentario interesante que copio aquí:
Enviado por aplatanado el 8 Julio, 2005 - 20:34
Pues si la verdad. Es un artículo muy interesante al que se podría enlazar desde aquí. Además es interesante que hagamos uso de nuestros blogs y pongamos historias como esas, que enriquecen la web del GULiC y nos resultan útiles para todos.
PD: No puedo ponerlo en Libertonia porque no tengo cuenta... y no quiero tener una en todos lados. Pero para que quede constancia la forma recomendada de cambiar el changelog es con el comando dch.

--
May the Free Software Force be with you...

Un abrazo a aplatanado y a lcabrera y gracias a todos

No estoy de acuerdo con lo que dices, pero defenderé con mi vida tu derecho a decirlo.
Voltaire



 
Optimizando paquetes | 5 comentarios (4 temáticos, 1 editoriales, 0 ocultos)
Ver: Modo: Orden:

ecol Logo Powered by Scoop
Todas las Marcas Registradas y copyrights de esta página son propiedad de sus respectivos dueños.
Los comentarios son propiedad del que los escribe.
Los iconos de las noticias y el logotipo son propiedad de Javier Malonda.
El Resto © 2002 Escomposlinux.org y aledaños.

Puedes sindicar los contenidos de libertonia en formato RSS 1.0 y RDF 0.9. También se puede sindicar la cola de envíos pendientes de moderación.

El proyecto escomposlinux.org está dedicado a la memoria de tas

crear cuenta | faq | búsqueda