Le manuel de programmation de dpkg - chapitre 4
Les fichiers de contrôle et leurs champs

Beaucoup d'outils dans la suite dpkg manipulent les données dans un format commun, connu sous le nom de fichiers de contrôle. Les paquets source et binaire ont des données de contrôle comme les fichiers .changes qui contrôlent l'installation et le chargement des fichiers, et les bases de données internes à dpkg sont dans un format similaire.

4.1 La syntaxe des fichiers de contrôle

Un fichier consiste en un ou plusieurs paragraphes de champs. Ces paragraphes sont séparés par des lignes blanches. certains fichiers de contrôle n'autorisent qu'un seul paragraphe; d'autres plusieurs, dans ce cas, chaque paragraphe fait souvent référence à différent paquet.

Chaque paragraphe est une série de champs et de valeurs; chaque champ est constitué d'un nom, suivi par deux-points et la valeur. Il se termine à la fin de la ligne. Les espaces horizontaux (espaces et tabulations) peuvent apparaître avant ou après la valeur et sont ignorés; par convention, il y a un espace après les deux-points.

Certaines valeurs de champs peuvent s'étaler sur plusieurs lignes; dans ce cas, chaque continuation de ligne doit commencer par un espace ou une tabulation. N'importe quels espaces ou tabulations à la fin des lignes d'un champ de valeur est ignoré.

Sauf où cela est indiqué, seulement une simple ligne de données est autorisée et les espaces ne sont pas significatifs dans un corps de champ. Les espaces ne doivent jamais apparaître dans les noms (de paquets, d'architectures, de fichiers, etc), dans les numéros de version ou entre les caractères des relations de version.

Les lignes vides ou les lignes contenant seulement des espaces ou des tabulations ne sont pas autorisées à l'intérieur des champs de valeur ou entre les champs - ce qui marqueraient un nouveau paragraphe.

Il est important de noter qu'il y a plusieurs champs qui sont optionnels tant que dpkg et les outils associés sont concernés, mais qui doivent apparaître dans chaque paquet Debian, ou dont l'omission peut entraîner des problèmes. Quand tu écrits des fichiers de contrôle pour les paquets Debian, tu dois lire le manuel des principes Debian en même temps que les détails ci-dessous et la liste des champs pour un fichier particulier.


4.2 La liste des champs


4.2.1 Package

Le nom du paquet binaire. Les noms de paquet sont constitués de caractères alphanumériques et + - . (plus, moins, point). [14]

Ils doivent contenir au moins deux caractères et commencer par un caractère alphanumérique. Dans la version courante de dpkg, ils sont triés par ordre alphabétique en tenant compte des majuscules [15]; utilise des noms de paquets en minuscule à moins que le paquet que tu construis (ou est référencé dans d'autres champs) utilise déjà des majuscules.


4.2.2 Version

Ce champ liste le numéro de version des paquets source ou binaire - voir Numérotation des versions, chapter 5.

4.2.3 Architecture

Ce champ est une chaîne de caractères correspondant à une architecture; c'est un simple mot pour l'architecture.

dpkg vérifiera l'architecture déclarée d'un paquet binaire avec sa propre valeur in situ avant de l'installer.

La valeur spéciale all indique que le paquet est indépendant de l'architecture.

Dans le fichier principal debian/control du paquet source, ou dans le fichier de contrôle des paquets sources .dsc, une liste des architectures (séparée par des espaces) est aussi autorisée, tout comme la valeur spéciale any. Une liste indique que le source construira un paquet dépendant de l'architecture, et fonctionnera correctement seulement sur les architectures listées. any indique que même si le paquet source n'est pas dépendant d'une architecture particulière et devrait bien se compiler sur n'importe laquelle, les paquets binaires produits ne sont pas indépendants des architectures mais sera par contre spécifique à l'architecture courante de construction.

Dans un fichier .changes, le champ Architecture liste la ou les architectures des paquets qui sont chargés. Ce sera une liste; si le source du paquet est aussi chargé, l'entrée spéciale source est aussi présent.

L'architecture courante de construction peut être déterminée en utilisant dpkg --print-architecture [16]. Cette valeur est automatiquement utilisée par dpkg-gencontrol quand il construit le fichier de contrôle pour un paquet binaire pour lequel les informations de contrôle source ne spécifient pas l'architecture all.

Il existe une option à part, --print-installation-architecture, pour trouver quelle architecture, dpkg est prêt à installer. Cette information est aussi dans la sortie de dpkg --version.


4.2.4 Maintener

Ce champ contient le nom du mainteneur et son adresse de courrier électronique. Le nom vient d'abord, suivi par l'adresse du courrier électronique entre les signes inférieurs et supérieurs <> (au format RFC822). Si le nom du mainteneur contient un point alors le champ entier ne fonctionnera pas directement comme une adresse électronique à cause d'un problème dans la syntaxe spécifiée dans la RFC822; un programme utilisant ce champ comme une adresse doit vérifier cela et corriger le problème si nécessaire (par exemple en mettant entre parenthèses le nom et en le déplaçant à la fin, et en amenant l'adresse électronique devant). Le fichier .changes ou les données analysées de changelog contiennent le nom et l'adresse électronique de la personne responsable de cette version particulière en question - ce n'est pas forcément le mainteneur habituel du paquet.

Ce champ est habituellement optionnel tant qu'il concerne dpkg, mais son absence génère généralement un avertissement lors de la construction de paquets.


4.2.5 Source

Ce champ identifie le nom du paquet source.

Dans un fichier principal d'information de contrôle de source ou dans un fichier .changes ou dans un fichier .dsc ou dans les données analysées de changelog, ceci peut seulement contenir le nom du paquet source.

Dans un fichier de contrôle d'un paquet binaire (ou dans un fichier Packages), il peut être suivi par un numéro de version entre parenthèses[17]. Ce numéro de version peut être omis (et l'est par dpkg- gencontrol) s'il a la même valeur que le champ Version du paquet binaire en question. Le champ lui-même peut être omis d'un fichier de contrôle d'un paquet binaire quand le paquet source possède le même nom et la même version que le paquet binaire.


