debhelper-compat-upgrade-checklist - Upgrade checklist for
supported debhelper compat levels
This document is an upgrade checklist of all the supported
debhelper compat levels. It also lists all the support debhelper compat
levels.
Information about how to declare the compat level is in
"COMPATIBILITY LEVELS" in debhelper(7).
If you are upgrading from a (now) obsolete compat level, then
please refer to debhelper-obsolete-compat(7).
Les niveaux de compatibilité sont les suivants :
- v15
- Ce niveau de compatibilité est encore en
développement ; à utiliser avec précaution.
Changes from v14 are:
- -
- The dh_auto_install tool no longer defaults to
--destdir=debian/package for source packages
only producing a single binary. If this behaviour is wanted, the package
should explicitly activate the single-binary dh addon (e.g., by
adding dh-sequence-single-binary to Build-Depends) or pass
--destdir to dh_auto_install.
The rationale for this change to avoid "surprises"
when adding a second binary package later. Previously, debhelper would
silently change behaviour often resulting in empty binary packages being
uploaded to the archive by mistake. With the new behaviour, the
single-binary addon will detect the mismatch and warn the
maintainer of what is about to happen.
- v14
- Ce niveau de compatibilité est encore en
développement ; à utiliser avec précaution.
Les changements par rapport à la version 13
sont :
- The cmake buildsystem now passes
-DCMAKE_BUILD_RPATH_USE_ORIGIN=ON to cmake(1) to avoid some
reproducibility issues.
- The tool dh_installsysusers is now included in the default
sequence. This helper tool will process systemd sysusers files.
- Use of the dh_gconf command in override and hook targets now causes
an error. The dh_gconf command has been a no-op for years and was
removed in debhelper 13.4.
- The dh sequencer will warn if the single-binary addon is
implicitly activated to warn maintainers of the pending compat 15 change
in dh_auto_install.
Maintainers are urged to either explicitly activate the
single-binary addon to preserve the existing behaviour (e.g., by
adding dh-sequence-single-binary to Build-Depends), or explicitly
passing --destdir to dh_auto_install if used and then
passing --without single-binary to dh (the latter to
silence the warning).
The rationale for this change to avoid "surprises"
when adding a second binary package later. Previously, debhelper would
silently change behaviour often resulting in empty binary packages being
uploaded to the archive by mistake. With the new behaviour, the
single-binary addon will detect the mismatch and warn the
maintainer of what is about to happen.
- The dh_installalternatives tool will now be run after
dh_link rather than after dh_installinitramfs in the default
dh sequence.
- The dh_installpam tool will now install PAM configuration files
under /usr/lib/pam.d/package instead of
/etc/pam.d/package.
Please consider using the "rm_conffile" feature from
dh_installdeb(1) to ensure the proper removal of previous PAM
files.
- The meson+ninja and cmake build systems now use meson
install and cmake --install, respectively, instead of ninja
install and make install in the dh_auto_install(1) call.
Any override of dh_auto_install that passes extra parameters to the
upstream build system should be reviewed.
- v13
- C'est la version dont l'usage est recommandé.
Les changements par rapport à la version 12
sont :
- Le système de construction meson+ninja utilise maintenant
meson test à la place de ninja test pour la suite de
tests. Chaque réécriture de dh_auto_test qui passe
des paramètres supplémentaires aux tests amont devrait
être vérifiée, car meson test n'est pas
compatible avec ninja test.
- Tous les outils dans le style de debhelper basés sur la
bibliothèque debhelper officielle (y compris dh et les
outils officiels dh_*) n'acceptent plus les paramètres de
commande abrégés. En même temps, dh optimise
maintenant les appels aux outils redondants dh_* même quand
ils passent de longues options de ligne de commande.
- Les outils de debhelper liés à ELF (dh_dwz,
dh_strip, dh_makeshlibs, dh_shlibdeps) sont
désormais seulement exécutés pour les paquets
dépendant de l'architecture par défaut (c'est-à-dire
qu'ils sont exclus des cibles *-indep et sont passés avec
l'option -a par défaut). Si vous avez besoin d'eux pour des
cibles *-indep, vous pouvez ajouter un Build-Depends explicite
à dh-sequence-elf-tools.
- Le système de construction tiers gradle (issu du paquet
gradle-debian-helper) exécute maintenant la suite de tests
fournie par l'amont automatiquement. Pour supprimer ce type de
comportement, surchargez dh_auto_test.
- L'outil dh_installman s'interrompt maintenant s'il voit des
définitions contradictoires d'une page de manuel. Cela se produit
habituellement si le système de construction amont installe une
version compressée et que le paquet liste une version non
compressée de la page de manuel dans
debian/paquet.manpages. La correction la plus simple
est de supprimer la page de manuel de
debian/paquet.manpages (en considérant que les
deux versions sont identiques).
- Les outils dh_auto_* réinitialisent désormais les
variables d'environnement HOME et la variable commune XDG_*.
Veuillez consulter la description des variables d'environnement dans
"ENVIRONMENT" pour voir comment elles sont gérées.
Cette fonctionnalité a changé entre
debhelper 13 et debhelper 13.2.
- La commande dh produira maintenant une erreur si une cible de
réécriture ou d'accroche pour une commande obsolète
est présente dans debian/rules (par exemple,
override_dh_systemd_enable:).
- La commande dh_missing aura l'option --fail-missing par
défaut. Il est possible de revenir à un avertissement non
fatal en passant explicitement l'option --list-missing comme dans
le niveau de compatibilité 12.
Si vous ne voulez pas non plus de l'avertissement, veuillez
omettre l'appel à dh_missing. Si l'automate de commandes
dh est utilisé, vous pouvez faire cela en insérant
une cible de réécriture vide dans le fichier
debian/rules du paquet correspondant. Comme dans
l’exemple :
# Désactive dh_missing
override_dh_missing:
- L'automate de commandes dh exécute maintenant
dh_installtmpfiles dans la séquence par défaut.
dh_installtmpfiles se charge de la gestion des fichiers de
configuration de tmpfiles.d. La fonctionnalité
apparentée dans dh_installsystemd est désormais
désactivée.
Notez que dh_installtmpfiles répond à
debian/paquet.tmpfiles là où
dh_installsystemd utilisait un nom sans le
« s » final.
- Beaucoup d'outils dh_* prennent en charge un développement
de variables limité au moyen de la syntaxe ${toto}. Dans de
nombreux cas, cela peut être utilisé pour
référencer des chemins qui contiennent soit des espaces,
soit des valeurs dpkg-architecture(1). Bien que cela puisse
réduire le besoin de dh-exec(1) dans certains cas, ce
n'est pas une alternative à dh-exec(1) en
général. Si un filtrage, un renommage, etc. est
nécessaire, le paquet aura encore besoin de dh-exec(1).
Veuillez consulter "Substitutions dans les fichiers de
configuration de debhelper" pour la syntaxe et les variables de
substitution disponibles. Pour ceux qui écrivent des outils
dh_*, le développement de substitution intervient comme
élément des fonctions filearray et
filedoublearray.
- L'automate de commandes dh omettra toutes les cibles d'accroche et
de substitution pour dh_auto_test, dh_dwz et dh_strip
quand DEB_BUILD_OPTIONS liste les options nocheck ou
nostrip correspondantes.
Tout paquet comptant sur ces cibles pour être toujours
exécuté devrait plutôt déplacer la logique
correspondante de ces cibles. Par exemple, le code d’empaquetage
non lié aux tests provenant de override_dh_auto_test
devrait avoir été déplacé dans
execute_after_dh_auto_build ou
execute_before_dh_auto_install.
- Le système de construction cmake passe désormais
l'option -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=ON à
cmake(1) pour accélérer le processus d'installation
automatique. Si pour une raison quelconque vous avez besoin de revenir au
comportement antérieur, réécrivez le
paramètre :
dh_auto_configure -- -DCMAKE_SKIP_INSTALL_ALL_DEPENDENCY=OFF ...
- v12
- Les changements par rapport à la version 11
sont :
- dh_makeshlibs génère maintenant des fichiers shlibs
avec des dépendances versionnées par défaut. Cela
veut dire que -VUpstream-Version (ou -V) est maintenant le
comportement par défaut.
Si une dépendance non versionnée est requise,
cela peut être obtenu en passant -VNone à la place.
Veuillez tout de même consulter dh_makeshlibs(1) pour
l'utilisation des dépendances non versionnées.
- L'option -s (--same-arch) est supprimée. Veuillez
utiliser -a (--arch) à la place.
- Appeler dh_clean -k provoque maintenant une erreur à la
place de l'avertissement d'obsolescence.
- L'option --no-restart-on-upgrade de dh_installinit a
été supprimée. Veuillez utiliser le nouveau nom
--no-stop-on-upgrade.
- Il y avait un bogue dans les fonctions doit (et équivalent)
de Debian::Debhelper::Dh_Lib qui créait un shell dans une
circonstance particulière. Ce bogue est maintenant supprimé
et provoquera une erreur de type « commande non
trouvée » dans les outils qui l'utilisaient.
- Les options --list-missing et --fail-missing de
dh_install ont été supprimées. Veuillez
utiliser dh_missing et ses options correspondantes, qui peuvent
aussi voir les fichiers installés par les autres outils.
- L'outil dh_installinit n'installe plus de configuration pour
upstart. À la place, il abandonnera la construction s'il trouve un
ancien fichier de configuration upstart. Cela pour rappeler au mainteneur
de s'assurer de correctement supprimer les anciens fichiers de
configuration livrés dans les anciennes versions du paquet.
- L'outil dh_installdeb valide basiquement quelques commandes
dpkg-maintscript-helper(1) et renvoie une erreur si la commande
semble incorrecte.
- Le comportement par défaut de dh_missing est maintenant
--list-missing.
- dh_makeshlibs passera maintenant les bibliothèques à
dpkg-gensymbols(1) si le binaire ELF a un SONAME (contenant
« .so »).
- dh_compress ne compresse plus les exemples (c'est-à-dire
tout ce qui est installé dans
</usr/share/doc/paquet/examples>).
- La séquence standard de dh comprend maintenant dh_dwz
et dh_installinitramfs par défaut. Cela rend les
séquences dwz et installinitramfs obsolètes et
elles échoueront avec une erreur. Si vous souhaitez sauter ces
commandes, veuillez insérer des cibles de réécriture
vides pour elles dans debian/rules (par exemple
override_dh_dwz:).
- Les systèmes de construction meson et autoconf ne
positionnent plus explicitement la variable --libexecdir, et
s'appuient donc sur le système de construction par défaut
– qui devrait être /usr/libexec (selon la
FHS 3.0, adoptée dans la Charte Debian 4.1.5).
Si un paquet amont particulier n'utilise pas la bonne valeur
par défaut, le paramètre peut souvent être
passé manuellement avec dh_auto_configure(1). Par
exemple :
override_dh_auto_configure:
dh_auto_configure -- --libexecdir=/usr/libexec
Remarquez le -- avant le paramètre
--libexecdir.
- Retroactively removed in debhelper/13.5:
The dh_installdeb tool would no longer installs the
maintainer provided conffiles file as it was deemed unnecessary.
However, the remove-on-upgrade from dpkg/1.20 made the file
relevant again and dh_installdeb now installs it again in compat
levels 12+.
- dh_installsystemd ne s'appuie plus sur dh_installinit pour
s'occuper des services systemd qui ont une alternative pour sysvinit. Les
deux outils doivent maintenant être utilisés dans ce cas
pour s'assurer que le service est démarré correctement,
à la fois avec systemd et sysvinit.
Si vous avez une réécriture pour
dh_installinit (par exemple pour l'appeler avec
--no-start), vous en aurez sûrement besoin d'une pour
dh_installsystemd aussi.
Ce changement amène dh_installinit à
injecter un champ misc:Pre-Depends sur init-system-helpers
(>= 1.54~). Veuillez vous assurer que le paquet utilise
${misc:Pre-Depends} dans son champ Pre-Depends avant de
mettre à niveau vers la compat 12.
- L'outil tiers dh_golang (du paquet dh-golang) utilise
maintenant la variable DH_GOLANG_EXCLUDE pour l'installation des
sources dans les paquets -dev, et plus uniquement lors de la construction.
Veuillez positionner DH_GOLANG_EXCLUDES_ALL à faux pour
obtenir le comportement précédent. Consultez
Debian::Debhelper::Buildsystem::golang(3pm) pour plus
de détails et des exemples.
- dh_installsystemduser est maintenant inclus par défaut dans
la séquence dh standard.
- Le système de construction python-distutils est
supprimé. Veuillez utiliser le système tiers pybuild
à la place.
- v11
- Ce mode est déconseillé.
Le niveau de compatibilité 11 est
déconseillé pour les nouveaux paquets parce qu'il souffre
d'une interaction de fonctionnalités entre dh_installinit et
dh_installsystemd faisant que les services ne fonctionnent pas
correctement dans certains cas. Vous devriez envisager l'utilisation
à la place des modes de compatibilité 10 ou 12.
Plus de détails sur ce problème sont disponibles dans le
bogue Debian n° 887904 et dans le message
<https://lists.debian.org/debian-release/2019/04/msg01442.html>.
Les changements par rapport à la version 10
sont :
- dh_installinit n'installe plus de fichiers service ou
tmpfile, ni ne crée de scripts de maintenance pour ces
fichiers. Veuillez utiliser le nouvel assistant dh_installsystemd
à la place.
- Les outils dh_systemd_enable et dh_systemd_start ont
été remplacés par un nouvel assistant
dh_installsystemd. Pour la même raison, la séquence
systemd de dh a aussi été retirée. Si
vous avez besoin de désactiver dh_installsystemd, veuillez
utiliser une cible de réécriture vide.
Veuillez noter que dh_installsystemd a un comportement
légèrement différent dans certains cas (par exemple
lors de l'utilisation du paramètre --name).
- dh_installdirs ne crée plus les répertoires
debian/paquet sans qu'on le lui demande explicitement (ou il doit
créer un sous-répertoire à l'intérieur).
La grande majorité des paquets ne seront pas
affectés par ce changement.
- Le système de construction makefile passe maintenant les
options INSTALL="install --strip-program=true" à
make(1). Les systèmes dérivés (comme
configure ou cmake) ne sont pas affectés par ce
changement.
- Le système de construction autoconf passe maintenant
l'option --runstatedir=/run à ./configure.
- Le système de construction cmake passe maintenant l'option
-DCMAKE_INSTALL_RUNSTATEDIR=/run à cmake(1).
- dh_installman préfère maintenant détecter le
langage à partir du chemin plutôt que de l'extension.
- dh_auto_install crée maintenant uniquement le
répertoire de destination nécessaire. Auparavant, le
répertoire de construction de chaque paquet était
créé. Cela n'affectera pas les paquets qui se construisent
uniquement avec debhelper, mais pourrait faire apparaître des
bogues dans les commandes qui ne sont pas incluses avec debhelper.
- Les outils dh_installdocs, dh_installexamples,
dh_installinfo et dh_installman renvoient maintenant une
erreur si leur configuration contient un motif qui ne correspond à
rien ou qui référence un chemin qui n'existe pas.
Les exceptions connues incluent la construction avec le profil
nodoc, où les outils ci-dessus permettront un échec
silencieux de la correspondance lorsque le motif est utilisé pour
spécifier la documentation.
- Les outils dh_installdocs, dh_installexamples,
dh_installinfo et dh_installman acceptent maintenant le
paramètre --sourcedir avec la même signification que
dans dh_install. De plus, ils se rabattent sur debian/tmp
comme dh_install.
Note de migration : un bogue dans debhelper 11
jusqu'à 11.1.5 faisait que dh_installinfo ignorait
--sourcedir de manière incorrecte.
- Les systèmes de construction perl-makemaker et
perl-build ne passent plus l'option -I. à Perl. Les
paquets qui ont encore besoin de ce comportement peuvent l'émuler
en utilisant la variable d'environnement PERL5LIB. Par exemple en
ajoutant export PERL5LIB=. dans leur fichier debian/rules
(ou équivalent).
- La variable d'environnement PERL_USE_UNSAFE_INC n'est plus
définie par dh, ni aucun des outils dh_auto_*. Cela
avait été ajouté comme contournement temporaire, pour
éviter les échecs de construction d’un grand nombre
de paquets en même temps.
De plus, cette fonction deviendra peut-être
obsolète car l'amont a l'intention de retirer la prise en charge
de la variable d'environnement PERL_USE_UNSAFE_INC. Lorsque ce
sera le cas, cette variable sera aussi supprimée
rétroactivement des niveaux de compatibilité
existants.
- L'assistant dh_makeshlibs termine maintenant sur une erreur si
objdump renvoie une valeur de sortie différente de zéro lors
de l'analyse d'un fichier.
- Les outils dh_installdocs et dh_installexamples pourraient
maintenant installer la plupart de la documentation dans un
répertoire différent, pour satisfaire les recommandations de
la Charte Debian §12.3 (depuis la
version 3.9.7).
Si un paquet source contient un seul paquet binaire dans
debian/control, ou si aucun des paquets n'est un paquet
-doc, alors ce changement n'a pas d'effet pour ce paquet source,
et vous pouvez aller au changement suivant.
Par défaut, ces outils essaient maintenant de
déterminer un « paquet principal pour la
documentation » (que l'on appellera
doc-main-package) pour chaque paquet -doc. S'ils trouvent
un tel doc-main-package, ils installeront la documentation sous
/usr/share/doc/doc-main-package pour le paquet
considéré. C'est-à-dire que le chemin peut changer,
mais la documentation est toujours fournie par le paquet
-doc.
L'option --doc-main-package peut être
utilisée si la détection automatique est insuffisante, ou
pour réinitialiser le chemin à sa valeur
précédente s'il y a une raison de diverger des
recommandations de la Charte Debian.
Quelques documents ne sont pas affectés par ce
changement. En particulier le fichier copyright, les fichiers changelog,
README.Debian, etc. Ces fichiers seront toujours installés
sous /usr/share/doc/package.
- Les outils dh_strip et dh_shlibdeps n'utilisent plus les
motifs de noms de fichiers pour déterminer les fichiers à
traiter. À la place, ils ouvrent le fichier et cherchent un
en-tête ELF pour déterminer si ce fichier est un objet
partagé ou un exécutable ELF.
Ce changement peut forcer les outils à traiter plus de
fichiers qu'avant.
- v10
- Les changements par rapport à la version 9
sont :
- Il est maintenant plus facile de déboguer les séquences
install et binary parce qu'elles peuvent maintenant
être facilement re-exécutées (sans avoir à
refaire un cycle complet de « clean &
rebuild »)
- La principale précaution est que dh_* enregistre uniquement
ce qui s'est passé dans une unique cible de
réécriture. Lorsque tous les appels à une commande
dh_cmd donnée arrivent dans la même cible de
réécriture, tout fonctionnera comme avant.
Exemple de ce qui pourrait mal se passer :
override_dh_toto:
dh_toto -pmon_paquet
override_dh_titi:
dh_titi
dh_toto --remaining
Dans ce cas, l'appel à dh_foo --remaining
inclura aussi mon_paquet, car dh_foo -pmon_paquet a
été exécuté dans une cible de
réécriture différente. Ce problème n'est pas
limité à --remaining et concerne aussi -a,
-i, etc.
- À présent, la commande dh_installdeb échappe
les caractères du shell dans les lignes du fichier de config
maintscript. C'était l'intention originale mais cela n'a
jamais fonctionné correctement et les paquets ont commencé
à compter sur l'échappement incomplet (p. ex. en
encadrant les noms de fichiers de guillemets).
- La commande dh_installinit utilise maintenant
--restart-after-upgrade par défaut. Les paquets
nécessitant le comportement précédent devraient
utiliser l'option --no-restart-after-upgrade.
- La séquence autoreconf est maintenant activée par
défaut. Veuillez passer l'option --without autoreconf
à dh si cela n'est pas voulu pour certains paquets.
- La séquence systemd est maintenant activée par
défaut. Veuillez passer l'option --without systemd à
dh si cela n'est pas voulu pour certains paquets.
- Supprimé rétroactivement : dh ne crée
plus le répertoire de construction du paquet lors de l'omission des
commandes de debhelper en cours. Cela n'affectera pas les paquets qui se
construisent uniquement avec debhelper, mais pourrait faire
apparaître des bogues dans les commandes qui ne sont pas incluses
avec debhelper.
Cette fonctionnalité de compatibilité avait un
bogue depuis sa création dans debhelper/9.20130516, qui la
faisait échouer en compat 9 et précédent.
Comme il n'y a eu aucun rapport de problème causé par ce
bogue en 5 ans, cela a été supprimé
plutôt que corrigé.
- v9
- Les changements par rapport à la version 8
sont :
- v8
- Les changements par rapport à la version 7
sont :
- Les commandes échoueront plutôt que de produire une alerte
lorsqu'elles recevront des options inconnues.
- dh_makeshlibs va exécuter le programme
dpkg-gensymbols sur toutes les bibliothèques
partagées qu'il génère pour les fichiers shlibs.
-X peut alors être utilisé pour exclure certaines
bibliothèques. En outre, les bibliothèques rangées
à des emplacements inhabituels que pkg-gensymbols n'aurait
pas traitées avant qu'elles ne lui soient transmises, induisent un
changement de comportement qui peut causer l'échec de la
construction de certains paquets.
- dh exige que la séquence à exécuter soit
indiquée en tant que premier paramètre. Tous les
commutateurs doivent venir après. C'est-à-dire qu'il faut
écrire
« dh $@ --toto », et non
« dh --toto $@ »
- dh_auto_* utilise préférentiellement
Module::Build de Perl au lieu de Makefile.PL.
- v7
- Ce mode est déconseillé.
C'est le niveau de compatibilité le plus bas pris en
charge.
Si vous mettez à jour depuis un niveau de
compatibilité antérieur, veuillez consulter
debhelper-obsolete-compat(7).
- debhelper-obsolete-compat(7)
- Upgrading from a (now) obsolete compatibility level? This document covers
the upgrade checklist up to the earliest supported level.
- debhelper(7)
- General information about the debhelper framework. This document also
covers how to declare your chosen debhelper compat level.
Niels Thykier <niels@thykier.net>
Joey Hess
Cette traduction est maintenue à l'aide de l'outil po4a
<URL:http://po4a.alioth.debian.org/> par l'équipe francophone
de traduction de Debian.
Veuillez signaler toute erreur de traduction en écrivant
à <debian-l10n-french@lists.debian.org> ou par un rapport de
bogue sur le paquet debhelper.
Vous pouvez toujours avoir accès à la version
anglaise de ce document en utilisant la commande « man -L C
<section> <page_de_man> ».