Capítol 7. Com comprovar el teu paquet per trobar errors.

Sumari

7.1. Canvis sospitosos
7.2. Comprovació de la instal·lació del paquet
7.3. Comprovar els guions del desenvolupador («maintainer scripts»).
7.4. El paquet lintian.
7.5. L'ordre debc.
7.6. L'ordre debdiff.
7.7. L'ordre interdiff.
7.8. L'ordre mc.

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.

Cal que coneguis els procediments per comprovar el paquet i localitzar les errades abans d'enviar-lo als repositoris públics.

Provar el paquet en una màquina distinta de la que has fet servir en la construcció és una magnífica idea. Cal que posis atenció en tots els errors detectats en les proves que s'expliquen a continuació.

Si trobes un nou arxiu de pegat auto-generat com debian-changes-* en el directori debian/patches desprès de compilar el teu paquet no nadiu Debian en el format 3.0 (quilt), el més probable és que has canviat algun arxiu per accident o el guió de compilació ha modificat les fonts originals. Si és un error teu, ho corregeixes. Si l'error l'ha causat el guió, corregeix la causa de l'error amb dh-autoreconf com a Secció 4.4.3, «Personalització del fitxer rules o bé fes proves amb els arxius source/options com s'ha explicat a Secció 5.24, «Fitxer source/options».

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.

Ja s'ha comentat que els guions del desenvolupador (els fitxers preinst, prerm, postinst i postrm) són complicats, excepte si s'utilitzen els generats pel paquet debhelper. No es recomana la seva utilització als desenvolupadors principiants (consulta Secció 5.18, «Fitxers {pre,post}{inst,rm}»).

Si el paquet utilitza guions del desenvolupador modificats, has de comprovar el seu funcionament en la instal·lació, desinstal·lació, eliminació i actualització. Alguns dels problemes en aquests guions del desenvolupador només es detecten en l'eliminació o desinstal·lació. Fes servir l'ordre dpkg per fer la comprovació:

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

Segueix aquesta seqüència per a la comprovació:

  • Instal·la la versió anterior del paquet (obligatori).

  • Actualitza ara a la versió actual.

  • Torna a la versió anterior (opcional).

  • Desinstal·la el paquet.

  • Instal·la la nova versió del paquet.

  • Elimina'l.

  • Instal·la'l de nou.

  • Desinstal·la el paquet.

Si treballes en la construcció de la primera versió del paquet, construeix versions «fantasma» anteriors (és suficient canviar el número de versió) per realitzar les proves i prevenir problemes.

Recorda que si hi ha versions anteriors del paquet en el repositori Debian, els usuaris actualitzaran el paquet des de la versió anterior disponible (i aquesta versió pot ésser distinta en la versió estable i de proves). Realitza les comprovacions també amb aquestes versions.

Encara que no es garanteix la reinstal·lació d'una versió anterior, és preferible assegurar-se que és possible fer-ho sense generar problemes.

Executa lintian(1) amb el teu arxiu de canvis .changes. L'ordre lintian executa diversos guions de comprovació del paquet per localitzar els errors més freqüents [75].

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

Per suposat, canvia el nom de l'arxiu pel nom de l'arxiu .changes del teu paquet. Els missatges d'error de lintian es codifiquen amb una lletra inicial en la línia del missatge:

  • E: error; per indicar violacions de les normes o un error en el paquet.

  • W: advertència; per advertir d'una possible violació de les normes o error en el paquet (però pot ésser una falsa alarma).

  • I: informació; informació sobre algun aspecte del paquet (que tal vegada és millorable).

  • N: nota o anotació; per a missatges detallats que poden ajudar-te en la depuració del paquet.

  • O: ignorat; per a missatges ignorats (segons la configuració dels fitxers lintian-overrides) però que s'emet degut a l'opció --show-overrides.

En el cas dels errors (línies amb «E:» inicial), llegeix l'explicació (línies «N:»), fes els canvis necessaris en el paquet o comprova que són avisos falsos. En aquest cas, fes que lintian els accepti com s'ha explicat a Secció 5.14, «Fitxers {nom_arxiu.source/}lintian-overrides».

Observa que pots construir el paquet amb dpkg-buildpackage i executar lintian només amb una ordre si fas servir debuild(1) o pdebuild(1).

Pots veure una llista dels fitxers del paquet binari Debian executant l'ordre debc(1) així:

$ debc nom_del_paquet.changes

Pots comparar el contingut de dos paquets de fonts Debian executant l'ordre debdiff(1) així:

$ debdiff versió_anterior.dsc nova_versió.dsc

Pots comparar la llista de fitxers de dos paquets binaris de Debian amb l'ordre debdiff(1) executant l'ordre següent:

$ debdiff versió_anterior.changes nova_versió.changes

Aquest programa és útil per comprovar que no hi ha fitxers canviats d'ubicació o eliminats per error, i que no s'ha realitzat cap altre canvi no desitjat en l'actualització del paquet.

Pots comparar dos fitxers diff.gz amb l'ordre interdiff(1). Això és útil per comprovar que el responsable del paquet no ha fet canvis inadvertits en l'actualització de paquets construïts amb el format 1.0. Executa:

$ interdiff -z versió_anterior.diff.gz nova_versió.diff.gz

El nou format 3.0 de les fonts conserva els canvis en arxius de pegats com es descriu a Secció 5.25, «Fitxers patches/*. Pots veure els canvis de cada arxiu debian/patches/* fent servir l'ordre interdiff.

Algunes de les operacions de comprovació del paquet explicades poden realitzar-se de manera molt intuïtiva si es fa servir un gestor de fitxers com mc(1), que permet visualitzar el contingut del paquet *.deb, i dels fitxers *.udeb, *.debian.tar.gz, *.diff.gz i *.orig.tar.gz

Comprova que no hi hagi fitxers innecessaris o de tamany zero, tant en el binari com en el paquet font. De vegades, hi ha coses que no es varen netejar adequadament: caldrà ajustar el fitxer rules per arreglar això.



[75] No és necessari afegir a lintian l'opció -i -I --show-overrides si l'has inclòs en la configuració a /etc/devscripts.conf o ~/.devscripts com s'ha explicat a Secció 6.3, «L'ordre debuild.