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.

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.25, «Fitxer source/options».

Prova d'instal·lar el paquet, per exemple, fent servir l'ordre debi(1) com a usuari «root». Intenta instal·lar-lo i executar-lo en altres màquines (diferents a la que has fet servir per a la construcció del paquet) i posa atenció per detectar errors o avisos en la instal·lació i en l'execució del programa.

$ sudo debi gentoo_0.9.12-1_i386.changes

Has d'assegurar-te que no hi hagi fitxers en conflicte amb altres paquets fent servir el fitxer Contents-i386, (disponible al repositori Debian) per prevenir problemes d'instal·lació en distints sistemes. L'ordre apt-file serà útil per fer aquesta comprovació. Si hi ha fitxers en conflicte, hauràs de fer el que sigui necessari per evitar-los, ja sigui canviant el nom de l'arxiu, moure un arxiu d'ús comú (del qual depenen diversos paquets) a un paquet separat, fent servir el mecanisme d'alternatives (consulta update-alternatives(1)) en coordinació amb els responsables dels altres paquets o bé establint correctament el camp Conflicts del fitxer debian/control.

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.19, «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 [77].

$ 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.26, «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ò.



[77] 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.