4.2.6 Champs de relation entre paquets: Depends, Pre-Depends, Recommends, Suggest, Conflicts, Provides, Replaces

Ces champs décrivent les relations du paquet avec les autres paquets. Leurs syntaxes et sémantiques sont décrites dans Déclaration des relations entre les paquets, chapter 8.


4.2.7 Description

Dans un paquet binaire, dans le fichier Packages ou le fichier principal de contrôle du source, ce champs contient une description du paquet binaire, dans un format spécial. Voir Description des paquets - le champ Description, chapter 7 pour les détails.

Dans un fichier .changes, il contient un résumé de la description des paquets chargés. La partie du champ avant la première nouvelle ligne est vide; ensuite chaque ligne possède le nom d'un paquet binaire et la ligne de résumé de la description de ce paquet binaire. Chaque ligne est indentée par un espace.


4.2.8 Essential

C'est un champ booléen qui peut apparaître seulement dans un fichier de contrôle d'un paquet binaire (ou dans le fichier Packages) ou dans un paragraphe de champs par paquet d'un fichier principal de données de contrôle de source.

S'il est positionné à yes alors dpkg et dselect refuseront d'enlever ce paquet (bien qu'il puisse être mis à niveau et/ou déplacer). L'autre valeur possible est no, ce qui est la même chose que de n'avoir pas de champ du tout.


4.2.9 Section et Priority

Ces deux champs classent le paquet. La Priority représente l'importance du paquet installé; la Section représente un zone d'application dans laquelle le paquet a été classifiée.

Quand ces champs apparaissent dans le fichier debian/control, ils donnent les valeurs des sous-champs priorité et section du champ Files du fichier .changes, et donnent les valeurs par défaut de la section et de la priorité pour les paquets binaires.

La section et la priorité sont représentées, même pas comme des champs séparés, dans les informations pour chaque fichier dans le champ Files d'un fichier .changes. La valeur de la section dans un fichier .changes est utilisée pour décider où sera installé le paquet dans une archive FTP.

Ces champs ne sont pas utilisés par dpkg, mais par dselect quand il trie les paquets et sélectionne la valeurs par défaut. Voir le manuel des principes Debian pour les priorités en usage et les critères pour sélectionner les priorités pour les paquets Debian, et regarde une archive FTP Debian pour obtenir une liste des priorités courantes.

Ces champs peuvent apparaître dans les fichiers de contrôle des paquets binaires, dans ce cas, ils fournissent une valeur par défaut au cas où les fichiers Packages ne possèdent pas l'information. dpkg et dselect n'utiliseront seulement la valeur d'un fichier .deb que s'ils n'ont pas d'autres informations; une valeur listée dans un fichier Packages sera toujours prioritaire. Par défaut dpkg-genchanges n'inclut pas la section et la priorité dans le fichier de contrôle d'un paquet binaire - utilise les options -isp, -is ou -ip pour réaliser cette opération.


4.2.10 Binary

Ce champ est une liste de paquets binaires.

Quand il apparaît dans un fichier .dsc, il représente la liste des paquets binaires qu'un paquet source peut produire. Il ne produit pas nécessairement tous ces paquets binaires pour chaque architecture. Le fichier de contrôle source ne contient pas les détails sur les architectures qui sont les plus appropriées pour les paquets binaires.

Quand il apparaît dans un fichier .changes, il liste les noms des paquets binaires actuellement chargés.

La syntaxe est une liste de paquets binaires séparée par des virgules[18]. Actuellement, les paquets doivent être séparés en utilisant seulement des espaces dans le fichier .changes.


4.2.11 Installed-size

Ce champ apparaît dans les fichiers de contrôle des paquets binaires, et dans les fichiers Packages. Il donne la capacité totale du disque nécessaire pour installer le dit paquet.

L'espace disque est représenté en Kilo-octets comme un nombre décimal simple.


4.2.12 Files

Ce champ contient la liste des fichiers avec les informations sur chacun d'eux. L'information exacte et la syntaxe exacte varient avec le contexte. Dans tous les cas, la partie du contenu du champ sur la même ligne que le nom du champ est vide. Le reste du champ est une ligne par fichier, chaque ligne est indentée par un espace et contient un nombre de sous-champs séparés par des espaces.

Dans le fichier .dsc (contrôle des sources Debian), chaque ligne contient la somme de contrôle MD5, la taille et le nom du fichier tar et (éventuellement) le fichier diff qui représente le reste du paquet source[19]. Les formes exactes des noms de fichier sont décrites dans Les paquets sources comme archives, section 3.3.

Dans le fichier .changes, il contient une ligne par fichier chargé. Chaque ligne contient la somme de contrôle, la taille, la section et la priorité et le nom du fichier. La section et la priorité sont les valeurs des champs correspondants dans le fichier principal de contrôle source - voir Section et Priority, subsection 4.2.9. Si aucune section ou priorité n'est spécifiée alors - doit être utilisé, bien que les valeurs de section et de priorité doivent être spécifiées pour installer proprement les nouveaux paquets.

La valeur spéciale byhand pour la section dans un fichier .changes indique que le fichier en question n'est pas un fichier ordinaire de paquet et doit être installé à la main par les mainteneurs de la distribution. Si la valeur de la section est byhand alors la valeur de la priorité devrait être -.

Si une nouvelle révision Debian d'un paquet est chargée et qu'aucune archive originale source n'est distribuée, le fichier .dsc doit toujours contenir l'entrée du champ Fields pour l'archive originale source package-upstream-version.orig.tar.gz mais le fichier .changes devrait l'omettre. Dans ce cas, l'archive originale source sur le site de distribution doit être exactement, octet par octet, l'archive originale source qui a été utilisée pour générer le fichier .dsc et le fichier diff qui a été chargé.


4.2.13 Standards-Version

Ce champ contient la version la plus récente des standards (les manuels des principes et du programmeur dpkg et les textes associés) auxquels le paquet se conforme. Le champ est mis à jour manuellement lors de l'édition du paquet source pour se conformer aux nouveaux standards; il peut parfois être utilisé pour signaler qu'un paquet a besoin d'une attention particulière.

Son format est le même que le numéro de version sauf que epoch et la révision Debian ne sont pas autorisés - voir Numérotation des versions, chapter 5.


4.2.14 Distribution

Dans un fichier .changes ou dans la sortie analysée de changelog, ce champ contient le ou les noms (séparés par des espaces) de la ou les distributions où cette version du paquet devrait être ou a été installée. Les noms de distribution suivent les règles des noms de paquets (voir Package, subsection 4.2.1).

Les valeurs des distributions courantes sont:

stable
C'est la version courante mise à jour de Debian GNU/Linux. Une nouvelle version apparaît approximativement tous les 3 mois après que le code de développement ait été gelé pendant un mois de test. Une fois que la distribution est stable, seule la correction d'erreurs majeures est autorisée. Quand les changements sont faits sur cette distribution, le chiffre mineur de la version est incrémenté (par exemple: 1.2 devient 1.2.1 puis 1.2.2, etc).

unstable
Cette valeur de distribution fait référence à une partie en cours de développement de l'arbre de distribution Debian. Les nouveaux paquets, les nouvelles versions de paquets et la correction d'erreur vont dans le répertoire unstable. Travailler avec cette distribution est de ta seule responsabilité.

contrib
Les paquets avec cette valeur de distribution ne respectent pas les critères pour être inclus dans la distribution principale Debian comme défini dans le manuel des principes, mais respectent les critères pour une distribution contrib. Il n'y a actuellement aucune distinction entre les paquets stable et unstable dans les distributions contrib et non-free. Utilise à bon escient le chargement de cette distribution.

non-free
Comme les paquets de la section contrib, les paquets dans la distribution non-free ne respectent pas certains critères pour pouvoir être inclus dans la distribution principale Debian comme défini dans la manuel des principes. De nouveau, utilise à bon escient cette distribution.

experimental
Les paquets de cette valeur de distribution sont considérés par leur mainteneur comme étant risqué. Souvent, ils représentent les paquets en béta-test ou en cours de développement provenant de sources variées que le mainteneurs veut faire tester, mais ne sont pas prêt pour être inclus dans l'arbre de distribution Debian. A utiliser à tes risques et périls.

frozen
De temps en temps, (généralement, tous les 3 mois) la distribution unsable rentre dans un état 'gelé' dans l'attente d'une version stable. Pendant cette période de test (habituellement 4 semaines), seules les corrections d'erreurs existantes ou récemment découvertes sont autorisées.

Tu devrais lister toutes les distributions où le paquet devrait être installé. Sauf dans des circonstances inhabituelles; les installations vers stable doivent aussi aller dans frozen (si il existe) et dans unstable. De même, les installations dans frozen devraient aussi aller dans unstable.


4.2.15 Urgency

Ce champ est une description de l'importance d'une mise à jour d'une version à l'autre. Il contient un simple mot-clé qui prend habituellement une de ces valeurs LOW, MEDIUM ou HIGH suivi par un commentaire optionnel (séparé par un espace) qui est généralement entre parenthèses. Par exemple:
Urgency: LOW (HIGH for diversions users)
Ce champ apparaît dans le fichier .changes et dans les changelogs analysées; sa valeur apparaît comme valeur de l'attribut urgency dans le changelog de dpkg-style (voir debian/control, subsection 3.2.2).

Les mots-clé ne sont pas sensibles au majuscule/minuscule.


4.2.16 Date

Dans les fichiers .changes et les changelogs analysés, ce champ donne la date de la construction de paquet ou de la dernière édition.


4.2.17 Format

Le champ apparaît dans les fichiers .changes, et spécifie une révision de format pour le fichier. Le format décrit ici est la version 1.5. La syntaxe de la valeur du format est la même que la numérotation de la version des paquets, sauf que epoch et la révision Debian ne sont pas autorisés - voir Numérotation des versions, chapter 5.


4.2.18 Changes

Dans un fichier .changes ou dans un changelog analysé, ce champ contient les données lisibles des changements, décrivant les différences entre la dernière version et celle courante.

Il ne doit rien y avoir dans ce champ avant le première nouvelle ligne; toutes les lignes suivantes doivent être indentées par au moins un espace; les lignes vides doivent être représentées par une ligne contenant seulement un espace et un point.

Chaque information de changement de version doit être précédée par une ligne de 'titre' donnant au moins la version, la ou les distributions et l'urgence, d'une façon lisible.

Si les données de plusieurs versions sont retournées, l'entrée de la plus récente version doit être retournées d'abord, et les entrées doivent être séparées par une ligne vide (la ligne de 'titre' peut aussi être suivi par une ligne vide).


4.2.19 Filenames et MSDOS-Filename

Ces champs dans les fichiers Packages donnent les noms de fichiers d'un paquet dans une distribution, par rapport à la racine de la hiérarchie Debian. Si le paquet a été découpé en plusieurs morceaux, les parties sont toutes listées dans l'ordre, séparées par des espaces.


4.2.20 Size et MD5sum

Ces champs dans les fichiers Packages donnent la taille (en octets, exprimée en décimal) et la somme de contrôle MD5 du ou des fichiers qui composent le paquet de la distribution. Si le paquet est découpé en plusieurs parties, les valeurs pour ces parties sont listées dans l'ordre, séparées par des espaces.


4.2.21 Status

Ce champ dans le fichier status de dpkg enregistre si l'utilisateur veut un paquet installé, enlevé ou laissé tout seul, si il est incorrect (nécessite une réinstallation) ou non et son état courant sur le système. Chaque morceau de ces informations est un simple mot.


4.2.22 Config-version

Si un paquet n'est pas installé, ou non configuré, ce champ dans le fichier status de dpkg enregistre la dernière version de ce paquet qui a été configuré avec succès.


4.2.23 Conffiles

Ce champ dans le fichier status de dpkg contient les informations sur les fichiers de configuration automatiquement gérés maintenus par un paquet. Ce champ ne doit pas apparaître n'importe où dans un paquet!


4.2.24 Champs obsolètes

Ils sont toujours reconnus par dpkg mais ne doivent plus apparaître n'importe où.
Revision

Package-Revision

Package_Revision
La partie revision Debian d'une version de paquet était à un moment dans un champ de fichier de contrôle séparé. Ce champ était présent à travers plusieurs noms.

Recommended
Ancienne dénomination pour Recommends.

Optional
Ancienne dénomination pour Suggests.

Class
Ancien nom pour Priority.


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