Creando parches para paquetes Debian

De WikiSalud
Revisión a fecha de 10:31 10 sep 2019; Alortiz (Discusión | contribuciones)

(dif) ← Revisión anterior | Revisión actual (dif) | Revisión siguiente → (dif)
Saltar a: navegación, buscar

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

Fuentes

Herramientas personales
Espacios de nombres

Variantes
Acciones
Navegación
Herramientas