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 absents

  • dé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 contient un script du même nom pour envoyer des paquets dans l'archive Debian, suivre les envois, et les annoncer par courrier électronique. Il peut être configuré pour envoyer les paquets ailleurs ou avec d'autres méthodes.

1.5.2. dput

dput fait à peu près la même chose que dupload, mais autrement. Il possède quelques fonctions supplémentaires comme la possibilité de vérifier la signature GnuPG et les sommes de contrôles avant l'envoi, ainsi que la possibilité de démarrer dinstall en mode simulation (dry-run) après l'envoi.

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 est un paquet qui fournit des enveloppes et des outils très utiles pour assurer la maintenance des paquets Debian. Les scripts d'exemple comprennent debchange (ou son alias, dch) qui manipule le fichier debian/changelog en ligne de commande et debuild qui est une enveloppe autour de dpkg-buildpackage. L'utilitaire bts est également très utile pour mettre à jour en ligne de commande l'état des rapports de bogues. uscan peut être utilisé pour guetter les nouvelles versions amont de vos paquets. suspicious-source produit une liste des fichiers qui ne sont pas des fichiers source ordinaires.

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.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. 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.6. 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.7. docbook-xml

docbook-xml fournit la définition de type de document (Document Type Definition ou DTD) XML pour DocBook, souvent utilisé pour la documentation Debian (de même que la plus ancienne DTD SGML pour DebianDoc). Ce manuel, par exemple, est écrit en XML pour DocBook.

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.8. 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.9. debian-keyring

debiandoc-keyring contient les clés publiques GPG des développeurs et des responsables Debian. Voir Gestion de clé publique et la documentation du paquet pour plus d'informations.

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