Mantener un paquete Debian con svn-buildpackage
Esta receta explica cómo usar la herramienta
svn-buildpackage
para mantener un paquete Debian existente.
Introducción
Utilizar control de versiones para los ficheros de gestión de un paquete Debian tiene muchas ventajas. Para esta receta voy a partir del paquete “pyhello”, que hicimos en la anterior receta Empaquetar un script Python para Debian. Si no la conoces, échale un vistazo aunque sepas de qué va el tema.
Ingredientes
- svn-buildpackage
- lintian
Repo subversion
Si eres mantenedor de Debian es fácil conseguir acceso a los repositorios subversion de alioth para subir allí tus ficheros. Pero si eres un mantenedor amateur tendrás que hacerte tu propio repositorio. Para hacer el repositorio mira la receta Servir un repositorio subversion con Apache-2.0. Si no necesitas que sea accesible remotamente, basta con que sigas únicamente la sección “Crear el repositorio” de dicha receta. A partir de ahora voy a suponer que tienes tu repositorio en /var/deb-repo
.
Migrando el paquete
Usa svn-inject
para subir tu paquete al repositorio. Este programa se encarga de crear el módulo y los directorios necesarios. Así que es tan fácil como ejecutar:
A parte de crear el módulo pyhello
en el repo (como he dicho antes), ha hecho también un ckeck out en el directorio actual, de modo que echa un vistazo:
mergeWithUpstream
svn-buildpackage
tiene dos modos de uso:
- Manteniendo en el repo también los ficheros del uptream (el software que estás empaquetando). Es la opción por defecto y es lo recomendable cuando es un paquete Debian nativo, es decir, el mantenedor es el autor del paquete y sólo se distribuye en Debian.
- Manteniendo sólo los ficheros de gestión del paquete. Se puede activar con la opción ‘-o’ de
svn-inject
o con una propiedad subversion que se llama “mergeWithStream”. Esto es lo habitual y es lo que hemos hecho en el paso anterior. En este modo es necesario poner los ficheros .tgz del upstream en un directorio llamadotarballs
.
Compilando el paquete
Desde el directoio trunk
ejecuta:
Si además quieres que después de compilar se verifiquen posibles errores con lintian
escribe:
Normalmente, svn-builpackage
se negará a compilar el paquete a menos que todos los ficheros modificados hayan sido subidos al repo. Si quieres compilar aunque no cumplas esa condición, añade la opción --svn-ignore
El paquete generado queda en ~/prj/pyhello/build-area/pyhello_0.1-1_i386.deb
Cerrar un bug
Si arreglas algún problema en el paquete (sin que haya salido una nueva versión del uptream) tendrás que regenerar el paquete para su distribución. Este nuevo paquete debe tener un número de versión posterior, en concreto suele cambiar el número que va después del guión. Para crear una nueva minor-release después de arreglar los problemas, ejecuta:
Esto ha creado una nueva entrada en el debian/changelog
, que debes editar convenientemente. Después, puedes compilar la nueva versión del paquete del mismo modo que has hecho antes, que ahora queda en ~/prj/pyhello/build-area/pyhello_0.1-2_i386.deb
Y cuando todo sea correcto, sube los cambios al repo con:
Fíjate en que ahora tienes un nuevo directorio en pyhello/tags/0.1-1
que representa la versión anterior del paquete.
Este proceso es el equivalente al “dch -i” cuando no se usa svn-buildpackage.
Nueva versión del ‘upstream’
Cuando el autor produce una nueva versión de su programa, tú como mantenedor del paquete debes empaquetarla. Para ello, descarga el .tar.gz de la web o repo del autor y ejecuta el siguiente comando:
Después, realiza los mismos pasos que en la sección anterior para cerrar un bug.
Este proceso es el equivalente al “uupdate -u” en la forma ‘manual’.