# 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` checks packages installed on the system and reports policy violations.

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

- bibliothèques absentes, symboles non définis, non correspondances de symboles de taille

- collisions de noms de programme

- alternatives absentes

- interpréteurs et détecteurs de `binfmt` absents

- dépendances à `pkg-config` absentes

- invalid user/group values in systemd/D-Bus/sysvinit files.

See /usr/share/doc/adequate/README on how to have `adequate` be ran automatically using `autopkgtest`.

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

See the devscripts(7) manual page for a complete list of available scripts.

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