Le manuel de programmation de dpkg - chapitre 2
Les paquets binaires

Un paquet binaire a deux sections principales. La première partie consiste en divers fichiers d'information de contrôle et des scripts utilisés par dpkg lors de l'installation et de la désinstallation. Voir Les fichiers d'information de contrôle de paquet, section 2.2.

La deuxième partie est une archive contenant les fichiers et les répertoires à installer.

Dans le futur, les paquets binaires pourront contenir d'autres composants, comme des sommes de contrôles ou des signatures numériques. Le format de l'archive est décrit en entier dans la page du manuel deb(5).


2.1 Création des paquets binaires - dpkg-deb

Toutes les manipulations de paquets binaires se font avec dpkg-deb; c'est le seul programme qui connaisse le format. (dpkg-deb sera exécuté par l'appel de dpkg, si dpkg reconnaît que les paramètres qui lui sont passés sont pour dpkg-deb et l'exécutera avec les mêmes paramètres).

De manière à créer un paquet binaire, tu dois créer une arborescence qui contient tous les fichiers et répertoires que tu veux retrouver dans les données du système de fichier du paquet. Dans les paquets Debian format source, ce répertoire est habituellement debian/tmp, par rapport à la racine de l'arborescence du paquet source.

Ils doivent avoir l'emplacement (par rapport à la racine de l'arborescence que tu construis), le propriétaire et les permissions que tu veux leur assigner sur le système quand ils sont installés.

Dans la version courante de dpkg, l'uid (ou nom de l'utilisateur) et le gid (ou le nom du groupe) pour les utilisateurs et les groupes utilisés doivent être les mêmes sur le système où le paquet est construit et sur le système où il sera installé.

Tu dois ajouter un répertoire spécial à la racine de cette mini arborescence que tu as créée: DEBIAN. Il doit contenir les fichiers de contrôle d'information, notamment le fichier de contrôle des paquets binaires (voir Le fichier principal d'information de contrôle: control, section 2.3).

Le répertoire DEBIAN n'apparaîtra pas dans l'archive du système de fichiers du paquet, et ainsi ne sera pas crée quand le paquet sera installé.

Quand tu prépares, tu dois appeler:

dpkg --build directory
Cette commande construit le paquet dans directory.deb (dpkg sait que --built est une option de dpkg-deb, donc il appelle dpkg-deb avec les mêmes arguments pour construire le paquet.)

Voir les pages de manuel dpkg-deb(8) sur les détails pour savoir comment examiner le contenu de ce fichier fraîchement créé.

Tu trouveras les sorties des commandes suivantes intéressantes:

dpkg-deb --info nomdefichier.deb
dpkg-deb --contents nomdefichier.deb
dpkg --contents nomdefichier.deb
Pour voir le fichier copyright d'un paquet, tu peux utiliser la commande:
dpkg --fsys-tarfile nomdufichier.deb | tar xof
usr/doc/\*copyright | less

2.2 Les fichiers d'information de contrôle de paquet

La partie d'information de contrôle d'un paquet binaire est une collection de fichiers avec des noms connus de dpkg. Il traitera le contenu de ces fichiers d'une manière spéciale - certains d'entre eux contiennent des informations utilisées par dpkg quand il installe ou enlève le paquet; les autres sont des script que le mainteneur du paquet veut que dpkg exécute.

Il est possible de mettre d'autres fichiers dans la zone de contrôle du paquet, mais ce n'est pas généralement une bonne idée (de toute façon ils seront ignorés).

Voici une liste brève de fichiers d'information de contrôle utilisés par dpkg et un résumé de ce qu'ils fonts.

control
C'est le fichier clé de description utilisé par dpkg. Il spécifie le nom et la version du paquet, donne sa description pour les utilisateur, établit les relations avec les autres paquets, etc. Voir Le fichier principal d'information de contrôle: control, section 2.3.

Il est habituellement généré automatiquement à partir des informations du paquet source par le programme dpkg-gencontrol et avec l'aide de dpkg-shlibdeps. Voir Les outils pour manipuler les paquets sources, section 3.1.

postinst, preinst, postrm, prerm
Ce sont des fichiers exécutables (habituellement des scripts) que dpkg démarre pendant l'installation, la mise à jour ou l'effacement des paquets. Ils permettent au paquet de traiter les choses qui lui sont particulières ou qui nécessitent un traitement plus compliqué que celui fourni par dpkg. Les détails de quand et comment ils sont appelés, sont indiqués dans les scripts de maintenance des paquets et la procédure d'installation voir Script de maintenance de paquet et procédure d'installation, chapter 6.

Il est très important de rendre ces scripts idempotents [2]. Si une erreur survient, l'utilisateur interrompt dpkg ou si d'autres problèmes se produisent, tu ne laisses pas l'utilisateur avec un paquet inutilisable.

Les scripts de maintenance sont garantis pour fonctionner avec un terminal de contrôle et peuvent interagir avec l'utilisateur. S'ils ont besoins de demander les mots de passe, utilise une interaction plein écran ou quelque chose de similaire, tu dois faire cela vers et à partir de /dev/tty, étant donné que dpkg redirigera à certains points les entrées/sorties standards du script afin d'enregistrer la procédure d'installation. Cependant, car ces scripts doivent être exécutés sur la sortie standard redirigée dans un tube pour les besoins d'enregistrement, les scripts Perl doivent être non bufférisés en sortie en indiquant $|=1 afin que la sortie soit imprimée immédiatement plutôt que d'être bufférisé.

Chaque script doit retourner zéro pour un succès ou autre chose que zéro pour un échec.

conffiles
Ce fichier contient une liste de fichiers de configuration qui doivent être manipulés automatiquement par dpkg (voir Manipulation des fichiers de configuration, chapter 9). Note que tous les fichiers de configuration ne sont pas forcément listés ici.

shlibs
Ce fichier contient une liste des librairies partagées fourni par le paquet avec les détails des dépendances pour chacune. Il est utilisé par dpkg-shlibdeps quand il détermine quelles dépendances sont nécessaires dans un fichier de contrôle de paquet. Le format du fichier shlibs est décrit dans Le format du fichier shlibs, section 12.1.


2.3 Le fichier principal d'information de contrôle: control

Le fichier d'information de contrôle le plus important utilisé par dpkg quand il installe un paquet est control. Il contient toutes les statistiques vitales du paquet.

Les fichiers d'information de contrôle des paquets binaires construits à partir des sources Debian sont faits par un outil spécial dpkg- gencontrol qui lit debian/control et debian/changelog pour trouver les informations dont il a besoin. voir Les paquets sources, chapter 3 pour plus de détails.

Les champs dans les fichiers de contrôle des paquets binaires est:

Package
(obligatoire)

Version
(obligatoire)

Architecture
(obligatoire[3])

Depends, Provides
et al.

Essential

Maintener

Section, Priority

Source

Description

Installed-Size

Une description de la syntaxe des fichiers de contrôle et le but de ces champs sont disponibles dans Les fichiers de contrôle et leurs champs, chapter 4.
Le manuel de programmation de dpkg - Copyright ©1996 Ian Jackson Copyright ©1997 David Curé et Christian Jacolot pour la version française.
Table des matières; résumé; suivant; précédent.
10 février 1998
D. Cure cure@cnam.fr
C. Jacolot jacolot@ubolib.univ-brest.fr