1. Aperçu des outils du responsable Debian
Cette section contient un aperçu rapide des outils dont dispose le responsable. Cette liste n'est ni complète, ni définitive, il s'agit juste d'un guide des outils les plus utilisés.
Les outils du responsable Debian sont destinés à aider les responsables et libérer leur temps pour des tâches plus cruciales. Comme le dit Larry Wall, « il y a plus d'une façon de le faire ».
Certaines personnes préfèrent utiliser des outils de haut niveau, d'autres pas. Debian n'a pas de position officielle sur la question ; tout outil conviendra du moment qu'il fait le boulot. C'est pourquoi cette section n'a pas été conçue pour indiquer à chacun quel outil il doit utiliser ou comment il devrait faire pour gérer sa charge de responsable. Elle n'est pas non plus destinée à favoriser l'utilisation d'un outil aux dépens d'un autre.
Most of the descriptions of these packages come from the actual package
descriptions themselves. Further information can be found in the package
documentation itself. You can also see more info with the command
apt-cache show
package-name.
1.1. Outils de base
Les outils suivants sont pratiquement nécessaires à tout responsable.
1.1.1. dpkg-dev
dpkg-dev
contient les outils (y compris dpkg-source
) nécessaires pour dépaqueter, construire, et envoyer les paquets source Debian. Ces utilitaires fournissent les fonctionnalités de bas niveau indispensables pour créer et manipuler les paquets ; en tant que tels, ils sont essentiels à tout responsable Debian.
1.1.2. debconf
debconf
fournit une interface unifiée pour configurer les paquets de façon interactive. Il est indépendant de l'interface et permet une configuration en mode texte, par une interface HTML ou par boîtes de dialogue. D'autres types d'interface peuvent être ajoutés sous forme de modules.
Vous en trouverez la documentation dans le paquet debconf-doc
.
Beaucoup pensent que ce système devrait être utilisé pour tout paquet nécessitant une configuration interactive, cf. Gestion de la configuration avec debconf. debconf
n'est pas requis par la Charte Debian pour le moment, mais cela pourrait changer.
1.1.3. fakeroot
fakeroot
simule les privilèges de root. Cela permet de fabriquer un paquet sans être root (en général, les paquets installent des fichiers appartenant à root). Si vous avez installé fakeroot
, dpkg-buildpackage
l’utilisera automatiquement.
1.2. Contrôle de paquets (« lint
»)
Selon le « Free On-line Dictionary of Computing
» (FOLDOC), « lint
» est « un outil de traitement de langage C qui contient beaucoup plus de tests complets sur le code qu’ont habituellement les compilateurs C ». Les outils de contrôle de paquets aident les responsables à découvrir automatiquement les problèmes habituels et les violations de Charte dans leurs paquets.
1.2.1. lintian
lintian
dissèque les paquets pour y repérer des bogues et des manquements aux règles de développement. Il contient des tests automatisés pour vérifier de nombreuses règles et quelques erreurs courantes.
Vous devriez récupérer la dernière version de lintian
depuis unstable
régulièrement et vérifier tous vos paquets. Notez que l'option -i
donne des explications détaillées sur la signification de chaque erreur, la partie concernée dans la Charte et le moyen habituel de régler le problème.
Voir Tests du paquet pour plus d'informations sur comment et quand utiliser lintian.
Vous pouvez aussi obtenir un résumé de tous les problèmes signalés par lintian sur vos paquets en https://lintian.debian.org/. Ces rapports contiennent la sortie de la dernière version de lintian
pour l'ensemble de la distribution de développement (unstable
).
1.2.2. lintian-brush
lintian-brush
fournit un ensemble de scripts qui peuvent corriger automatiquement plus de 80 problèmes trouvés par lintian dans les paquets Debian.
Il est fournit avec un script d'enveloppe qui appelle les scripts, met à jour le journal des modifications (si on le souhaite) et envoie chaque révision à la gestion de version.
1.2.3. piuparts
piuparts
est l'outil de test d'installation, de mise à niveau et de retrait de paquets .deb
.
piuparts
s'assure que les paquets .deb
gèrent correctement leur installation, leur mise à niveau et leur retrait. Il le fait en créant une installation minimale de Debian dans un chroot
et en installant, mettant à niveau et retirant les paquets dans cet environnement, puis en comparant l'état de l'arborescence des répertoires avant et après. piuparts
rapporte tous les fichiers qui ont été ajoutés, retirés ou modifiés durant ce processus.
piuparts
est censé être un outil d'assurance qualité pour les gens qui créent des paquets .deb
afin de les tester avant leur envoi dans l'archive Debian.
1.2.4. debdiff
debdiff
(du paquet devscripts
, devscripts) compare les listes de fichiers ainsi que les fichiers de contrôle de deux paquets. C'est un simple test de régression qui peut aider à remarquer si le nombre de paquets binaires a changé depuis le dernier envoi ou si autre chose a changé dans le fichier de contrôle. Bien sûr, certains des changements indiqués sont normaux, mais cela peut aider à empêcher différents accidents.
Vous pouvez l'exécuter sur un couple de paquets binaires :
debdiff package_1-1_arch.deb package_2-1_arch.deb
Ou même sur un couple de fichiers de changements :
debdiff package_1-1_arch.changes package_2-1_arch.changes
Pour plus d'informations, veuillez consulter debdiff 1.
1.2.5. diffoscope
diffoscope
fournit une comparaison en profondeur de fichiers, d'archives et de répertoires.
diffoscope
essaie d'explorer à fond ce qui rend différents des fichiers ou des répertoires. Il décompresse les archives de façon récursive de toute nature et transforme divers formats binaires en une forme plus lisible pour les comparer.
Développé à l'origine pour comparer deux fichiers .deb
ou deux fichiers changes
, il peut maintenant comparer deux fichiers d'archives, des images ISO ou des PDF aussi facilement et prend en charge un grand éventail de types de fichier.
Les différences peuvent être affichées dans des rapports au format texte ou HTML, ou comme une sortie JSON.
1.2.6. duck
duck
, le « Debian Url ChecKer » (vérificateur d'URL de Debian), traite plusieurs champs des fichiers debian/control
, debian/upstream
, debian/copyright
, debian/patches/*
et systemd.unit
, et vérifie la validité des URL, des liens VCS et des domaines d'adresse de courrier électronique qui s'y trouvent.
1.2.7. adequate
adequate
vérifie les paquets installés sur la machine et rapporte les bogues et les manquements aux règles de développement.
Les vérifications suivantes sont actuellement implémentées :
liens symboliques cassés
fichier de copyright absent
fichiers de configuration obsolètes
modules Python pas compilés en pseudocode
binaires de
/bin
et/sbin
requérant des bibliothèques de/usr/lib
bibliothèques absentes, symboles non définis, non correspondances de symboles de taille
conflits de licence
collisions de noms de programme
alternatives absentes
interpréteurs et détecteurs de
binfmt
absentsdépendances à
pkg-config
absentes
1.2.8. i18nspector
i18nspector
est un outil pour rechercher les problèmes courants dans les fichiers de modèles de traduction (POT), de catalogues de messages (PO) et de catalogues de messages compilés (MO).
1.2.9. cme
cme
est un outil issu du paquet libconfig-model-dpkg-perl
et c'est un éditeur avec validation de fichiers source de dpkg. Consultez la description du paquet pour voir ce qu'il peut faire.
1.2.10. licensecheck
licensecheck
tente de déterminer la licence qui s'applique aux fichiers qui lui sont soumis en recherchant au début du fichier des textes appartenant à diverses licences.
1.2.11. blhc
blhc
est un outil qui vérifie les journaux de constructions à la recherche des attributs de renforcement (« hardening ») manquants.
1.3. Assistance pour debian/rules
Des outils de construction de paquets facilitent le processus d'écriture du fichier debian/rules
. Scripts d'assistance contient plus d'informations sur l'intérêt de les utiliser ou non.
1.3.1. debhelper
debhelper
regroupe un ensemble de programmes pouvant être utilisés dans debian/rules
pour automatiser les tâches courantes relatives à la construction de paquets Debian binaires. debhelper
inclut des programmes pour installer différents fichiers, les compresser, ajuster leurs droits et intégrer votre paquet dans le système de menu Debian.
À la différence d'autres approches, debhelper
est divisé en plusieurs petits utilitaires simples qui agissent de manière cohérente. Ce découpage permet un contrôle des opérations plus fin que certains des autres outils pour debian/rules
.
Il existe aussi un certain nombre de petites extensions debhelper
trop éphémères pour être documentées ici. La plupart seront listées avec apt-cache search ^dh-
.
Lors du choix du niveau de compatibilité de debhelper
de votre paquet, il conviendrait de choisir le niveau de compatibilité le plus élevé pris en charge par la version stable la plus récente. L'utilisation d'un niveau de compatibilité plus élevé est réservée aux cas où des fonctionnalités particulières sont nécessaires et ne sont fournies que par ce niveau de compatibilité.
In the past the compatibility level was defined in debian/compat
,
however nowadays it is much better to not use that but rather to use a
versioned build-dependency like debhelper-compat (=12)
.
1.3.2. dh-make
dh-make
contient dh_make
, un programme qui crée un squelette de fichiers nécessaires à la construction d'un paquet Debian à partir d'une arborescence source. Comme le nom le suggère, dh_make
est une réécriture de debmake
et ses fichiers modèles utilisent les programmes dh_*
de debhelper
.
Quoique les fichiers de règles fabriqués par dh_make
constituent en général une base suffisante pour un paquet fonctionnel, ce ne sont que les fondations : la charge incombe toujours au responsable d'affiner les fichiers générés et de rendre le paquet complètement fonctionnel et en conformité avec la Charte.
1.3.3. equivs
equivs
est encore un assistant. Il est souvent conseillé pour un usage local, pour faire un paquet qui satisfasse des dépendances. Il est aussi parfois utilisé pour faire des « métapaquets », dont l'unique objet est de dépendre d'autres paquets.
1.4. Construction de paquets
Les paquets suivants facilitent le processus de construction des paquets, en contrôlant globalement dpkg-buildpackage
ainsi que la gestion des tâches.
1.4.1. git-buildpackage
git-buildpackage
permet de mettre à jour ou de récupérer des paquets source dans un référentiel Git, il permet de fabriquer un paquet Debian depuis le dépôt Git et assiste le responsable lors de l'intégration de modifications amont dans le dépôt.
Ce paquet fournit l'infrastructure facilitant l'utilisation de Git pour le responsable Debian. Il permet de conserver des branches Git distinctes pour les distributions stable
, unstable
et éventuellement experimental
et de bénéficier des avantages d'un système de gestion de versions.
1.4.2. debootstrap
debootstrap
permet d'amorcer un système Debian de base à n'importe quel endroit de votre système de fichiers. « Système de base » signifie ici le strict minimum de paquets nécessaires pour fonctionner et installer le reste du système.
Un système comme celui-ci peut être utilisé de nombreuses façons différentes. Par exemple, avec chroot
, vous pouvez y tester les dépendances de construction. Vous pouvez aussi vérifier le comportement d'un paquet installé dans un environnement minimal. Les automates de constructions « chrootés
» utilisent ce paquet ; voir ci-après.
1.4.3. pbuilder
pbuilder
construit un système « chrooté
» et compile des paquets dans ce système. C'est très pratique pour vérifier que les dépendances de compilation d'un paquet sont correctes et pour s'assurer qu'aucune dépendance de construction inutile ou incorrecte n'existe dans le paquet résultant.
cowbuilder
est un outil similaire, qui accélère le processus de construction en utilisant un système de fichiers COW sur n’importe quel système de fichiers standard Linux.
1.4.4. sbuild
sbuild
est un autre compilateur automatique. Il peut également être utilisé dans un environnement « chrooté
». Il peut être utilisé seul ou comme partie d'un environnement de compilation distribué en réseau. Comme le précédent, il fait partie du système utilisé par les porteurs pour construire des paquets binaires pour toutes les architectures disponibles. Voir wanna-build pour plus d'informations et https://buildd.debian.org/pour voir le système en fonctionnement.
1.5. Envoi de paquets
Les paquets suivants aident à automatiser ou simplifier le processus d'envoi de paquets dans l'archive officielle.
1.5.1. dupload
dupload
is a package and a script to automatically upload Debian
packages to the Debian archive, to log the upload, and to optionally send
mail about the upload of a package. It supports various kinds of hooks to
extend its functionality, and can be configured for new upload locations
or methods, although by default it provides various hooks performing checks
and comes configured with all Debian upload locations.
1.5.2. dput
The dput
package and script do much the same thing as dupload
,
but in a different way. Out of the box it supports to run dinstall
in dry-run mode after the upload.
1.5.3. dcut
dcut
(du paquet dput
, dput) permet de supprimer des fichiers du répertoire d'envoi FTP.
1.6. Automatisation de la maintenance
Les outils suivants permettent d'automatiser les différentes tâches de maintenance en ajoutant des entrées au journal des modifications ou des lignes de signatures, en cherchant des bogues depuis Emacs et en utilisant le fichier officiel config.sub
le plus récent.
1.6.1. devscripts
devscripts
is a package containing wrappers and tools that are very
helpful for maintaining your Debian packages. Example scripts include
debchange
(or its alias, dch
), which manipulates your
debian/changelog
file from the command-line, and debuild
, which
is a wrapper around dpkg-buildpackage
. The bts
utility is also
very helpful to update the state of bug reports on the command line.
uscan
can be used to watch for new upstream versions of your
packages (see https://wiki.debian.org/debian/watch for more info on that).
suspicious-source
outputs a list of files which are not common source
files.
Voir la page de manuel devscripts 1 pour une liste complète des scripts disponibles.
1.6.2. reportbug
reportbug
est un outil conçu pour rendre relativement faciles les rapports de bogues dans Debian et dans les distributions dérivées. Parmi ces fonctionnalités :
intégration à mutt et aux lecteurs de mail mh/nmh ;
accès aux rapports de bogues non résolus pour faciliter l'identification des problèmes qui ont été déjà rapportés ;
vérification automatique des dernières versions des paquets.
reportbug
est conçu pour une utilisation sur des systèmes où un agent de transport de courrier électronique est installé ; néanmoins, on peut éditer le fichier de configuration et envoyer les rapports avec n'importe quel serveur de courrier électronique.
Ce paquet fournit aussi le script querybts
pour naviguer dans le système de suivi des bogues de Debian.
1.6.3. autotools-dev
autotools-dev
contient les meilleurs pratiques pour les responsables des paquets qui utilisent autoconf
ou automake
. Il contient également les fichiers canoniques config.sub
et config.guess
, connus pour fonctionner avec tous les portages Debian.
1.6.4. dpkg-repack
dpkg-repack
crée un paquet Debian à partir d'un paquet déjà installé. Si des changements ont été effectués sur le paquet depuis qu'il a été installé (des fichiers de /etc
modifiés par exemple), le nouveau paquet héritera de ces changements.
Cet utilitaire peut faciliter la copie de paquet d'un ordinateur à un autre, ou la recréation de paquets installés sur un système qui ne sont plus disponibles ailleurs, ou pour sauvegarder l'état actuel d'un paquet avant de le mettre à niveau.
1.6.5. alien
alien
convertit des paquets binaires entre différents formats de paquets, y compris des paquets Debian, RPM (RedHat), LSB (Linux Standard Base), Solaris et Slackware.
1.6.6. dpkg-dev-el
dpkg-dev-el
fournit un paquet Emacs Lisp pour faciliter l'édition des fichiers du répertoire debian
. Par exemple, des fonctions pratiques permettent de lister les bogues actuels d'un paquet et de finaliser la dernière entrée d'un fichier debian/changelog
.
1.6.7. dpkg-depcheck
dpkg-depcheck
(du paquet devscripts
, devscripts) exécute une commande sous strace
pour déterminer tous les paquets utilisés par la commande.
Pour les paquets Debian, c'est utile pour créer une ligne Build-Depends
d'un nouveau paquet : exécuter le processus de compilation avec dpkg-depcheck
fournira une bonne première approximation des dépendances de compilation. Par exemple :
dpkg-depcheck -b debian/rules build
dpkg-depcheck
peut aussi être utilisé pour vérifier les dépendances d'exécution, d'autant plus si le paquet utilise exec 2 pour exécuter d'autres programmes.
Pour plus d'informations, veuillez voir dpkg-depcheck 1.
1.6.8. debputy
The debputy
tools is new since 2024. While its main purpose is to offer a
new Debian package build paradigm, it includes subcommands that can be used on
any existing Debian package to validate the correctness of most of the files in
debian/*
, and in many cases also automatically fix them.
To check correctness of files in debian/* run:
debputy lint --spellcheck
To format debian/control and debian/tests/control files
debputy reformat --style black
Using the reformat
command obsoletes using wrap-and-sort -ast
.
The debputy tool also includes a language server which, when integrated with a
code editor, can give real-time feedback on the correctness of files in
debian/*
while editing them.
For more information please see debputy 1.
1.7. Outils de portage
Les outils suivants sont pratiques pour les porteurs et la compilation croisée (cross-compilation
).
1.7.1. dpkg-cross
dpkg-cross
est un outil qui installe les bibliothèques et les en-têtes nécessaires à une compilation croisée d'une manière similaire à dpkg
. De plus, les fonctionnalités de dpkg-buildpackage
et dpkg-shlibdeps
ont été améliorées pour accepter les compilations croisées.
1.8. Documentation et information
Les paquets suivants fournissent des informations pour les responsables ou de l'aide pour construire de la documentation.
1.8.1. debian-policy
Le paquet debian-policy
fournit la charte Debian (Debian Policy Manual
) ainsi que les documents qui lui sont associés et qui sont :
la charte Debian
la norme d'organisation du système de fichiers (FHS) ;
les règles pour Menu dans Debian ;
les règles pour Perl dans Debian ;
la spécification de gestion de configuration pour Debian ;
La spécification lisible par une machine des fichiers debian/copyright ;
autopkgtest : tests automatiques de paquets Debian ;
la liste officielle des noms de paquets virtuels ;
la liste de contrôle de la Charte pour mettre à niveau les paquets.
Le manuel de la charte Debian contientt l'ensemble des règles relatives aux paquets et des détails du mécanisme de l'empaquetage. Il couvre tout, des options requises de gcc
à la manière dont les scripts du responsable (postinst
, etc.) fonctionnent, aux sections et priorités des paquets, etc.
Le fichier /usr/share/doc/debian-policy/upgrading-checklist.txt.gz
qui liste les modifications entre les versions de la charte est aussi pertinent.
1.8.2. doc-debian
doc-debian
fournit une nombreuse documentation utile spécifique à Debian :
le Manifeste Linux de Debian ;
la constitution du projet Debian ;
le contrat social de Debian ;
les principes du logiciel libre selon Debian ;
la documentation du système de suivi des bogues Debian ;
l'introduction aux listes de diffusion de Debian.
1.8.3. developers-reference
Le paquet developers-reference
fournit le document que vous êtes en train de lire, le guide de référence du développeur pour Debian, un ensemble de règles et de bonnes pratiques qui ont été établies par et pour la communauté des développeurs Debian.
1.8.4. maint-guide
Le paquet maint-guide
fournit le guide du nouveau responsable Debian.
Ce document tente de décrire aux utilisateurs ordinaires de Debian et aux développeurs en devenir, la construction d'un paquet Debian. Il utilise un langage peu technique et est complété par des exemples pratiques.
1.8.5. debmake-doc
The debmake-doc
package contains the Guide for Debian Maintainers.
This document is newer than Debian New Maintainers' Guide and intends to replace it. The Guide for Debian Maintainers caters to those learning Debian packaging and covers a wide range of topics and tools, along with plenty of examples about various types of packaging issues.
1.8.6. packaging-tutorial
Ce tutoriel est une introduction à la construction de paquet Debian. Il apprend aux développeurs en devenir comment modifier un paquet existant, comment créer ses propres paquets et comment interagir avec la communauté Debian.
En plus du tutoriel principal, il fournit trois exercices pratiques sur la modification du paquet grep
, l'empaquetage du jeu gnujump
et enfin sur l'empaquetage d'une bibliothèque Java.
1.8.7. how-can-i-help
how-can-i-help
montre les possibilités de contribuer à Debian. Il est ancré à APT
pour lister ces opportunités de contributions à Debian sur des paquets installés localement (paquets orphelins, bogues marqués « newcomer » — pour débutant) après chaque invocation d'APT
. Le programme peut aussi bien être exécuté directement et, dans ce cas, il liste la totalité des contributions possibles (et pas seulement les plus récentes).
1.8.8. docbook-xml
docbook-xml
provides the DocBook XML DTDs, which are commonly used
for Debian documentation (as is the older debiandoc SGML DTD).
docbook-xsl
fournit les fichiers XSL pour construire et décliner les sources en de multiples formats de sortie. Vous devriez utiliser un processeur de ligne de commande XSLT, tel que xsltproc
, pour utiliser les feuilles de style XSL. La documentation des feuilles de style est disponible dans les nombreux paquets docbook-xsl-doc-*
.
Pour fabriquer des PDF à partir des FO (Formatting Objects
), il faut un processeur de FO comme xmlroff
ou fop
. Un autre outil comme dblatex
peut générer des PDF à partir des XML pour DocBook.
1.8.9. debiandoc-sgml
debiandoc-sgml
fournit la définition de type de document (Document Type Definition
ou DTD
) SGML pour DebianDoc, souvent utilisé pour la documentation Debian, mais est maintenant déconseillé (docbook-xml
ou python3-sphinx
devraient être utilisés à la place).
1.8.10. debian-keyring
Contains the public OpenPGP keys of Debian Developers and Maintainers. See Gestion de clé publique and the package documentation for more information.
1.8.11. debian-el
debian-el
fournit un mode Emacs pour afficher les paquets binaires Debian. Il vous permet d'examiner un paquet sans le décompresser.