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.
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.
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
contains a set of scripts that can automatically
fix more than 80 common lintian issues in Debian packages.
It comes with a wrapper script that invokes the scripts, updates the changelog (if desired) and commits each change to version control.
1.2.3. piuparts
¶
piuparts
is the .deb
package installation, upgrading, and removal
testing tool.
piuparts
tests that .deb packages
handle installation, upgrading,
and removal correctly. It does this by creating a minimal Debian
installation in a chroot, and installing, upgrading, and removing packages
in that environment, and comparing the state of the directory tree before
and after. piuparts
reports any files that have been added, removed,
or modified during this process.
piuparts
is meant as a quality assurance tool for people who create
.deb
packages to test them before they upload them to the Debian
archive.
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
provides in-depth comparison of files, archives, and directories.
diffoscope
will try to get to the bottom of what makes files or directories
different. It will recursively unpack archives of many kinds and transform
various binary formats into more human readable form to compare them.
Originally developed to compare two .deb
files or two changes
files
nowadays it can compare two tarballs, ISO images, or PDF just as easily and
supports a huge variety of filetypes.
The differences can be shown in a text or HTML report or as JSON output.
1.2.6. duck
¶
duck
, the Debian Url ChecKer, processes several fields in the
debian/control
, debian/upstream
, debian/copyright
,
debian/patches/*
and systemd.unit
files and checks if URLs,
VCS links and email address domains found therein are valid.
1.2.7. adequate
¶
adequate
checks packages installed on the system and reports bugs
and policy violations.
The following checks are currently implemented:
- broken symlinks
- missing copyright file
- obsolete conffiles
- Python modules not byte-compiled
/bin
and/sbin
binaries requiring/usr/lib
libraries- missing libraries, undefined symbols, symbol size mismatches
- license conflicts
- program name collisions
- missing alternatives
- missing
binfmt
interpreters and detectors - missing
pkg-config
dependencies
1.2.8. i18nspector
¶
i18nspector
is a tool for checking translation templates (POT), message
catalogues (PO) and compiled message catalogues (MO) files for common problems.
1.2.9. cme
¶
cme
is a tool from the libconfig-model-dpkg-perl
package is an editor
for dpkg source files with validation. Check the package description to see
what it can do.
1.2.10. licensecheck
¶
licensecheck
attempts to determine the license that applies to each
file passed to it, by searching the start of the file for text belonging
to various licenses.
1.2.11. blhc
¶
blhc
is a tool which checks build logs for missing hardening flags.
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és avec apt-cache search ^dh-
.
When choosing a debhelper
compatibility level for your package, you
should choose the highest compatibility level that is supported in the
most recent stable release. Only use a higher compatibility level if you
need specific features that are provided by that compatibility level
that are not available in earlier levels.
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 référentiel Git 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 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 version.
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 minimum. 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.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.
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. 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
is a tool designed to make the reporting of bugs in Debian
and derived distributions relatively painless. Its features include:
- Integration with mutt and mh/nmh mail readers.
- Access to outstanding bug reports to make it easier to identify whether problems have already been reported.
- Automatic checking for newer versions of packages.
reportbug
is designed to be used on systems with an installed mail
transport agent; however, you can edit the configuration file and send
reports using any available mail server.
This package also includes the querybts
script for browsing the
Debian bug tracking system.
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 à jour.
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 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
.
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 (« 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.
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
¶
The debian-policy
package contains the Debian Policy Manual
and related documents, which are:
- Debian Policy Manual
- Filesystem Hierarchy Standard (FHS)
- Debian Menu sub-policy
- Debian Perl sub-policy
- Debian configuration management specification
- Machine-readable debian/copyright specification
- Autopkgtest - automatic as-installed package testing
- Authoritative list of virtual package names
- Policy checklist for upgrading your packages
The Debian Policy Manual the policy relating to packages and details of
the packaging mechanism. It covers everything from required gcc
options to the way the maintainer scripts (postinst
etc.) work,
package sections and priorities, etc.
Also useful is the file
/usr/share/doc/debian-policy/upgrading-checklist.txt.gz
,
which lists changes between versions of policy.
1.8.2. doc-debian
¶
doc-debian
contains lots of useful Debian-specific documentation:
- Debian Linux Manifesto
- Constitution for the Debian Project
- Debian Social Contract
- Debian Free Software Guidelines
- Debian Bug Tracking System documentation
- Introduction to the Debian mailing lists
1.8.3. developers-reference
¶
The developers-reference
package contains the document you are
reading right now, the Debian Developer's Reference, a set of
guidelines and best practices which has been established by and for
the community of Debian developers.
1.8.4. maint-guide
¶
The maint-guide
package contains the Debian New Maintainers' Guide.
This document tries to describe the building of a Debian package to ordinary Debian users and prospective developers. It uses fairly non-technical language, and it's well covered with working examples.
1.8.5. packaging-tutorial
¶
This tutorial is an introduction to Debian packaging. It teaches prospective developers how to modify existing packages, how to create their own packages, and how to interact with the Debian community.
In addition to the main tutorial, it includes three practical sessions
on modifying the grep
package, and packaging the gnujump
game
and a Java library.
1.8.6. how-can-i-help
¶
how-can-i-help
shows opportunities for contributing to Debian.
how-can-i-help
hooks into APT
to list opportunities for contributions to
Debian (orphaned packages, bugs tagged 'newcomer') for packages installed
locally, after each APT
invocation. It can also be invoked directly, and
then lists all opportunities for contribution (not just the new ones).
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
provides the DebianDoc SGML DTD, which has been
commonly used for Debian documentation, but is now deprecated
(docbook-xml
or python3-sphinx
should be used instead).
1.8.9. debian-keyring
¶
debiandoc-keyring
contient les clés publiques GPG et PGP 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 voir les paquets binaires Debian. Il vous permet d'examiner un paquet sans le décompresser.