Dividiendo un paquete Debian
Introducción
Desde hace un tiempo tengo un paquete Debian con algunos programas, archivos de configuración y ejemplos que utilizo para ayudarme en la administración de taquiones, y he llegado a un punto en el que necesito parte de él fuera del servidor, disponible en otras máquinas que utilizo diariamente.
El problema es que instalar el paquete en otra máquina implica incorporar servicios que no necesito en ella, así como cambios en la configuración que no me convienen en modo alguno, por lo que me decidí a dividir el paquete original en varios más controlables.
Lo primero fue ver que necesita un paquete para instalar en el servidor
(taquiones-admin) y otro para instalar en los clientes (taquiones-utils),
y que ambos hacían uso de una librería Perl común, por lo que opté por
crear un tercero (libtaquiones-admin-perl), pero manteniendo el mismo fuente
para ambos y la misma entrada en el repositorio. Los cambios se han efectuádo
sobre todo en los archivos de construcción de paquetes Debian bajo el
directorio debian/
y me ha sido de mucha ayuda tener claros algunos
conceptos.
- La raíz de todo es un paquete fuente que hay que definir en
debian/control
bajo la etiqueta 'Source:'. - Todos los paquetes comparten el mismo registro de cambios
debian/changelog
, puesto que parten del mismo fuente, y en rigor no se deben considerar como paquetes independientes. - Las herramientas debhelper generalmente no renombran nada,
y aunque es posible usar archivos
.install
y.dirs
para distribuir lo instalado desde el fuente original, es normal que lleguen a compartirse archivos comoREADME
entre todos los paquetes binarios resultantes.
Por cierto, la claridad no ha aparecido en un único sitio, ya quisiera; por contra he tenido que ir descubriéndola según me encontraba con problemas, y aunque la red está plagada de recursos no siempre han estado a la altura de las circunstancias, sobre todo por la antigüedad de muchos de ellos.
La forma de proceder es la siguiente:
- Se construye el software con las herramientas necesarias según el caso.
Unos usarán compiladores de C y yo me limito a construir los módulos
Perl
con cierto filtro de mi cosecha, y asegurándome de que las páginas de manual y los programas (scripts
) están incluídos en el proyecto. - Se procede a instalar, empleando una raíz común, en los mismos directorios en los que debería aparecer en una instalación real. En mi caso siempre utilizo los estándar de Debian con lo que tengo varios pasos adelantados.
- Se deben crear ...
En el fuente original
No ha sido necesaria tocar la parte de la instalación. El archivo Makefile
contiene lo mismo de antes, y debe tener en cuenta que existe un lugar en el
sistema de archivos que usar como raíz de la instalación, y que éste puede ser
(y lo será) cambiado en tiempo de ejecución. En mi caso he incluído el valor
de $DESTDIR
como prefijo para todas las rutas.
En los archivos debian/
Referencias y enlaces
- Múltiple changelogs ?. Hilo en el que se resuelve la duda de si debemos incluír o no un registro de cambios por cada paquete final ó comparten todos uno.