Capítol 8. Actualitzar el paquet.

# Capítol 8. Actualitzar el paquet.

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.

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

## 8.1. Nova revisió Debian del paquet.

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:

- Si cal aplicar una nova modificació, executa:

  - `dquilt new `nom_modificació.patch`` per establir el nom de la modificació.

  - `dquilt add `arxiu_a_modificar`` per establir el fitxer al qual s'aplicarà la modificació.

  - Corregir el problema en el paquet de fonts degut a un error de l'autor.

  - `dquilt refresh` per desar els canvis realitzats en el fitxer del pegat ``nom_modificació.patch``.

  - `dquilt header -e` per afegir la descripció;

- Si cal actualitzar una modificació ja existent, executa:

  - `dquilt pop `nom_modificacio.patch`` per tornar a cridar l'arxiu ``nom_modificacio.patch``;

  - Corregir el problema existent en la versió incorrecta del fitxer del pegat ``nom_modificació.patch``.

  - `dquilt refresh` per actualitzar ``nom_modificació.patch``.

  - `dquilt header -e` per actualitzar la descripció a la capçalera de l'arxiu del pegat.

  - `while dquilt push; do dquilt refresh; done` per aplicar tots els pegats eliminant les coses innecessàries;

- Afegir la informació de la revisió a l'inici del fitxer `changelog` (del directori «Debian»), p. ex. executant `dch -i` o explícitament indicant el número de versió i revisió executant `dch -v `versió`-`revisió``, i a continuació detallar els canvis realitzats amb un editor [76].

- Incloure la descripció (breu) de l'error i la solució, seguida de la referència de la notificació de l'error amb `(Closes: #654321)`. D'aquesta manera, l'informe d'error es «tancarà» automàticament pel sistema de manteniment del repositori de Debian quan el paquet sigui acceptat en el repositori.

- Repeteix els passos anteriors per a cada una de les modificacions realitzades actualitzant l'arxiu Debian `changelog` amb `dch` si és necessari.

- Repeteix el que vas fer a Secció 6.1, «Reconstrucció completa.» i Capítol 7, Com comprovar el teu paquet per trobar errors..

- Una vegada satisfet, canvia el valor de la distribució en el fitxer `changelog` de `UNRELEASED` al valor de la distribució objectiu `unstable` (o bé `experimental`).[77]

- Upload the package as in Capítol 9, Enviar el paquet.. 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., ``1.0.1`-`1``. For smoother upgrades, it is a good idea to create a `changelog` entry with a version string such as ``1.0.1`-`1~rc1``. You may unclutter `changelog` by consolidating such local change entries into a single entry for the official package. See Secció 2.6, «Nom del paquet i versió.» for the order of version strings.

## 8.2. Inspecció d'una nova versió de l'autor.

When preparing packages of a new upstream release for the Debian archive, you must check the new upstream release first.

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.

## 8.3. Nova versió del programa font.

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ó [78]. 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.21, «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 [79].

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..

## 8.4. Actualitzar el format del 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 [80]:

- 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_*`.

  - còpia local de `/usr/share/doc/cdbs/cdbs-doc.pdf.gz`

  - The Common Debian Build System (CDBS), FOSDEM 2009

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

- 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ó

## 8.5. Conversió a UTF-8

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

## 8.6. Recordatori per actualitzar paquets.

Here are a few reminders for updating packages:

- Conserva les entrades anteriors del fitxer `changelog` (sona a obvietat, però s'han donat casos d'executar `dch` en lloc de `dch -i`).

- Reconsidera els canvis en la construcció del paquet Debian: elimina les modificacions anteriors (sigui el que sigui) i recorda't d'afegir tot el necessari, sempre que no hi hagi una bona raó per no fer-ho.

- Si s'ha realitzat alguna modificació en la compilació (ho veuràs quan inspeccionis els canvis en les fonts originals) pot ser necessari actualitzar el fitxer `debian/rules` i les dependències de compilació en el fitxer `debian/control`.

- Comprova si hi ha alguna comunicació de pegats del paquet en el sistema de gestió d'errors (algun usuari pot haver construït i enviat un pegat que puguis fer servir) en Debian Bug Tracking System (BTS).

- Comprova el contingut del fitxer `.changes` per assegurar-te que envies el paquet a la distribució correcta, que els informes d'errors que es tanquen amb la nova versió estan llistats en el camp `Closes`, que el contingut dels camps `Maintainer` i `Changed-By` són correctes, que has signat el fitxer amb la teva clau GPG, etc.

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

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

[78] 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ó.

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

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

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

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