Capítol 8. Actualitzar el paquet.

Sumari

8.1. Nova revisió Debian del paquet.
8.2. Inspecció d'una nova versió de l'autor.
8.3. Nova versió del programa font.
8.4. Actualitzar el format del paquet.
8.5. Conversió a UTF-8
8.6. Recordatori per actualitzar paquets.

Després del llançament del paquet, és possible que hagis d'actualitzar-ho aviat.

Suposem que s'ha enviat un informe d'error del teu paquet amb el número #654321, i que descriu un problema que pots solucionar. Per construir una nova revisió del paquet, necessites:

Un dels casos difícils es pot produir en fer un paquet local per experimentar amb la seva construcció abans de pujar la versió final a l'arxiu oficial, p.ex. 1.0.1-1. Per a actualitzacions petites, és una bona idea escriure una entrada a l'arxiu changelog amb la cadena de versió 1.0.1-1~rc1. Pots reordenar l'arxiu changelog re-escrivint les entrades «locals» en una única entrada en fer el paquet definitiu. Consulta Secció 2.6, «Nom del paquet i versió.» per saber quin és l'ordre de les cadenes de la versió.

Quan l'autor original allibera una nova versió de les fonts, cal que comencis per revisar la nova versió original.

Comença per llegir els fitxers changelog, NEWS i qualsevol altre documentació on l'autor original expliqui els canvis realitzats en la nova versió.

Pots comprovar els canvis entre les fonts originals de la nova versió i de l'anterior per detectar qualsevol canvi sospitós de produir errors executant:

$ diff -urN nom_arxiu-versió_anterior nom_arxiu-nova_versió

Les modificacions realitzades en els fitxers generats per «Autotools» (missing, aclocal.m4, config.guess, config.h.in, config.sub, configure, depcomp, install-sh, ltmain.sh i Makefile.in) pots ignorar-les. Fins i tot pots eliminar-los abans d'executar diff en les fonts per inspeccionar-les.

Si el paquet nom_del_paquet que examines està correctament empaquetat fent servir els nous formats 3.0 (native) o 3.0 (quilt), per empaquetar una nova versió de l'autor hauria d'ésser suficient copiar el directori debian de la versió anterior a la nova, i a continuació realitzar les adaptacions necessàries. Pots copiar el directori debian de la versió anterior a la nova versió executant tar xvzf /ruta/a/nom_del_paquet_versió_anterior.debian.tar.gz des del directori de les fonts de la nova versió [80]. Per descomptat, caldrà fer algunes tasques òbvies:

  • Comprimir les fonts originals en el fitxer nom_del_paquet_número_nova_versió.orig.tar.gz.

  • Actualitzar el fitxer changelog del directori «debian» executant dch -v número_nova_versió-1.

    • Afegeix una nova línia amb el text New upstream release per indicar que es tracta d'una nova versió de les fonts originals.

    • Descriu abreujadament els canvis realitzats en les fonts originals per l'autor que solucionen errors informats i tanca els informes d'aquests errors afegint Closes: #número_del_informe_error.

    • Descriu abreujadament els canvis realitzats a les fonts originals pel desenvolupador (tu mateix en aquest cas) per solucionar els errors informats i tanca els informes afegint Closes: #número_del_informe_error.

  • Executa while dquilt push; do dquilt refresh; done per aplicar els pegats eliminat les coses innecessàries.

Si les modificacions no s'executen correctament, inspecciona la situació (mira la informació dels fitxers .rej) com segueix:

  • Si un dels pegats aplicats està integrat en les fonts originals:

    • executa dquilt delete per eliminar-lo.

  • Si un dels pegats entra en conflicte amb els canvis realitzats per l'autor en les fonts originals:

    • executa dquilt push -f per aplicar els pegats de la versió anterior per forçar els rebuigs (tendràs la informació dels rebuigs en els fitxers truc.rej).

    • Edita els fitxers truc.rej manualment per saber l'efecte que es pretén amb truc.rej.

    • Executa dquilt refresh per actualitzar el pegat.

  • Continua fins a l'execució de while dquilt push; do dquilt refresh; done.

Pots automatitzar aquest procés fent servir l'ordre uupdate(1) com segueix:

$ apt-get source nom_del_paquet
...
dpkg-source: info: extracting nom_del_paquet in nom_del_paquet-número_versió_anterior
dpkg-source: info: unpacking nom_del_paquet_número_versió_anterior.orig.tar.gz
dpkg-source: info: applying nom_del_paquet_número_versió_anterior-1.debian.tar.gz
$ ls -F
nom_del_paquet-número_versió_anterior/
nom_del_paquet_número_versió_anterior-1.debian.tar.gz
nom_del_paquet_número_versió_anterior-1.dsc
nom_del_paquet_número_versió_anterior.orig.tar.gz
$ wget http://example.org/nom_del_paquet/nom_del_paquet-número_versió_actual.tar.gz
$ cd nom_del_paquet-número_versió_anterior
$ uupdate -v número_versió_actual ../nom_del_paquet-número_versió_actual.tar.gz
$ cd ../nom_del_paquet-número_versió_actual
$ while dquilt push; do dquilt refresh; done
$ dch
... documenta les modificacions realitzades

