Creando parches para paquetes Debian
Contenido |
Resumen
Modificación de las fuentes de un paquete en los repositorios de Debian
Introducción
Esta guía no trata sobre construir un paquete desde cero (Para ello, remítase a Empaquetando software para Debian)
En su lugar, esta guía muestra como introducir modificaciones a un paquete Debian mediante parches (que no directamente sobre upstream), con la intención manifiesta de crear un .deb
distribuible.
Procedimiento
Configurando el equipo
Los siguientes paquetes resolverán todas las dependencias, incluso creo que instalará un par de compiladores
aptitude install dpkg-dev quilt dpatch devscripts
Iniciando la mesa de trabajo
Escogemos un directorio en el cual vamos a trabajar los sources del proyecto. En este caso, en /root/ vamos a crear paquetes/. Dicho directorio debe ser accesible por el usuario _apt, que debió ser creado en la instalación de paquetes.
mkdir /root/paquetes chown _apt -R paquetes/
Entramos al directorio paquetes. En él vamos a descargar los sources del paquetes que queremos modificar (En este caso, de squidGuard, muy alto apuntamos). Inmediatamente después, conseguimos los paquetes necesarios para que la compilación de dicho paquete sea un éxito. (Resolver el infierno de las dependencias, un breve placer en la la enfermedad infantil de todo administrador de sistemas)
cd /root/paquetes apt-get source squidguard apt-get build-dep squidguard
Con esto, hemos creado nuestro entorno de trabajo. Debemos acceder al directorio recién creado, todos los comandos en la siguiente parte se consideran a partir desde este punto.
cd squidguard-1.5/
Probando la construcción del paquete
Antes de nada, nos aseguramos de tener las herramientas necesarias para producir el paquete:
debuild -b -uc -us
Pues que la salida varía de acuerdo al paquete. Es difícil determinar a golpe de vista si algo esta mal, por lo que se recomienda que se revise exhaustivamente la salida para encontrar errores o advertencias que hayan de solucionarse.
Modificando el paquete
¿dpatch o quilt? Esa pregunta debe resolverse con la información contenida en el fichero *.dsc del paquete, que se obtiene al descargar las fuentes del paquete en cuestión en la raíz de /root/paquetes/
. Atentos al apartado:
cat squid3_3.5.23-5.dsc -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA256 Format: 3.0 (quilt) Source: squid3 Binary: squid3, squid, squid-dbg, squid-common, squidclient, squid-cgi, squid-purge Architecture: any all
Flujo sugerido
Primero, aplicamos los parches anteriores. Lo cual es básicamente útil para no tener que repetirnos:
quilt push -a
Creanos nuestro nuevo parche. Se aconseja prefijarle con un número correlativo. Precisamente para revisar que número correlativo se le corresponde, podemos usar el comando series de quilt
quilt series
Así, creamos finalmente el nuevo parche
quilt new 17_squid3.4_redirector_protocol.patch
Y agregamos los paquetes que vayamos a modificar.
Tómese en cuenta que deben agregarse los paquetes antes de empezar a modificarlos. Exacto, dolor.
quilt add src/sgDiv.c*
Y modificamos con nuestras avanzadas herramientas de desarrollo:
vim -p src/sgDiv.c*
Esto es algo así como guardar los cambios
quilt refresh
Y terminar de aplicar los cambios. En este punto, el parche es precisamente creado
quilt pop -a -f
Lo que sigue es volver a crear el paquete con el comando ya conocido:
debuild -b -uc -us
E instalarlo, los paquetes asociados se han creado en el directorio anterior:
dpkg -i ../squidguard_1.5-5.1_amd64.deb
Más opciones para quilt
Borrar un parche delete
, y la opción -r
borrará también el fichero con el parche en si mismo.
quilt delete -r 0032-add_ssl_crtd.patch Removing patch debian/patches/0032-add_ssl_crtd.patch Now at patch debian/patches/0002-Change-default-file-locations-for-debian.patch