[ 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 ]
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.
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.
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.
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 :
ne pas chiffrer, respectivement le fichier .changes et le fichier paquet source .dsc.
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.
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.
Deux types de construction et d'installation pour les binaires, voir
dpkg-source(1)
.
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
.
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.
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
.
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.
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.
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.
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.
debian/rules
- le script principal de construction
Voyez debian/rules
, le
principal script de construction, Section 4.9.
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]
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 :
Version (obligatoire)
Distribution (obligatoire)
Urgency (obligatoire)
Maintainer (obligatoire)
Changes (obligatoire)
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.
Voyez debian/substvars
et
le remplacement de variables, Section 4.10.
debian/files
Voyez Liste des fichiers créés :
debian/files
, Section 4.12.
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.
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.
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.
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.
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.
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