Annexe A. Aperçu des outils du responsable Debian

Table des matières

A.1. Outils de base
A.1.1. dpkg-dev
A.1.2. debconf
A.1.3. fakeroot
A.2. Contrôle de paquets (« lint »)
A.2.1. lintian
A.2.2. debdiff
A.3. Assistance pour debian/rules
A.3.1. debhelper
A.3.2. dh-make
A.3.3. yada
A.3.4. equivs
A.4. Construction de paquets
A.4.1. cvs-buildpackage
A.4.2. debootstrap
A.4.3. pbuilder
A.4.4. sbuild
A.5. Envoi de paquets
A.5.1. dupload
A.5.2. dput
A.5.3. dcut
A.6. Automatisation de la maintenance
A.6.1. devscripts
A.6.2. autotools-dev
A.6.3. dpkg-repack
A.6.4. alien
A.6.5. debsums
A.6.6. dpkg-dev-el
A.6.7. dpkg-depcheck
A.7. Outils de portage
A.7.1. quinn-diff
A.7.2. dpkg-cross
A.8. Documentation et information
A.8.1. docbook-xml
A.8.2. debiandoc-sgml
A.8.3. debian-keyring
A.8.4. debian-maintainers
A.8.5. debview

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.

La plupart des descriptions de ces outils proviennent des descriptions de leurs paquets. Vous trouverez plus d'informations dans les documentations de ces paquets. Vous pouvez aussi obtenir plus d'informations avec la commande apt-cache show nom_de_paquet.

A.1. Outils de base

Les outils suivants sont pratiquement nécessaires à tout responsable.

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

A.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. Section 6.5, « Gestion de la configuration avec debconf ». debconf n'est pas requis par la Charte Debian pour le moment, mais cela pourrait changer.

A.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, vous pouvez construire un paquet en tant que simple utilisateur : dpkg-buildpackage -rfakeroot.

A.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 que n'en font 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.

A.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 Section 5.3, « 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 http://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).

A.2.2. debdiff

debdiff (du paquet devscripts, Section A.6.1, « 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 paquet_1-1_arch.deb paquet_2-1_arch.deb

Ou même sur un couple de fichiers de changements :

debdiff paquet_1-1_arch.changes paquet_2-1_arch.changes

Pour plus d'informations, veuillez consulter debdiff(1).

A.3. Assistance pour debian/rules

Des outils de construction de paquets facilitent le processus d'écriture du fichier debian/rules. Section 6.1.1, « Scripts d'assistance » contient plus d'informations sur l'intérêt de les utiliser ou non.

A.3.1. debhelper

debhelper regroupe un ensemble de programmes pouvant être utilisés dans debian/rules pour automatiser les tâches courantes relatives à la fabrication 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és avec apt-cache search ^dh-.

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

A.3.3. yada

yada est un autre assistant. Il utilise un fichier debian/packages pour créer debian/rules et d'autres fichiers nécessaires dans le sous-répertoire debian/. Le fichier debian/packages contient des instructions pour construire les paquets et il n'est pas nécessaire de créer de fichiers Makefile. Il est possible d'utiliser un moteur de macros semblable à celui utilisé dans les fichiers SPECS des paquets source RPM.

Pour plus d'informations, voir le site de YADA.

A.3.4. 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éta-paquets », dont l'unique objet est de dépendre d'autres paquets.

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

A.4.1. cvs-buildpackage

cvs-buildpackage permet de mettre à jour ou de récupérer des paquets source dans un référentiel CVS, il permet de fabriquer un paquet Debian depuis le référentiel CVS et assiste le responsable lors de l'intégration de modifications amont dans le référentiel.

Ce paquet fournit l'infrastructure facilitant l'utilisation de CVS pour le responsable Debian. Il permet de conserver des branches CVS distinctes pour les distributions stable, unstable et éventuellement experimental et de bénéficier des avantages d'un système de gestion de version.

A.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 minimum. Les automates de constructions « chrootés » utilisent ce paquet ; voir ci-après.

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

pbuilder-uml est un paquet similaire, qui va même plus loin en réalisant la construction au sein d'un environnement « User Mode Linux ».

A.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 Section 5.10.3.3, « wanna-build » pour plus d'informations et http://buildd.debian.org/ pour voir le système en fonctionnement.

A.5. Envoi de paquets

Les paquets suivants aident à automatiser ou simplifier le processus d'envoi de paquets dans l'archive officielle.

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

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

A.5.3. dcut

dcut (du paquet dput, Section A.5.2, « dput ») permet de supprimer des fichiers du répertoire d'envoi FTP.

A.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 de modification ou des lignes de signatures, en cherchant des bogues depuis Emacs et en utilisant le fichier officiel config.sub le plus récent.

A.6.1. devscripts

devscripts contient des scripts et outils très pratiques pour maintenir les paquets Debian. Parmi ces scripts, debchange et dch manipulent le fichier debian/changelog en ligne de commande et debuild est une sur-couche à dpkg-buildpackage. L'utilitaire bts est aussi très pratique pour mettre à jour l'état des rapports de bogue en ligne de commande. uscan permet de suivre les nouvelles versions amont de vos paquets. debrsign permet de signer un paquet à distance avant de l'envoyer, ce qui est bien utile quand la machine de construction de paquet est différente de celle où résident vos clés GPG.

Voir la page de manuel devscripts(1) pour une liste complète des scripts disponibles.

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

A.6.3. 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 à jour.

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

A.6.5. debsums

debsums vérifie des paquets installés par rapport à leurs sommes de contrôle MD5. Remarquez que les paquets n'ont pas tous des sommes de contrôle MD5 car elles ne sont pas requises par la Charte.

A.6.6. dpkg-dev-el

dpkg-dev-el fournit des macros 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.

A.6.7. dpkg-depcheck

dpkg-depcheck (du paquet devscripts, Section A.6.1, « 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).

A.7. Outils de portage

Les outils suivants sont pratiques pour les porteurs et la compilation croisée (« cross-compilation »).

A.7.1. quinn-diff

quinn-diff est utilisé pour localiser les différences d'une architecture à l'autre. Il permet de déterminer, par exemple, quels paquets de l'architecture X doivent être portés sur l'architecture Y.

A.7.2. dpkg-cross

dpkg-cross est un outil qui installe les bibliothèques et les en-têtes nécessaires à une compilation croisée (« cross-compilation ») 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.

A.8. Documentation et information

Les paquets suivants fournissent des informations pour les responsables ou de l'aide pour construire de la documentation.

A.8.1. 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. dblatex est un autre outil pour générer des PDF à partir des XML pour DocBook.

A.8.2. 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 devrait être utilisé à la place). Il fournit également des scripts pour construire et décliner les sources en de multiples formats de sortie.

De la documentation sur la DTD est disponible dans le paquet debiandoc-sgml-doc.

A.8.3. debian-keyring

Contient les clés publiques GPG et PGP des développeurs Debian. Voir Section 3.2.2, « Gestion de clé publique » et la documentation du paquet pour plus d'informations.

A.8.4. debian-maintainers

Contient les clés publiques GPG des responsables Debian. Voir http://wiki.debian.org/DebianMaintainer et la documentation du paquet pour plus d'informations.

A.8.5. debview

debview fournit un mode Emacs pour voir les paquets binaires Debian. Il vous permet d'examiner un paquet sans le décompresser.