Tabla de contenidos
The rewrite of this tutorial document with updated contents and more practical examples is available as Guide for Debian Maintainers. Please use this new tutorial as the primary tutorial document.
Después del lanzamiento del paquete, es posible que debas actualizarlo pronto.
Supongamos que se ha creado un informe de fallo en tu paquete con el número
#654321
, y que describe un problema que puedes
solucionar. Para construir una nueva revisión del paquete, necesitas:
Si debes aplicar una modificación nueva, ejecuta:
dquilt new
para
establecer el nombre de la modificación;
nombre_modificación.patch
dquilt add
para establecer el fichero al cual se aplicará la modificación.
archivo_a_modificar
Corregir el problema en el archivo original.
dquilt refresh
para guardar los cambios realizados en el
archivo del parche
.
nombre_modificación.patch
dquilt header -e
para añadir la descripción (breve) del
cambio realizado;
Si debes actualizar una modificación ya existente, ejecuta:
dquilt pop
para deshacer
el parche
nombre_modificación.patch
que debes actualizar (puesto que se habrá ejecutado y se supone que es
necesario modificarlo).
nombre_modificación.patch
Corregir el problema existente en la versión incorrecta del archivo de
parche
.
nombre_modificación.patch
dquilt refresh
para actualizar
.
nombre_modificación.patch
dquilt header -e
para actualizar la descripción en la
cabecera del archivo del parche.
while dquilt push; do dquilt refresh; done
para aplicar
todos los parches eliminando cosas innecesarias;
Añadir la información de la revisión en el inicio del archivo
changelog
(del directorio «Debian»), por ejemplo
ejecutando dch -i
o explícitamente indicando el número de
versión y revisión ejecutando dch -v
,
y a continuación detallar los cambios realizados utilizando un editor
[76].
versión
-revisión
Incluye la descripción (breve) del error y la solución, seguida de la
referencia de la notificación del error con (Closes:
#654321)
. De esta manera, el informe de error sera «cerrado»
automáticamente por el sistema de mantenimiento del
repositorio Debian cuando el paquete sea aceptado en el repositorio.
Deberás repetir los pasos anteriores para cada una de las modificaciones
realizadas en la actualización del paquete, a la par que actualizas el
fichero changelog
de Debian mediante
dch
.
Repite lo que hiciste en Sección 6.1, “(Re)construcción completa” y Capítulo 7, Comprobación del paquete en busca de fallos.
Una vez que estes satisfecho, cambia el nombre de la distribución en el
archivo changelog
de UNRELEASED
a
unstable
(o bien
experimental
).[77]
Upload the package as in Capítulo 9, Enviar el paquete. The difference is that this time, the original source archive won't be included, as it hasn't been changed and it already exists in the Debian archive.
One tricky case can occur when you make a local package, to experiment with
the packaging before uploading the normal version to the official archive,
e.g.,
.
For smoother upgrades, it is a good idea to create a
1.0.1
-1
changelog
entry with a version string such as
.
You may unclutter 1.0.1
-1~rc1
changelog
by consolidating such local
change entries into a single entry for the official package. See Sección 2.6, “Nombre del paquete y versión” for the order of version strings.
When preparing packages of a new upstream release for the Debian archive, you must check the new upstream release first.
Empieza por leer los archivos changelog
,
NEWS
y cualquier otra documentación donde el autor
original describa los cambios de la nueva versión.
Puedes comprobar los cambios entre las fuentes originales de la nueva versión y de la anterior para detectar cualquier cambio sospechoso de producir errores ejecutando:
$ diff -urNnombre_archivo
-versión_anterior
nombre_archivo
-nueva_versión
Las modificaciones realizadas en los archivos generados por «Autotools»
(missing
, aclocal.m4
,
config.guess
, config.h.in
,
config.sub
, configure
,
depcomp
, install-sh
,
ltmain.sh
y Makefile.in
) puedes
ignorarlas. Puedes eliminarlos antes de ejecutar diff en
las fuentes para inspeccionarlas.
Si el paquete
que examinas está correctamente empaquetado utilizando los nuevos formatos
nombre_del_paquete
3.0 (native)
o 3.0 (quilt)
para
empaquetar una nueva versión del autor es esencial copiar el directorio
debian
de la versión anterior a la nueva, para a
continuación, realizar las adaptaciones necesarias. Puedes copiar el
directorio debian
de la versión anterior a la nueva
versión ejecutando tar xvzf
/
desde el directorio de las fuentes de la nueva versión [78]. A continuación deberás realizar algunos tareas
obvias:
ruta
/a
/nombre_del_paquete
_versión_anterior
.debian.tar.gz
Comprimir las fuentes originales en el archivo
nombre_del_paquete_
.
nueva_versión
.orig.tar.gz
Actualizar el archivo changelog
Debian ejecutando
dch -v
.
nueva_versión
-1
Añade una nueva linea con el texto «New upstream release» para indicar que se trata de una nueva versión de las fuentes originales.
Describe sucintamente los cambios realizados en las fuentes
originales por el autor que solucionan errores informados y
cerrar los informes añadiendo Closes:
#
.
numero_del_error
Describe sucintamente los cambios de la nueva versión
del desarrollador que solucionan errores previamente reportados y cierra
dichos errores añadiendo Closes:
#
.
número_del_error
while dquilt push; do dquilt refresh; done
para aplicar
todos los parches eliminando cosas innecesarias;
Si las modificaciones no se ejecutan correctamente, inspecciona la situación
(mira la información de los archivos .rej
) como se
muestra a continuación.
Si uno de los parches aplicados está integrado en las fuentes originales,
ejecuta dquilt delete
para eliminarlo.
Si uno de los parches entra en conflicto con los cambios realizados por el autor en las fuentes originales,
ejecuta dquilt push -f
para aplicar los parches de la
versión anterior para forzar los rechazos (tendrás la información de los
rechazos en los archivos
).
rechazo
.rej
Edita los archivos
manualmente para
saber el efecto que se pretende con
rechazo
.rej
.
rechazo
.rej
Ejecuta dquilt refresh
para actualizar el parche.
Continua hasta la ejecución de while dquilt push; do dquilt
refresh; done
.
Puedes automatizar este proceso utilizando la orden uupdate(1) como sigue:
$ apt-get sourcenombre_del_paquete
... dpkg-source: info: extractingnombre_del_paquete
innombre_del_paquete
-versión_anterior
dpkg-source: info: unpackingnombre_del_paquete
_versión_anterior
.orig.tar.gz dpkg-source: info: applyingnombre_del_paquete
_versión_anterior
-1.debian.tar.gz $ ls -Fnombre_del_paquete
-versión_anterior
/nombre_del_paquete
_versión_anterior
-1.debian.tar.gznombre_del_paquete
_versión_anterior
-1.dscnombre_del_paquete
_versión_anterior
.orig.tar.gz $ wget http://ejemplo.org/nombre_del_paquete
/nombre_del_paquete
-nueva_versión
.tar.gz $ cdnombre_del_paquete
-versión_anterior
$ uupdate -vnueva_versión
../nombre_del_paquete
-nueva_versión
.tar.gz $ cd ../nombre_del_paquete
-nueva_versión
$ while dquilt push; do dquilt refresh; done $ dch ... documenta las modificaciones realizadas
Si has configurado el archivo «debian/watch
» como se ha
descrito en Sección 5.21, “Archivo watch
” ,puedes saltarte la orden
wget. Simplemente, ejecuta uscan(1) en el directorio
en lugar de la orden uupdate. Así, se buscará
automáticamente el archivo de las fuentes, se
descargará en tu ordenador y se ejecutará la orden
uupdate [79].
nombre_del_paquete
-antigua_versión
Puedes liberar la nueva versión del paquete repitiendo lo expuesto en Sección 6.1, “(Re)construcción completa” , Capítulo 7, Comprobación del paquete en busca de fallos y Capítulo 9, Enviar el paquete .
Para actualizar un paquete no es necesario actualizar el formato del
paquete. Aún así, puedes aprovechar completamente la funcionalidad de
debhelper
y del formato
3.0
haciendo lo siguiente [80]:
Si necesitas de nuevo algunos de los archivos de plantilla eliminados,
puedes regenerarlos ejecutando otra vez dh_make con la
opción --addmissing
en el directorio de las fuentes. A
continuación modifícalos correctamente.
Si el paquete no está actualizado para utilizar la nueva sintaxis de la
versión 7+ de la orden dh de debhelper
en el archivo
debian/rules
, actualízalo para usar
dh. También deberás actualizar
debian/control
.
Si deseas actualizar el archivo rules
construido por el
mecanismo de inclusión Makefile
del sistema de
compilación Debian (cdbs
) a la nueva
sintaxis dh, lee el siguiente documento para comprender
las variables de configuración DEB_*
.
copia local de /usr/share/doc/cdbs/cdbs-doc.pdf.gz
Si estás trabajando con un paquete construido con el formato
1.0
sin el archivo
,
puedes actualizarlo a la nueva versión nombre_del_paquete
.diff.gz3.0 (native)
añadiendo el archivo debian/source/format
con la linea
3.0 (native)
. Copia los otros archivos del directorio
debian/*
.
Si estás trabajando con un paquete construido con el formato
1.0
con el archivo
,
puedes actualizarlo a la nueva versión nombre_del_paquete
.diff.gz3.0 (native)
añadiendo el archivo debian/source/format
con la linea
3.0 (native)
. Copia los otros archivos del directorio
debian/*
. Importa el archivo
nombre_del_paquete.diff
generado por la orden
filterdiff -z -x '*/debian/*'
al sistema quilt
[81].
nombre_del_paquete
.diff.gz >
nombre_del_paquete.diff
Si el paquete se ha construido utilizando un sistema de parches distinto
como dpatch
, dbs
o cdbs
utilizando las opciones
-p0
, -p1
o -p2
,
puedes convertirlo al formato quilt
utilizando el guión deb3
explicado en http://bugs.debian.org/581186.
Si el paquete se ha construido ejecutando la orden dh con
la opción --with quilt
o bien con
dh_quilt_patch y dh_quilt_unpatch,
elimina todo esto y utiliza el nuevo formato fuente 3.0
(quilt)
.
Consulte DEP - Debian Enhancement Proposals y adoptar las propuestas ACEPTADAS.
Repasa la sección Sección 8.3, “Nueva versión del programa fuente” por si debes repetir algunos de los pasos indicados en ella.
Si los documentos originales utilizan una codificación antigua, es una buen práctica actualizarlos a UTF-8.
Utiliza iconv(1) para hacer conversiones de codificación en ficheros de texto sin formato.
iconv -f latin1 -t utf8foo_in.txt
>foo_out.txt
Utiliza w3m(1) para conversiones desde ficheros HTML a ficheros de texto sin formato con codificación UTF-8. Al hacerlo, el sistema debe estar configurado para usar la codificación UTF-8.
LC_ALL=C.UTF-8 w3m -o display_charset=UTF-8 \ -cols 70 -dump -no-graph -T text/html \ <nombre_del_archivo_a_modificar.html
>nombre_del_archivo_modificado.txt
Here are a few reminders for updating packages:
Conserva las entradas anteriores del archivo changelog
(suena a obviedad, pero se han dado casos de ejecutar dch
en lugar de dch -i
).
Los cambios en la construcción del paquete Debian deben ser reconsiderados; elimina las modificaciones anteriores (sea lo que sea) y recuerda de añadir todo lo necesario, a no ser que haya una buena razón para no hacerlo.
Si se ha realizado alguna modificación en la compilación (te enterarás al
inspeccionar los cambios en las fuentes originales) puede que sea necesario
actualizar el archivo debian/rules
y las dependencias
de compilación en el archivo debian/control
.
Debes comprobar si hay alguna comunicación de parches del paquete en el sistema de gestión de errores (puede darse el caso que algún usuario envíe un parche ya construido y que te sea de utilidad) en Debian Bug Tracking System (BTS).
Comprueba el contenido del archivo .changes
para
asegurarte que envías el paquete a la distribución correcta, que los
informes de errores que se cierran con la nueva versión del paquete están
listados en el campo Closes
del archivo, que el contenido
de los campos Maintainer
y Changed-By
son correctos, que has firmado el archivo con tu clave GPG, etc.
[76] Para escribir la fecha y hora en el formato requerido, debes utilizar
LANG=C date -R
.
[77] Si utiliza la orden dch -r
para realizar este último
cambio, asegúrese que guarda el archivo changelog
explícitamente con el editor.
[78] Si el paquete
está construido con el anterior formato nombre_del_paquete
1.0
, esto se
puede hacer ejecutando zcat
/
en la nueva versión de las fuentes. ruta
/a
/nombre_del_paquete
_numero_de_versión_anterior
.diff.gz|patch
-p1
[79] Si la orden uscan descargar las fuentes pero no ejecuta
la orden uupdate, debes corregir el archivo
debian/watch
añadiendo debian
uupdate
al final de la URL del archivo.
[80] Si quien patrocina tu paquete u otros desarrolladores hacen objeciones a la actualización del formato del paquete, no vale la pena empeñarse en argumentar a favor. Hay otras cosas más importantes que atender.
[81]
Puedes fragmentar el archivo nombre_del_paquete.diff
en
varios archivos de parches utilizando la orden splitdiff.