Chapitre 7. Contrôle des erreurs du paquet

# Chapitre 7. Contrôle des erreurs du paquet

La réécriture de ce tutoriel avec des contenus à jour et des exemples pratiques supplémentaires est disponible sur Guide du responsable Debian. Veuillez utiliser ce nouveau tutoriel comme document principal.

Quelques techniques sont à connaître pour rechercher des erreurs sur le paquet avant de l'envoyer sur les archives publiques.

Il est aussi conseillé d'effectuer des essais sur une machine différente de la vôtre. Vous devez observer de près chaque alerte ou erreur pour tous les tests décrits ici.

## 7.1. Modifications suspectes

Si vous trouvez un nouveau fichier de correctif autocréé comme `debian-changes-*` dans le répertoire `debian/patches` après la construction de votre paquet Debian non natif au format `3.0 (quilt)`, il y a des chances que vous ayez accidentellement modifié quelques fichiers ou que le script de construction ait modifié les sources amont. Si c'est de votre faute, corrigez votre erreur. Si c'est provoqué par le script de construction, corrigez l'erreur à la racine avec dh-autoreconf comme en Section 4.4.3, « Personnalisation du fichier `rules` » ou contournez-la avec `source/options` comme en Section 5.24, « `source/options` ».

## 7.2. Vérification de l'installation d'un paquet

Vous devez essayer votre paquet pour vérifier qu'il s'installe sans problème. La commande debi(1) vous permet d'essayer l'installation de tout paquet binaire créé.

    $ sudo debi gentoo_0.9.12-1_i386.changes

Pour éviter les problèmes d'installation sur différents systèmes, vous devez vérifier qu'il n'y a pas de nom de fichier en conflit avec ceux existants dans d'autres paquets à l'aide du fichier `Contents-`i386`` téléchargé depuis l'archive Debian. La commande apt-file peut être pratique pour cela. S'il existe des collisions, veuillez prendre les mesures nécessaires pour éviter ces vrais problèmes : en renommant le fichier, en déplaçant le fichier commun dans un paquet différent dont plusieurs paquets peuvent dépendre, en utilisant le mécanisme d'alternatives (consultez update-alternatives(1)) en coordination avec les responsables des autres paquets concernés, ou encore en déclarant une relation de `Conflicts` dans le fichier `debian/control`.

## 7.3. Vérification des scripts du responsable d'un paquet