Si has configurat el fitxer debian/watch com s'ha explicat a Secció 5.22, «Fitxer watch, no és necessari que executis l'ordre wget. Simplement, executa uscan(1) en el directori nom_del_paquet-número_versió_anterior en lloc de l'ordre uupdate. Així, es buscarà automàticament el fitxer de les fonts, es descarregarà en el teu ordinador i s'executarà l'ordre uupdate [81].

Pots fer el llançament de l'actualització del paquet repetint el que s'ha explicat en Secció 6.1, «Reconstrucció completa.», Capítol 7, Com comprovar el teu paquet per trobar errors. Capítol 9, Enviar el paquet..

Per actualitzar un paquet no és necessari actualitzar el format de construcció del paquet. Encara així, pots aprofitar tota la funcionalitat de debhelper i del format 3.0 fent el següent [82]:

  • Si necessites novament algun dels fitxers de plantilla eliminats, pots regenerar-los executant dh_make amb l'opció --addmissing des del directori de les fonts. A continuació, fes les modificacions ja explicades.

  • Si el paquet no està actualitzat per fer servir la nova sintaxi dh de la versió 7+ de debhelper en el fitxer debian/rules, fes-ne l'actualització per fer servir dh. També hauràs d'actualitzar debian/control.

  • Si actualitzes el fitxer rules construït pel mecanisme d'inclusió Makefile del sistema de compilació Debian (cdbs) a la nova sintaxi dh, llegeix els següents documentes per entendre les variables de configuració DEB_*.

  • Si treballes amb un paquet construït amb el format 1.0 sense l'arxiu nom_del_paquet.diff.gz, pots actualitzar-lo a la nova versió 3.0 (native) afegint el fitxer debian/source/format amb la línia 3.0 (native). Copia els altres fitxers del directori debian/*.

  • Si treballes amb un paquet construït amb el format 1.0 amb el fitxer nom_del_paquet.diff.gz, pots actualitzar-lo al nou format 3.0 (native) afegint el fitxer debian/source/format amb la línia 3.0 (native). Copia els altres fitxers del directori debian/*. Importa el fitxer nom_del_paquet.diff generat amb l'ordre filterdiff -z -x '*/debian/*' nom_del_paquet.diff.gz > nom_del_paquet.diff al sistema quilt [83].

  • Si el paquet s'ha construït amb un altre sistema de pegats com dpatch, dbs o cdbs, fent servir les opcions -p0, -p1 o -p2, pots convertir-ho al format quilt fent servir el guió deb3 at http://bugs.debian.org/581186.

  • Si el paquet s'ha construït executant l'ordre dh amb l'opció --with quilt o amb dh_quilt_patch i dh_quilt_unpatch, elimina tot això i fes servir el nou format font 3.0 (quilt).

Has de consultar DEP - Debian Enhancement Proposals i adoptar les propostes ACCEPTADES.

Repassa la secció Secció 8.3, «Nova versió del programa font.» per si has de repetir alguns dels passos indicats en aquesta secció

Si el documents originals fan servir una codificació antiga, actualitzar-los a la codificació UTF-8 és una bona idea.

  • Fes servir iconv(1) per convertir codificacions de fitxers de text sense format.

    iconv -f latin1 -t utf8 fitxer_original.txt > fitxer_convertit.txt
    
  • Fes servir w3m(1) per convertir fitxers HTML a fitxers sense format en codificació UTF-8. Quan ho facis, assegura't que la configuració local fa servir UTF-8.

    LC_ALL=en_US.UTF-8 w3m -o display_charset=UTF-8 \
            -cols 70 -dump -no-graph -T text/html \
            < fitxer_original.html > fitxer_convertit.txt
    

Aquí tens un llistat de coses a tenir en compte en actualitzar paquets:



[78] Per escriure la data i hora en el format correcte, cal fer servir LANG=C date -R.

[79] Si fas servir l'ordre dch -r per fer efectiu aquest darrer canvi, assegura't que deses el fitxer changelog des del editor.

[80] Si la versió anterior del paquet està empaquetada amb l'antic format 1.0, pots fer el mateix executant zcat /ruta/a/nom_del_paquet_versió_anterior.diff.gz|patch -p1 des del directori de les fonts de la nova versió.

[81] Si l'ordre uscan descarrega les fonts però no executa l'ordre uupdate, cal modificar l'arxiu debian/watch afegint debian uupdate al final de l'URL del fitxer.

[82] Si la persona que patrocina el teu paquet o altres desenvolupadors fan objeccions a l'actualització del format del paquet, no val la pena entossudir-se a argumentar a favor. Hi ha altres coses més importants que atendre.

[83] Pots fragmentar el fitxer nom_del_paquet.diff en diversos fitxers de pegats fent servir l'ordre splitdiff.