Capítulo 7. Comprobación del paquete en busca de fallos

# Capítulo 7. Comprobación del paquete en busca de fallos

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.

Debes conocer varios métodos para comprobar el paquete y localizar errores antes de transferirlo a repositorios públicos.

Probar el paquete en una máquina distinta a la usada en su construcción es una magnífica idea. Debes poner atención en todos los avisos y errores que se produzcan en las pruebas explicadas a continuación.

## 7.1. Cambios sospechosos

Si encuentras un nuevo archivo de parche autogenerado con el nombre `debian-changes-*` en el directorio `debian/patches` después de la construcción de tu paquete de Debian no nativo en formato `3.0 (quilt)`, es probable que hayas cambiado algún archivo accidentalmente o bien que el guión de compilación haya modificado las fuentes originales. Si el error es tuyo, corrígelo. Si es causado por el guión de compilación, corrige el origen del error con dh-autoreconf como en Sección 4.4.3, “Personalización del archivo `rules`” o bien inténtalo con los archivos `source/options` como en Sección 5.24, “Archivo `source/options`”.

## 7.2. Comprobación de la instalación del paquete

You must test your package for whether it installs without problems. The debi(1) command helps you to test installing all the generated binary packages.

    $ sudo debi gentoo_0.9.12-1_i386.changes

To prevent installation problems on different systems, you must make sure that there are no filenames conflicting with other existing packages, using the `Contents-`i386`` file downloaded from the Debian archive. The apt-file command may be handy for this task. If there are collisions, please take action to avoid this real problem, whether by renaming the file, moving a common file to a separate package that multiple packages can depend on, using the alternatives mechanism (see update-alternatives(1)) in coordination with the maintainers of other affected packages, or declaring a `Conflicts` relationship in the `debian/control` file.

## 7.3. Comprobación de los guiones del desarrollador («maintainer scripts»)

Ya se ha comentado que los guiones del desarrollador (los archivos `preinst`, `prerm`, `postinst` y `postrm`) son complicados, excepto si se utilizan los generados por el paquete `debhelper`. No se recomienda su utilización a los desarrolladores principiantes (véase Sección 5.18, “Archivos `{pre,post}{inst,rm}`” ).

Si el paquete utiliza estos guiones del desarrollador modificados o no triviales, debes comprobar su funcionamiento en la instalación, desinstalación, eliminación y actualización. Algunos errores en estos guiones del desarrollador sólo se producen cuando los paquetes se eliminan o purgan. Utiliza la orden dpkg como se indica a continuación para probarlos:

    $ sudo dpkg -r gentoo
    $ sudo dpkg -P gentoo
    $ sudo dpkg -i gentoo_versión-revisión_i386.deb

Sigue esta secuencia para la comprobación:

- Instala la versión anterior del paquete (requerido).

- Actualiza ahora a la versión actual.

- Vuelve a la versión anterior (opcional).

- Elimínalo.

- Instala la nueva versión del paquete.

- Elimínalo.

- Instálalo de nuevo.

- Elimínalo.

Si estás trabajando en la construcción de la primera versión del paquete, construye versiones «fantasma» anteriores (será suficiente cambiar el número de la versión) para realizar las pruebas y así prevenir problemas.

Recuerda que si ya hay versiones anteriores del paquete en el repositorio Debian, los usuarios actualizarán el paquete desde la versión anterior disponible (y esta versión puede ser distinta en la versión estable y de pruebas). Realiza las comprobaciones también con estas versiones.

Aunque no se garantiza la reinstalación de una versión anterior, es preferible asegurarse que es posible sin generar problemas.

## 7.4. El paquete `lintian`

Ejecuta lintian(1) en tu archivo `.changes`. La orden lintian ejecutará varios guiones para revisar los errores más frecuentes de los paquetes [75].

    $ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes

Por supuesto, cambia el nombre del fichero por el nombre del fichero `.changes` generado por tu paquete. Los mensajes de error de lintian se codifican con una letra al inicio de la línea del mensaje:

- `E:` para los errores; indica violaciones de las normas o un error en el paquete.

- `W:` para las advertencias; indica una posible violación de las normas o error en el paquete (pero pudiendo ser una falsa alarma).

- `I:` para información; proporciona algo de información sobre algún aspecto del paquete (que tal vez sea mejorable).

- `N:` para las notas o anotaciones; proporciona mensajes detallados que pueden ayudarte en la depuración del paquete.

- `O:` para mensajes ignorados; un mensaje ignorado (según lo configurado en los archivos `lintian-overrides` pero que se emite debido a la opción `--show-overrides`.

En el caso de los errores (líneas que comienzan por E:), lee la explicación (líneas N:), cambia el paquete para eliminarlos o verifica que los avisos son falsos. En este caso, genera los archivos `lintian-overrides` como se ha descrito en Sección 5.14, “Archivos `{`nombre_del_paquete`.source/} lintian-overrides`”.

Observa que puedes construir el paquete con dpkg-buildpackage y ejecutar lintian todo con sólo una orden si utilizas debuild(1) o pdebuild(1).

## 7.5. La orden debc

Puedes ver la lista de archivos del paquete binario Debian ejecutando la orden debc(1) como sigue:

    $ debc nombre_del_paquete.changes

## 7.6. La orden debdiff

Puedes comparar el contenido de dos paquetes de fuentes Debian ejecutando la orden debdiff(1) como sigue:

    $ debdiff versión_anterior.dsc nueva_versión.dsc

Puedes comparar la lista de ficheros de dos paquetes binarios de Debian con la orden debdiff(1) ejecutando la orden como sigue:

    $ debdiff versión_anterior.changes nueva_versión.changes

Este programa es útil para verificar que no hay ficheros que se hayan cambiado de sitio o eliminado por error, y que no se ha realizado ningún otro cambio no deseado al actualizar el paquete.

## 7.7. La orden interdiff

Puedes comparar dos ficheros `diff.gz` con la orden interdiff(1). Esto es muy útil para verificar que no se han realizado cambios inadvertidos por el responsable del paquete al actualizar el paquetes que se han construido con el formato `1.0`. Ejecuta lo siguiente:

    $ interdiff -z versión_anterior.diff.gz nueva_versión.diff.gz

El nuevo formato de fuentes `3.0` conserva los cambios en varios archivos de parches («.patch») como se describe en Sección 5.25, “Archivos `patches/*`”. Puedes seguir los cambios realizados por cada archivo `debian/patches/*` utilizando la orden interdiff.

## 7.8. La orden mc

Algunas de las operaciones de comprobación del paquete descritas puede realizarse de forma muy intuitiva si empleamos un gestor de ficheros como mc(1), que permite visionar tanto el contenido del paquete `*.deb`, como el de los ficheros `*.udeb`, `*.debian.tar.gz`, `*.diff.gz`, `*.orig.tar.gz`.

Vigila que no haya ficheros innecesarios extra o de tamaño cero, tanto en el binario como en el paquete fuente. A veces, hay cosas que no se limpiaron adecuadamente, debes ajustar tu fichero `rules` para arreglar esto.

[75] No es necesario añadir la opción `-i -I --show-overrides` a la orden lintian si la has incluido en la configuración en `/etc/devscripts.conf` o `~/.devscripts` según se explicó en Sección 6.3, “La orden debuild” .

Capítulo 6. Construcción del paquete |  | Capítulo 8. Actualizar el paquete