apt-build - Optimice los paquetes Debian para su sistema

Anuncio
apt-build - Optimice los paquetes Debian para su sistema
1 of 4
http://64.233.183.104/search?q=cache:HY-Q8TQSV-IJ:cronopios.net/...
Aquesta és la còpia en memòria que G o o g l e té d'http://cronopios.net/Traducciones/apt-build.es.html, capturada el 13 s
La còpia en memòria de G o o g l e és la instantània que vam fer de la pàgina quan la vam indexar.
És possible que la pàgina hagi canviat des d'aleshores; feu clic aquí per veure la pàgina actual sense ressaltar.
Aquesta pàgina en memòria pot fer referència a imatges que ja no són disponibles. Premeu aquí per a veure'n només el
Per afegir la nostra adreça a la llibreta de direccions, seguiu aquest enllaç:
http://www.google.com/search?q=cache:HY-Q8TQSV-IJ:cronopios.net/Traducciones/apt-build.es.html+apt-build+traducciones
Google no té cap relació amb els autors d'aquesta pàgina ni n'és responsable del contingut.
S'han ressaltat aquests termes de la cerca: apt build
apt-build - Optimice los paquetes Debian para su
sistema
por Julien Reveret
<[email protected]>
17 de marzo de 2005
Introducción
Usted es nuevo en el mundo Linux, o bien un viejo root. En ambos casos, no conoce de manera muy profunda los
mecanismos del sistema de paquetes de Debian, y se pregunta como instalar un programa de modo que las
actualizaciones y dependencias sean correctamente gestionadas por el sistema. Los posibles métodos para instalar un
programa son los siguientes. El primero es descargar un tarball, descomprimirlo, y lanzar los scripts configure y make
install. Esto está al alcance de todo linuxero digno de tal nombre, pero no está adaptado al sistema de gestión de
paquetes de Debian. La segunda solución es usar stow para tener una mejor gestión de las actualizaciones. Stow habría
podido ser suficiente, pero no integra el programa en las dependencias del sistema, por lo que nosotros vamos a ver la
solución «definitiva»: utilizar el magnífico apt-build para recompilar un programa ya empaquetado para Debian.
Probarlo es adoptarlo
El primer día, creó el repositorio
Para instalar apt-build, haga como de costumbre:
[shaddai@patator]~ $ sudo apt-get install apt-build
Una vez instalado, el script de post-instalación le hará varias preguntas, sobre el directorio de build, las opciones a pasar
a gcc, y la arquitectura de su procesador. Toda esta información se escribe en el fichero /etc/apt/apt-build.conf. Si
comete algún error al responder, podrá volver atrás. Esto es un ejemplo:
[shaddai@patator]~ $ cat /etc/apt/apt-build.conf
build-dir = /var/cache/apt-build/build
repository-dir = /var/cache/apt-build/repository
Olevel = -O3
march = -march=pentium2
mcpu = -mcpu=pentium2
options =
[shaddai@patator]~ $
En los parámetros build-dir y repository-dir asegúrese de indicar un directorio que esté en una partición donde tenga
espacio libre. La mayor parte de los paquetes (¿todos?) se construyen con una optimización de nivel 2, por lo que
poniendo 3 e indicando la arquitectura de la que forma parte el procesador de nuestra máquina, se puede esperar un
aumento del rendimiento. Ahora, los adeptos de Gentoo me plantearán sin duda la pregunta «¿y qué pasa con los
flags?». Lo siento por ellos, pero no hay. Por flags, los usuarios de Gentoo entienden las bibliotecas con las que se
compilan los programas. Sin embargo, está fuera de cuestión que un simple usuario toque las dependencias de un
paquete. De hecho, si lo hace, se arriesga a provocar errores que no existían en el paquete original. De nada serviría en
este caso rellenar un informe de fallo, pues no utiliza el paquete oficial de Debian, sino el suyo, así que no puede
reclamar más que a usted mismo.
05/11/2007 18:15
apt-build - Optimice los paquetes Debian para su sistema
2 of 4
http://64.233.183.104/search?q=cache:HY-Q8TQSV-IJ:cronopios.net/...
Por último, si no existe ya, necesitará añadir una línea adicional para apt-build en /etc/apt/sources.list que indique de
donde descargar las fuentes de los paquetes Debian:
deb-src ftp://réplica_de_debian/ [stable|testing|unstable] main contrib
Lance apt-get update para resincronizar sus fícheros de índice de paqutes. ¡Ya está preparado para utilizar apt-build!
Y ahora, ¿qué se hace?
Voy a comenzar por detallar las principales órdenes de apt-build. En efecto, exactamente igual que con apt-get, hay
palabras clave, tales como update, upgrade, install, source, clean-build.
Antes de nada, la orden update: ésta actualiza la lista de los índices de paquetes, ficheros que se encuentran en el
directorio /var/lib/apt/lists. En cuanto a la orden upgrade, actualiza todos los paquetes que haya compilado previamente
con apt-build. Pasemos directamente a install por medio de un ejemplo:
[shaddai@patator]~ $ sudo apt-build install memstat
-----> Installing build dependencies (for memstat) <----Reading Package Lists... Done
Building Dependency Tree... Done
0 packages upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
-----> Downloading memstat source (memstat) <----Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 22.4kB of source archives.
Get:1 ftp://127.0.0.1 1.0.4/main memstat 0.4-1 (dsc) [482B]
Get:2 ftp://127.0.0.1 1.0.4/main memstat 0.4-1 (tar) [21.9kB]
Fetched 22.4kB in 0s (322kB/s)
dpkg-source: extracting memstat in memstat-0.4
-----> Building memstat <----...
...
...
dpkg-genchanges: binary-only upload - not including any source code
dpkg-buildpackage: binary only upload (no source included)
-----> Moving packages to repository <---------> Updating repository <----Using: -O3 -mcpu=pentium2 -march=pentium2
...
...
Reading Package Lists... Done
Building Dependency Tree... Done
Reading Package Lists... Done
Building Dependency Tree... Done
The following NEW packages will be installed:
memstat
Se observa que apt-build procede en varias etapas: la instalación de los paquetes necesarios para la compilación, la
descarga de las fuentes propiamente dichas, y finalmente la compilación e instalación del paquete producido. Cuando
quiere reempaquetar usted mismo, dpkg-buildpackage no busca las dependencias por usted, al contrario que apt-build,
y el reempaquetamiento puede volverse penoso y exigir conocimientos que no se tienen necesariamente cuando no se es
el responsable de un paquete.
Hasta aquí, hemos visto una «recompilación sencilla», de cara a optimizar los programas, pero si se quiere sumergir en
las fuentes, modificar el fichero rules u otros del directorio debian/ de un paquete, apt-build se puede revelar práctico, y
le aportará quizás su primer contacto con el interior de un paquete. Dicho esto, para más información le animo a leer la
Guía del nuevo desarrollador de Debian.
Pero, ¿algo más?
Fijémonos en esta orden: source. No hace nada de hechicería, simplemente descarga de la réplica el paquete fuente así
como el diff que contiene el directorio debian/ en el que se encuentran los ficheros necesarios para la creación del
paquete (ficheros rules, control, changelog, etc…), los deja en el directorio de build, después descomprime el paquete
fuente y por último aplica el diff. Ejemplo:
[shaddai@patator]~ $ sudo apt-build source ethereal
-----> Downloading ethereal source (ethereal) ----Reading Package Lists... Done
Building Dependency Tree... Done
Need to get 6170kB of source archives.
Get:1 ftp://127.0.0.1 1.0.4/main ethereal 0.10.4-2.1 (dsc) [821B]
Get:2 ftp://127.0.0.1 1.0.4/main ethereal 0.10.4-2.1 (tar) [6154kB]
Get:3 ftp://127.0.0.1 1.0.4/main ethereal 0.10.4-2.1 (diff) [14.6kB]
Fetched 6170kB in 1s (3533kB/s)
05/11/2007 18:15
apt-build - Optimice los paquetes Debian para su sistema
3 of 4
http://64.233.183.104/search?q=cache:HY-Q8TQSV-IJ:cronopios.net/...
dpkg-source: extracting ethereal in ethereal-0.10.4
Se observa que se descarga un tercer fichero, la descripción del paquete. Ahora tiene usted las fuentes del programa, con
el directorio debian/ y los ficheros de creación del paquete, que podrá modificar a su gusto, a fin de añadir o eliminar
opciones. Una vez ha hecho sus modificaciones, puede fabricar e instalar el paquete usando la orden apt-build install
paquete_modificado. Pero atención, como se ha dicho anteriormente, utiliza su propio paquete y sus modificaciones
pueden acarrear errores. El modificar paquetes es un juego que puede ser peligroso si no se sabe bien que es lo que se
hace.
Se han visto ya las opciones más importantes. Quedan las más pequeñas, que suponen toda la diferencia, como
clean-build, que es a apt-build lo que la orden clean es a apt-get: limpia por completo el directorio de build, pero no el
repositorio. Puede eliminar un paquete con la orden remove, y obtener información sobre las fuentes con info.
Para finalizar, le reenvío a la página de manual de apt-build, que contiene algunas opciones interesantes según el caso
en el que se encuentre. Pero no le dejo totalmente abandonado, me he guardado lo mejor para el final.
Con los si, se rehace el mundo, también con apt-build
El diablo está entre nosotros
La última orden de la que voy a hablar es world, que debería decirle algo a los adoradores del diablillo o del pez que
pincha. En efecto, en los sistemas BSD, para recompilar todos los ports, basta colocarse en /usr/ports y teclear make
world. El concepto ha sido retomado por el autor de apt-build, y esto es lo que pasa cuando se quiere rehacer el mundo:
[shaddai@patator]~ $ sudo apt-build world
-----> Rebuilding the world ! ----You should read README.Debian first
[shaddai@patator]~ $
La lectura de este famoso README parece ser obligatoria, y allí se aprende que se debe previamente crear la lista de
paquetes a recompilar e instalar en lugar de los paquetes actuales, lista de la que es preferible retirar paquetes
demasiado sensibles como gcc, libc6 u otros paquetes vitales. Creemos esta lista:
root@patator:~ # dpkg --get-selections | awk '{if ($2 == "install") print $1}' > /etc/apt/apt-build.list
Una vez se haya editado esta lista, será posible hacer un apt-build world para recompilar y optimizar todo nuestro
sistema, o casi.
Y ahora, la tragedia
Ha utilizado apt-build para crear sus propios paquetes, y tras una actualización con apt-get dist-upgrade uno de sus
hermosos paquetes ha sido reemplazado por un paquete oficial, qué horror. Podría haber evitado esto modificando el
pinning de sus paquetes construidos con apt-build. Para poner una prioridad más importante a los paquetes construidos
con apt-build, deberá modificar el fichero /etc/apt/preferences como sigue:
Package: *
Pin: release o=apt-build
Pin-Priority: 990
De este modo ya no tendrá que preocuparse por que un dist-upgrade desafortunado pueda reemplazar sus paquetes por
los oficiales. Para verificar las prioridades de los «repositorios», utilice la orden apt-cache policy, que le dará un
resultado similar a éste:
[shaddai@kavado]~ $ apt-cache policy
Package Files:
100 /var/lib/dpkg/status
release a=now
500 http://ftp2.de.debian.org sid/non-free Packages
release o=Debian,a=unstable,l=Debian,c=non-free
origin ftp2.de.debian.org
500 http://ftp2.de.debian.org sid/contrib Packages
release o=Debian,a=unstable,l=Debian,c=contrib
origin ftp2.de.debian.org
500 http://ftp2.de.debian.org sid/main Packages
release o=Debian,a=unstable,l=Debian,c=main
origin ftp2.de.debian.org
990 file: apt-build/main Packages
release o=apt-build,a=apt-build,l=apt-build,c=main
05/11/2007 18:15
apt-build - Optimice los paquetes Debian para su sistema
4 of 4
http://64.233.183.104/search?q=cache:HY-Q8TQSV-IJ:cronopios.net/...
Pinned Packages:
Esta solución de hacer pinning del paquete es limpia. Sin embargo, preste buena atención a las actualizaciones.
Efectivamente, si se decide reempaquetar una biblioteca de la que dependen varios programas, y no la actualizamos,
puede bloquear la actualización de los paquetes que dependan de ella. Por lo tanto, prudencia, eche un ojo a las
actualizaciones de los paquetes de los que cuide.
¿Qué hora es? ¿Más de medianoche?
Es hora de irse, espero haberle dado ganas de utilizar apt-build, es una utilidad muy interesante y útil. Debo también
advertirle: el autor es precavido y le invita a no recompilar algunos programas como gcc u otros. Ni él ni yo somos
responsables o culpables de las tonterías que usted haga. Así que si rompe su Debian, no me escriba (salvo para
hacerme reir). Observe también que apt-build no inventa paquetes, si el software que quiere instalar no existe como
paquete Debian, apt-build no podrá descargar las fuentes de una réplica de Debian y compilarlas (en este caso tendrá
que hacer una petición de paquete y esperar a que sea aceptada).
05/11/2007 18:15
Descargar