Tous les scripts du responsable, (c'est-à-dire les fichiers `preinst`, `prerm`, `postinst` et `postrm`), sont difficiles à écrire correctement, à moins qu'ils n'aient été générés automatiquement par les programmes `debhelper`. Ne les utilisez donc pas si vous êtes un responsable débutant (consultez Section 5.18, « `{post,pre}{inst,rm}` »).

Si le paquet utilise des scripts du responsable non triviaux, veuillez les essayer non seulement pour le processus d'installation, mais aussi les processus de suppression, purge et mise à niveau. De nombreux bogues dans les scripts du responsable surviennent lors de la suppression et de la purge. Utilisez la commande dpkg comme ceci pour les essayer :

    $ sudo dpkg -r gentoo
    $ sudo dpkg -P gentoo
    $ sudo dpkg -i gentoo_version-révision_i386.deb

Les séquences suivantes devraient être essayées :

- installation de la version précédente (si elle existe) ;

- mise à niveau depuis la version précédente ;

- rétrogradation (« downgrade ») à la version précédente (optionnel) ;

- purge ;

- installation du nouveau paquet ;

- suppression (« remove ») du paquet ;

- nouvelle installation du paquet ;

- purge ;

Pour votre premier paquet, vous devriez créer des paquets factices avec différentes versions pour essayer votre paquet à l'avance et éviter des problèmes par la suite.

Gardez à l'esprit que si votre paquet a déjà été publié avec Debian, des gens vont mettre à jour ce paquet à partir de la version qui était dans la publication Debian précédente. N’oubliez pas d'essayer aussi les mises à jour à partir de cette version.

Même si la réinstallation vers une version antérieure n'est pas officiellement gérée, il est préférable de la permettre.

## 7.4. Utilisation de `lintian`

Exécutez lintian(1) sur le fichier `.changes`. La commande lintian exécute de nombreux scripts de tests pour vérifier la plupart des erreurs habituelles d'empaquetage. [75]

    $ lintian -i -I --show-overrides gentoo_0.9.12-1_i386.changes

Bien sûr, remplacez le nom de fichier par celui du fichier `.changes` créé pour votre paquet. La sortie de la commande lintian utilise les balises suivants :

- `E:` pour erreur ; une violation certaine de la Charte ou erreur d'empaquetage ;

- `W:` pour avertissement ; une violation possible de la Charte ou erreur d'empaquetage ;

- `I:` pour information ; une information sur certains aspects d'empaquetage ;

- `N:` pour note ; un message détaillé pour vous aider à déboguer ;

- `O:` pour ignoré ; un message ignoré par le fichier `lintian-overrides` mais affiché avec le paramètre `--show-overrides`.

En cas d'avertissements, mettez au point le paquet pour les éviter ou vérifiez qu'ils sont infondés. S'ils sont infondés, configurez les fichiers `lintian-overrides` comme décrit en Section 5.14, « `{`paquet`.,source/}lintian-overrides` ».

Vous pouvez reconstruire le paquet avec dpkg-buildpackage et lancer lintian en une seule commande, si vous utilisez debuild(1) ou pdebuild(1).

## 7.5. Commande debc

La commande debc(1) permet d'énumérer les fichiers du paquet Debian binaire.

    $ debc paquet.changes

## 7.6. Commande debdiff

La commande debdiff(1) peut comparer les contenus de fichiers entre deux paquets Debian source

    $ debdiff ancien-paquet.dsc nouveau-paquet.dsc

La commande debdiff(1) permet aussi de comparer les listes de fichiers entre deux ensembles de paquets Debian binaires.

    $ debdiff ancien-paquet.changes nouveau-paquet.changes

Ces commandes sont utiles pour identifier ce qui a été modifié dans les paquets source et pour vérifier d'éventuelles modifications faites par inadvertance lors de la mise à jour des paquets binaires, comme par exemple des fichiers déplacés ou enlevés involontairement.

## 7.7. Commande interdiff

Vous pouvez comparer deux fichiers `diff.gz` avec la commande interdiff(1). C'est utile pour vérifier qu'aucune modification involontaire n'a été effectuée sur les sources par le responsable en mettant à jour les paquets à l'ancien format source `1.0`.

    $ interdiff -z ancien-paquet.diff.gz nouveau-paquet.diff.gz

Le nouveau format source `3.0` garde les modifications dans plusieurs fichiers de correctifs comme décrit en Section 5.25, « `patches/*` ». Vous pouvez aussi suivre les modifications de tous les fichiers `debian/patches/*` en utilisant interdiff.

## 7.8. Commande mc

Toutes ces opérations d'inspection de fichier peuvent être transformées en un processus intuitif avec un gestionnaire de fichiers comme mc(1) qui vous permet de consulter non seulement le contenu des fichiers paquet `*.deb`, mais aussi les fichiers `*.udeb`, `*.debian.tar.gz`, `*.diff.gz` et `*.orig.tar.gz`.

Soyez attentif aux fichiers inutiles ou de taille nulle, dans les paquets binaires et source. Souvent les fichiers inutiles ne sont pas nettoyés correctement ; adaptez le fichier `rules` pour compenser.

[75] Il n'est pas nécessaire d'ajouter le paramètre `-i -I --show-overrides` à lintian si vous avez personnalisé `/etc/devscripts.conf` ou `~/.devscripts` comme décrit en Section 6.3, « Commande debuild ».

Chapitre 6. Construction du paquet |  | Chapitre 8. Mise à jour de paquet