[ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ suivant ]


La Charte Debian
Annexe C - Les paquets sources (annexe tirée de l'ancienPackaging Manual)


Les paquets binaires de la distribution Debian sont créés à partir des paquets sources, lesquels sont dans un format spécial pour faciliter la construction automatique des binaires.


C.1 Les outils pour gérer les paquets sources

De nombreux outils sont fournis pour manipuler les paquets sources. Ils emballent et déballent les sources, aident à la construction des paquets binaires et gèrent la distribution des nouvelles versions.

Ils sont présentés ici et leurs usages habituels décrits ; pour de plus amples informations, voir dpkg-source(1).

Le paquet hello est un exemple de construction de paquet source Debian et de la mise en œuvre des utilitaires qui y sont impliqués.


C.1.1 dpkg-source - faire et défaire un paquet source Debian

Ce programme est fréquemment utilisé sur la ligne de commande ; il est aussi appelé à partir des scripts de construction automatique de paquet, tel que dpkg-buildpackage.

Il est appelé ainsi pour dépaqueter un paquet :

     dpkg-source -x .../path/to/filename.dsc

avec filename.tar.gz et filename.diff.gz (si c'est utile) dans le même répertoire. Il dépaquette dans package-version, et, si c'est utile, package-version.orig, dans le répertoire actuel.

Pour créer un paquet, on utilise :

         dpkg-source -b paquet-version

Les fichiers .dsc, .tar.gz et .diff.gz seront créés (si c'est utile) dans le répertoire courant. dpkg-source n'efface pas l'arborescence des sources. Cela doit être fait séparément, si nécessaire.

Voir aussi Les paquets sources en tant qu'archive, Section C.3.


C.1.2 dpkg-buildpackage - script de contrôle pour la construction de paquet

dpkg-buidpackage est un script qui fait appel à dpkg-source, aux cibles de debian/rules : clean, build et binary, à dpkg-genchanges et à pgp (ou pgp) pour construire des paquets signés, source et binaire, installables sur le serveur.

Il est généralement utilisé sur la ligne de commande, à la racine du répertoire source à créer ou à détruire. Il peut être invoqué sans arguments. Les arguments utiles sont :

-uc, -us

ne pas chiffrer, respectivement le fichier .changes et le fichier paquet source .dsc.

-psign-command

Invoque la commande sign-command au lieu de chercher gpg ou pgp dans la variable PATH. sign-command doit avoir le même comportement que gpg ou pgp.

-rroot-command

Quand les privilèges de root sont nécessaires, invoque la commande root-command. root-command invoquera son premier argument comme une commande, dans le PATH si nécessaire, et passera son second argument et les autres à la commande qu'il appelle. Si aucune root-command n'est fournie, dpkg-buildpackage ne fera rien pour obtenir les privilèges de root ; ainsi, pour la plupart des programmes, il devra être appelé par root pour démarrer.

-b, -B

Deux types de construction et d'installation pour les binaires, voir dpkg-source(1).


C.1.3 dpkg-gencontrol - créer des fichiers de contrôle pour les paquets binaires

Ce programme est habituellement appelé à partir du fichier debian/rules (voir L'arborescence debianisée, Section C.2) depuis la racine de l'arborescence source.

On l'appelle juste avant que ne soit établi le système des permissions pour les fichiers et les répertoires du répertoire temporaire où le paquet est construit et avant la construction du paquet par dpkg-deb [87].

dpkg-gencontrol doit être appelé après que tous les fichiers du paquet ont été mis en place dans le répertoire temporaire de construction, afin que le calcul de la taille du paquet installé soit correct.

Il faut aussi que dpkg-gencontrol soit exécuté après dpkg-shlibdeps afin que les variables de substitutions, créées par dpkg-shlibdeps dans le fichier debian/substvars, soient disponibles.

Un paquet qui crée un seul paquet binaire et qui le construit dans le répertoire debian/tmp relatif à la racine du paquet source, appellera simplement : dpkg-gencontrol.

Les sources qui construisent plusieurs binaires utiliseront :

     dpkg-gencontrol -Pdebian/tmp-pkg -ppaquet

L'argument P indique à dpkg-gencontrol que le paquet est en train de se construire dans un répertoire différent de celui par défaut et l'argument -p indique le fichier de contrôle qui sera créé.

dpkg-gencontrol ajoute aussi des informations à la liste des fichiers dans debian/files ; cela peut servir à un prochain appel à dpkg-genchanges.


C.1.4 dpkg-shlibdeps - les dépendances des bibliothèques partagées

Ce programme est habituellement appelé à partir du fichier debian/rules, juste avant dpkg-gencontrol (voir L'arborescence debianisée, Section C.2), à la racine de l'arborescence source.

Les arguments sont des exécutables [88] pour lesquels les dépendances des bibliothèques partagées seront incluses dans le fichier de contrôle du paquet.

Si certaines bibliothèques partagées doivent seulement justifier d'un Recommends ou d'un Suggests, ou si certaines demandent un Pre-Depends, cela peut être réalisé en utilisant l'option -ddependency-field avant ces exécutables (chaque option -d prend effet jusqu'au prochain -d).

dpkg-shlibdeps ne modifie pas directement le fichier de contrôle. Par défaut, il ajoute au fichier debian/substvars des variables comme shlibs:Depends. Ces variables doivent être référencées dans les champs de dépendance du fichier de contrôle source dans les sections propres aux paquets binaires.

Par exemple, un paquet, avec une partie essentielle qui demande des dépendances et des parties facultatives qui ne demandent que des recommandations, séparerait ces dépendances en deux champs [89]. Cela peut être indiqué dans le fichier debian/rules par :

       dpkg-shlibdeps -dDepends programme autreprogramme ... \
                      -dRecommends partiefacultative autrepartiefacultative

et ensuite dans le fichier principal de contrôle debian/control :

     ...
     Depends: ${shlibs:Pre-Depends}
     Recommends: ${shlibs:Recommends}
     ...

Les sources qui produisent plusieurs paquets binaires avec des exigences différentes pour les dépendances envers les bibliothèques partagées peuvent utiliser l'option -pvarnameprefix pour annuler le préfixe shlibs: par défaut (un seul appel à dpkg-shlibdeps par réglage de cette option). Ils peuvent ainsi produire plusieurs ensembles de variables de dépendance, chacune de la forme varnameprefix:dependencyfield, auxquelles peuvent se référer les parties appropriées des fichiers de contrôle des paquets binaires.


C.1.5 dpkg-distaddfile - ajouter un fichier à debian/files

Certaines installations de paquets sur le serveur nécessitent d'inclure d'autres fichiers que les fichiers des paquets sources et binaires.

dpkg-distaddfile ajoute un fichier dans debian/files afin qu'il soit inclus dans le fichier .changes lorsque dpkg-genchanges sera lancé.

Il est habituellement invoqué à partir de la cible binary du fichier debian/rules :

     dpkg-distaddfile fichier section priority

L'argument filename est relatif au répertoire où dpkg-genchanges s'attend à le trouver, généralement au-dessus de la racine de l'arborescence source. La règle de debian/rules devrait placer ce fichier juste avant ou juste après l'appel à dpkg-distaddfile.

Les arguments section et priority sont placés sans modification dans le fichier résultant .changes.


C.1.6 dpkg-genchanges - créer un fichier de contrôle de l'installation sur le serveur .changes

Ce programme est généralement appelé par des scripts de construction automatique de paquet tels que dpkg-buildpackage mais peut être aussi appelé sur la ligne de commande.

Il est habituellement exécuté à la racine de l'arborescence source construite, et quand il est invoqué sans arguments, il écrira un simple fichier .changes basé sur les informations des fichiers de contrôle et de changement des paquets sources, et des paquets sources et binaires qui ont dû être construits.


C.1.7 dpkg-parsechangelog - produire une représentation du fichier changelog

Ce programme est utilisé en interne par dpkg-source et al. Il peut être aussi occasionnellement utilisé dans debian/rules et ailleurs. Il analyse un fichier changelog, par défaut debian/changelog, et affiche sur la sortie standard une représentation des informations contenues faite selon le format d'un fichier de contrôle.


C.1.8 dpkg-architecture - informations sur les systèmes de construction et d'installation

On peut utiliser ce programme sur la ligne de commande ; mais il est aussi appelé par dpkg-buildpackage ou debian/rules pour déterminer les variables d'environnement qui indiquent les architectures utilisées pour la construction et pour l'installation pendant le processus de construction du paquet.


C.2 L'arborescence debianisée

La structure de l'archive source, décrite ci-dessous, a été conçue pour permettre à une arborescence source debianisée et ses informations de contrôle associées d'être facilement dupliquée et transportée. L'arborescence source debianisée comprend une version du programme original, certains fichiers ajoutés pour le processus de debianisation, ainsi que tous les changements nécessaires réalisés sur les codes sources et scripts d'installation.

Les fichiers supplémentaires créés pour Debian sont dans le répertoire debian à la racine de l'arborescence source debianisée. Ils sont décrits ci-dessous.


C.2.1 debian/rules - le script principal de construction

Voyez debian/rules, le principal script de construction, Section 4.9.


C.2.2 debian/changelog

Voyez Changelog Debian : debian/changelog, Section 4.4.

Il est recommandé que tout le fichier changelog soit codé en UTF-8 de Unicode [90]


C.2.2.1 Comment définir des formats alternatifs pour le fichier changelog

Il est possible d'utiliser un format différent de celui proposé, en fournissant un analyseur pour le format qu'on veut utiliser.

Pour que dpkg-parsechangelog exécute l'analyseur, on inclura une ligne à l'intérieur des quarante dernières lignes du fichier correspondant à l'expression rationnelle Perl suivante : \schangelog-format:\s+([0-9a-z]+)\W. La partie entre parenthèses sera le nom du format. Par exemple, on pourrait dire :

     @@@ changelog-format: joebloggs @@@

Les noms des formats pour changelog sont des chaînes non vides de caractères alphanumériques.

Quand une telle ligne existe, dpkg-parsechangelog cherche l'analyseur dans /usr/lib/dpkg/parsechangelog/format-name ou dans /usr/local/lib/dpkg/parsechangelog/format-name ; c'est une erreur de ne pas le trouver, ou qu'il ne soit pas exécutable. Le format changelog par défaut est dpkg et un analyseur est fourni avec le paquet dpkg.

L'analyseur sera invoqué, au début du fichier, avec le changelog ouvert sur l'entrée standard. Il lira le fichier (ou le parcourra avec seek) pour trouver l'information et la retourner analysée sur la sortie standard sous la forme d'une série de champ de contrôle dans le format standard. Par défaut, il retournera seulement les informations les plus récentes du fichier changelog ; il acceptera l'option -vversion pour retourner les informations de changement de toutes les versions présentes strictement supérieures à version et ce sera donc une erreur que version soit absent dans le fichier changelog.

Voici les champs :

Si plusieurs versions sont retournées (à cause de l'utilisation de l'option -v), la valeur urgency sera la plus grande listée par toutes les versions requises et sera suivie par les commentaires concaténés (séparés par une espace) de toutes les versions requises ; les champs : maintainer, version, distribution et date proviennent toujours de la version la plus récente.

Pour le format du champ Changes voir Changes, Section 5.6.18.

Si le format du fichier changelog analysé laisse toujours ou presque toujours une ligne vide entre les notes de modifications individuelles, ces lignes vides seront supprimées, pour rendre la sortie résultante plus compacte.

Si le format de changelog ne contient pas de date ou d'information sur le nom du paquet, ces informations seront omises en sortie. L'analyseur ne doit pas essayer de les synthétiser ou de les trouver à partir d'autres sources.

Si le fichier changelog n'a pas le format attendu, l'analyseur se terminera avec un statut différent de zéro, plutôt que d'essayer de se débrouiller tant bien que mal et créer des sorties incorrectes.

Un analyseur de changelog ne doit pas être interactif.


C.2.3 debian/substvars et les variables de substitution

Voyez debian/substvars et le remplacement de variables, Section 4.10.


C.2.4 debian/files

Voyez Liste des fichiers créés : debian/files, Section 4.12.


C.2.5 debian/tmp

C'est l'emplacement temporaire, pour la construction des paquets binaires par la cible binary. Le répertoire tmp sert de racine à l'arbre du système de fichier qui est en train de se construire (par exemple en utilisant la règle d'installation du Makefile du paquet original et en le redirigeant dans tmp), et il contient aussi le sous-répertoire DEBIAN. Voir Comment créer les fichiers d'un paquet ? -- dpkg-deb, Section B.1.

Si plusieurs paquets binaires sont créés à partir du même arbre source, il est habituel d'utiliser plusieurs répertoires debian/tmp-truc, par exemple tmp-a ou tmp-doc.

Quelques soient les répertoires tmp créés et utilisés par binary, la cible clean doit bien sûr les effacer.


C.3 Les paquets sources en tant qu'archive

Sur les sites FTP, les paquets sources contiennent trois fichiers reliés entre eux. On doit avoir les trois bonnes versions pour pouvoir les utiliser.

Le fichier de contrôle des sources Debian - .dsc

Ce fichier est un fichier de contrôle utilisé par dpkg-source pour extraire un paquet source. Voyez Les fichiers de contrôle des sources Debian -- .dsc, Section 5.4.

L'archive source originelle - paquet_version-amont.orig.tar.gz

C'est un fichier tar comprimé (avec gzip -9) contenant le code source de l'auteur original du programme.

fichier diff de debianisation - paquet_version_amont-revision.diff.gz

C'est un fichier diff unifié (diff -u) donnant les changements requis pour modifier le source original en source Debian. Ces changements peuvent inclure seulement la modification ou la création de simples fichiers. Les permissions des fichiers, les cibles des liens symboliques et les caractéristiques des fichiers spéciaux ou tubes ne peuvent pas être changés et aucun fichier ne doit être enlevé ou renommé.

Tous les répertoires dans le fichier diff doivent exister, sauf le sous-répertoire debian à la racine de l'arbre source, qui sera crée par dpkg-source, si nécessaire, lors de l'extraction.

Le programme dpkg-source rendra automatiquement exécutable le fichier debian/rules (voir ci-dessous).

S'il n'y a pas de code source original, par exemple, si le paquet a été spécialement préparé pour Debian ou si le responsable Debian est le même que le responsable original, le format est alors légèrement différent : il n'y pas de fichier diff et le fichier tar est nommé paquet-version.tar.gz et contient de préférence un répertoire nommé paquet-version.


C.4 Comment dépaqueter un paquet source Debian sans dpkg-source

dpkg-source -x est la manière recommandée pour dépaqueter un paquet source Debian. Cependant, si le programme n'est pas disponible, il est possible de faire comme suit :

  • Déballer le fichier tar, pour créer un répertoire .orig.

  • Changer le nom du répertoire .orig en package-version.

  • Créer le sous-répertoire Debian à la racine de l'arborescence source.

  • Appliquer le fichier diff en utilisant patch -p0.

  • Déballer le fichier tar de nouveau, si l'on veut une copie du code source original à côté de la version debianisée.

  • Il n'est pas possible de créer une archive source Debian valide sans utiliser dpkg-source. En particulier, essayer d'utiliser diff directement pour créer le fichier .diff.gz ne fonctionnera pas.


    [ précédent ] [ Table des matières ] [ 1 ] [ 2 ] [ 3 ] [ 4 ] [ 5 ] [ 6 ] [ 7 ] [ 8 ] [ 9 ] [ 10 ] [ 11 ] [ 12 ] [ A ] [ B ] [ C ] [ D ] [ E ] [ F ] [ G ] [ suivant ]


    La Charte Debian

    version 3.7.2.2

    La liste de diffusion Debian-Policy