Table des matières
Après la publication d'un paquet, il sera rapidement nécessaire de le mettre à jour.
Soit un rapport de bogue numéroté #654321
, concernant
votre paquet et décrivant un problème que vous pouvez résoudre. Voici ce que
vous devez faire pour créer une nouvelle révision du paquet :
pour un nouveau correctif :
configurer le nom du correctif : dquilt new
;
nomdubogue.patch
déclarer le fichier à modifier : dquilt add
;
fichier-bogué
corriger le problème dans le paquet source pour le bogue amont ;
l'enregistrer en
:
nomdubogue.patch
dquilt refresh
;
ajouter sa description : dquilt header -e
;
pour la mise à jour d'un correctif :
rappeler le correctif
existant :
toto.patch
dquilt pop
;
toto.patch
corriger le problème dans l'ancien
;
toto.patch
mettre à jour
:
toto.patch
dquilt refresh
;
mettre à jour sa description : dquilt header -e
;
appliquer tous les correctifs en enlevant les approximations
(fuzz) : while dquilt push; do dquilt refresh;
done
;
ajouter une nouvelle révision au début du fichier
changelog
Debian, par exemple avec dch
-i
, ou explicitement avec dch -v
,
et ajoutez ensuite les commentaires en utilisant votre éditeur
favori ;[77]
version
-révision
ajouter une courte description du bogue et de la solution dans l'entrée du
changelog, suivie par Closes: #654321
. De cette manière,
le rapport de bogue sera automagiquement fermé par le
logiciel de maintenance des archives une fois le paquet accepté dans
l'archive Debian ;
répéter les opérations précédentes pour corriger plus de bogues tout en
mettant à jour le fichier changelog
avec
dch
selon votre besoin ;
recommencer ce qui a été fait en Section 6.1, « Reconstruction complète » et Chapitre 7, Contrôle des erreurs du paquet ;
une fois satisfait, modifier la valeur de distribution dans
changelog
d'UNRELEASED
à la valeur
de distribution cible unstable
(ou même
experimental
). [78]
Upload the package as in Chapitre 9, Envoi de 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.,
.
For smoother upgrades, it is a good idea to create a
1.0.1
-1
changelog
entry with a version string such as
.
You may unclutter 1.0.1
-1~rc1
changelog
by consolidating such local
change entries into a single entry for the official package. See Section 2.6, « Nom et version de paquet » for the order of version strings.
When preparing packages of a new upstream release for the Debian archive, you must check the new upstream release first.
Commencez par lire les changelog
et
NEWS
amonts, ainsi que toute autre documentation
distribuée avec la nouvelle version.
Examinez ensuite les modifications entre les anciennes et nouvelles sources amont, pour guetter tout changement suspect :
$ diff -urNtoto
-ancienneversion
toto
-nouvelleversion
Les modifications de certains fichiers automatiquement créés par Autotools
comme missing
, aclocal.m4
,
config.guess
, config.h.in
,
config.sub
, configure
,
depcomp
, install-sh
,
ltmain.sh
et Makefile.in
peuvent
être ignorées. Vous pouvez les effacer avant d'exécuter
diff pour examiner les sources.
Si un paquet
est correctement
empaqueté au nouveau format toto
3.0 (native)
ou
3.0 (quilt)
, empaqueter une nouvelle version amont
consiste essentiellement à déplacer l'ancien répertoire
debian
dans les nouvelles sources. Ce peut être réalisé
en exécutant tar xvzf
/
depuis la nouvelle arborescence source décompressée. [79] Bien sûr, vous devez vous occuper de quelques
routines évidentes :
chemin
/vers
/toto
_ancienneversion
.debian.tar.gz
création d'une copie des sources amont dans un fichier
toto_
;
nouvelleversion
.orig.tar.gz
mise à jour du ficher changelog
Debian avec
dch -v
:
nouvelleversion
-1
ajout d'une entrée avec New upstream release.
(nouvelle
version amont) ;
description succincte des modifications dans la nouvelle version
amont qui corrigent des bogues et ferment les rapports associés
en ajoutant Closes:
#
;
numéro_de_bogue
description succincte des modifications à la nouvelle version
amont par le responsable qui corrigent des bogues et ferment les
rapports associés en ajoutant Closes:
#
;
numéro_de_bogue
application de tous les correctifs en enlevant les approximations
(« fuzz ») : while dquilt push; do dquilt
refresh; done
.
Si la fusion des correctifs ne s'applique pas proprement, examinez la
situation (des indices sont laissés dans les fichiers
.rej
) :
si un correctif appliqué aux sources a été intégré aux sources amont :
dquilt delete
pour l'enlever ;
si un correctif appliqué aux sources entre en confit avec les nouvelles modifications des sources amont :
dquilt push -f
pour appliquer les anciens correctifs tout
en forçant les rejets comme
;
truc
.rej
édition manuelle du fichier
pour obtenir le
résultat attendu de
truc
;
truc
.rej
dquilt refresh
pour mettre à jour le correctif ;
continuer comme d'habitude avec while dquilt push; do dquilt
refresh; done
.
Cette méthode peut être automatisé avec uupdate(1) :
$ apt-get sourcetoto
... dpkg-source: info: extraction detoto
danstoto
-ancienneversion
dpkg-source: info: extraction detoto
_ancienneversion
.orig.tar.gz dpkg-source: info: extraction detoto
_ancienneversion
-1.debian.tar.gz $ ls -Ftoto
-ancienneversion
/toto
_ancienneversion
-1.debian.tar.gztoto
_ancienneversion
-1.dsctoto
_ancienneversion
.orig.tar.gz $ wget http://example.org/toto
/toto
-nouvelleversion
.tar.gz $ cdtoto
-ancienneversion
$ uupdate -vnouvelleversion
../toto
-nouvelleversion
.tar.gz $ cd ../toto
-nouvelleversion
$ while dquilt push; do dquilt refresh; done $ dch ... documentation des modifications réalisées
Si le fichier debian/watch
est configuré comme décrit
en Section 5.21, « watch
», la commande wget est
inutile. Exécutez simplement uscan(1) dans le répertoire
à la place de la commande uupdate suffit. Les sources
mises à jour seront automagiquement recherchées,
téléchargées, et la commande uupdate sera
exécutée. [80]
toto
-ancienneversion
Vous pouvez publier ces sources mises à jour en recommençant ce qui a été fait en Section 6.1, « Reconstruction complète », Chapitre 7, Contrôle des erreurs du paquet et Chapitre 9, Envoi de paquet.
La mise à jour du style d'empaquetage n'est pas nécessaire lors de la mise à
jour d'un paquet. Néanmoins, le faire permet de profiter de tout le
potentiel du système debhelper
moderne et du format source 3.0
: [81]
si vous devez, pour quelque raison que ce soit, recréer des fichiers modèles
qui avaient été effacés, vous pouvez exécuter dh_make à
nouveau depuis le répertoire des sources Debian, avec l'option
--addmissing
. Puis modifiez-les de façon adéquate ;
si le paquet n'a pas été mis à jour pour utiliser la syntaxe
dh de debhelper
v7+ dans le fichier
debian/rules
, mettez-le à jour pour utiliser
dh. Mettez à jour le fichier
debian/control
en conséquence ;
si vous voulez mettre à jour le fichier rules
créé avec
le mécanisme d'héritage Makefile
du système de
compilation usuel Debian (cdbs
) vers
la syntaxe dh, consultez les documents suivants pour
comprendre ses variables de configuration DEB_*
:
copie locale de /usr/share/doc/cdbs/cdbs-doc.pdf.gz
;
Le système de compilation usuel Debian (CDBS), FOSDEM 2009 ;
si vous avez un paquet source 1.0
sans fichier
, vous pouvez le
mettre à jour au récent format source toto
.diff.gz3.0 (native)
en
créant debian/source/format
contenant
3.0 (native)
. Le reste des fichiers
debian/*
peut être simplement copié ;
si vous avez un paquet source 1.0
avec fichier
, vous pouvez le
mettre à jour au récent format source toto
.diff.gz3.0 (quilt)
en
créant debian/source/format
contenant
3.0 (quilt)
. Le reste des fichiers
debian/*
peut être simplement copié. Importez le
fichier gros.diff
créé par la commande
filterdiff -z -x '*/debian/*'
dans votre
système quilt, au besoin ; [82]
toto
.diff.gz > gros.diff
si l'empaquetage a été créé en utilisant un autre système de correctif comme
dpatch
, dbs
ou cdbs
avec -p0
,
-p1
ou -p2
, convertissez-le à
quilt
avec deb3
disponible en http://bugs.debian.org/581186 ;
si l'empaquetage a été créé avec la commande dh et le
paramètre --with quilt
ou les commandes
dh_quilt_patch et dh_quilt_unpatch,
enlevez-les et utilisez le nouveau format source
3.0 (native)
.
Vous devriez consulter les propositions d'améliorations Debian (DEP - Debian Enhancement Proposals) et adopter les propositions marquées « ACCEPTED ».
Les autres tâches décrites en Section 8.3, « Nouvelle version amont » sont aussi à effectuer.
Si les documents amonts sont encodés avec d'anciens jeux de caractères, les convertir en UTF-8 peut être utile :
avec iconv(1) pour convertir l'encodage de fichiers texte :
iconv -f latin1 -t utf8truc_entrée.txt
>truc_sortie.txt
avec w3m(1) pour convertir les fichiers HTML en fichier texte UTF-8. Assurez-vous d'exécuter cette commande avec des paramètres régionaux en UTF-8 :
LC_ALL=en_US.UTF-8 w3m -o display_charset=UTF-8 \ -cols 70 -dump -no-graph -T text/html \ <foo_in.html
>truc_sortie.txt
Here are a few reminders for updating packages:
préservez les anciennes entrées changelog
(cela va de
soit, mais des personnes ont parfois utilisé dch
au lieu
de dch -i
) ;
les modifications Debian existantes doivent être réévaluées ; jetez tout ce qui a été incorporé en amont (sous une forme ou une autre), et souvenez-vous de garder ce qui ne l'a pas été, à moins qu'il n'y ait une bonne raison de ne pas le faire ;
si le système de construction a été modifié (avec un peu de chance, vous
êtes au courant depuis l'inspection des modifications amont), mettez à jour
les dépendances de construction debian/rules
et
debian/control
, si besoin est ;
vérifiez dans le système de gestion de bogues (BTS) que personne n'a fourni de correctifs aux bogues ouverts ;
vérifiez le contenu du fichier .changes
pour vous
assurer que vous envoyez vers la bonne distribution, que les rapports de
bogue refermés sont correctement listés dans les champs
Closes
, que les champs Maintainer
et
Changed-By
correspondent, que le fichier est signé avec
GPG, etc.
[77] Pour obtenir la date au format voulu, utilisez LANG=C date
-R
.
[78] Si vous utilisez la commande dch -r
pour faire cette
dernière modification, n'oublier pas de sauver le fichier
changelog
explicitement dans l'éditeur.
[79] Si un paquet
est empaqueté
avec l'ancien format toto
1.0
, ce peut plutôt être réalisé en
exécutant zcat
/
depuis la nouvelle arborescence source décompressée. chemin
/vers
/toto
_ancienneversion
.diff.gz|patch
-p1
[80] Si la commande uscan télécharge les sources mises à jour
mais n'exécute pas la commande uupdate, vous devriez
corriger le fichier debian/watch
pour avoir
debian uupdate
après l'URL.
[81] Si votre parrain ou d'autres responsables s'opposent à la mise à jour du style d'empaquetage existant, ne vous embêtez pas à argumenter. Il y a des choses plus importantes à faire.
[82]
vous pouvez découper gros.diff
en plusieurs petits
correctifs incrémentaux avec la commande splitdiff.