TechTip: Recompilando paquetes en debian
Muchas veces encontramos que los paquetes que nos ofrece debian precisan de algún ajuste, por necesidad o por capricho. A continuación viene una nota técnica de cómo hacerlo rápidamente y sin complicaciones.
Para empezar, comprobaremos que nuestro archivo de repositorios /etc/apt/sources.list está configurado para que podamos descargarnos las fuentes de los paquetes que queramos modificar.
Para ello, podemos copiar las líneas que especifiquen repositorios de paquetes que comiencen por deb, y una vez copiadas entonces sustituiremos el término deb por deb-src en cada una de ellas:
# vim /etc/apt/sources.list deb http://ftp.rediris.es/debian lenny main contrib non-free deb-src http://ftp.rediris.es/debian lenny main contrib non-free
Hecho esto, procederemos primero a actualizar las listas de paquetes disponibles. Luego instalaremos el conjunto de paquetes build-essential para poder bajarnos las fuentes, y el conjunto de paquetes devscripts para facilitar la tarea de la recompilación, instalación, etc.
Por último, no hay que olvidar incluir las dependencias de compilación del paquete, instalables fácilmente a través de apt-get build-dep.
Un buen lugar para dejar las fuentes puede ser /usr/local/src.
# cd /usr/local/src/. # apt-get update # apt-get install build-essential devscripts # apt-get source vsftpd [...] dpkg-source: extracting vsftpd in vsftpd-2.0.7 dpkg-source: info: unpacking vsftpd_2.0.7.orig.tar.gz dpkg-source: info: applying vsftpd_2.0.7-1.diff.gz # apt-get build-dep vsftpd
A partir de aquí nos habremos descargado tanto las fuentes del paquete como el código fuente descomprimido con todos los ajustes que oficialmente el equipo Debian realizó en su día.
Si queremos trabajar directamente sobre el código fuente original, podemos tirar del archivo .orig.tar.gz. Por norma general, será siempre mejor seguir las líneas de mantenimiento de paquetes de Debian.
# ls vsftpd-2.0.7 vsftpd_2.0.7-1.dsc vsftpd_2.0.7-1.diff.gz vsftpd_2.0.7.orig.tar.gz # cd vsftpd-2.0.7
A partir de aquí modificaremos la configuración de cómo se compilará el software, así como el directorio debian que contiene todos los scripts involucrados en la configuración e instalación del paquete: Podemos incluir archivos que no se generan por defecto, modificar las operaciones que se realizan en la instalación y borrado de este paquete, etc…
/usr/local/src/vsftpd-2.0.7# vim defs.h
(definimos algunos parámetros previos a la compilación del paquete)
[...]define VSFTP_USERNAME_MAX 256
/usr/local/src/vsftpd-2.0.7# cd debian
/usr/local/src/vsftpd-2.0.7/debian# ls
README.Debian copyright vsftpd.dirs vsftpd.logrotate vsftpd.postrm
changelog ftpusers vsftpd.docs vsftpd.manpages watch
compat patches vsftpd.init.d vsftpd.pam
control rules vsftpd.install vsftpd.postinst
/usr/local/src/vsftpd-2.0.7/debian# vim ftpusers
(añadimos por ejemplo al un usuario ftp en la configuración)
ftpluser
/usr/local/src/vsftpd-2.0.7/debian# vim vsftpd.pam
(modificamos la configuración de pam, para utilizar la autenticación contra otros mecanismos)
[...]
/usr/local/src/vsftpd-2.0.7/debian# vim vsftpd.logrotate
/var/log/vsftpd.log {
# ftpd doesn't handle SIGHUP properly
compress
missingok
notifempty
rotate 15
daily
}
Una vez hechas las modificaciones, es necesario dejar un detalle del cambio en el paquete en el archivo debian/control, mediante el uso de la herramienta debchange.
Es siempre importante indicar de que se trata de una versión local (-l) para identificar el paquete que resultará de la recompilación, añadiendo nuestra dirección de correo, etc. Hecho esto, compilaremos el paquete mediante el uso de dpkg-buildpackage desde la raíz del directorio del código fuente.
/usr/local/src/vsftpd-2.0.7/debian# debchange -u low -l .sandboxed. & cd .. vsftpd (2.0.7-1.sandboxed.1) unstable; urgency=low * New maintainer, local version por personal use. * This version supports now long usernames, tailored for an specific environment.-- sandbox <sandbox@boxed.4.u.net> Mon, 19 Jul 2010 18:08:45 +0200 vsftpd (2.0.7-1) unstable; urgency=medium * New maintainer, taking over package from Matej. * New upstream release (Closes: #497149): [...] /usr/local/src/vsftpd-2.0.7# dpkg-buildpackage -rfakeroot -D -us -b & cd ..
Por último, descenderemos a la raíz de /usr/local/src e instalaremos el paquete recompilado…y ya habremos terminado.
/usr/local/src7# dpkg -i vsftpd_2.0.7-1.sandboxed.1_i386.deb
Etiquetas: debian, linux, techtip, técnico
Volveré a revisar este escrito después de un par de años estudiando Chino en la escuela oficial, te parece?