sandboxed

mostly harmless…

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: , , ,

Posted in tecnología.

1 comment

One Reply

  1. Sergio jul 23rd 2010

    Volveré a revisar este escrito después de un par de años estudiando Chino en la escuela oficial, te parece?


Leave a Reply