Paquets - 2. Descriptions de paquets
2.1 Arborescence
Les descriptions de paquets sont lues à partir des répertoires finkinfo
situés dans le répertoire /opt/sw/fink/dists
. La valeur de la variable "Trees" dans /opt/sw/etc/fink.conf
contrôle quels répertoires sont lus. Le nom des fichiers de description de paquets doit être identique au nom complet du paquet suivi de l'extension ".info".
À partir de fink 0.26.0, il existe plusieurs façons de spécifier le nom du fichier ; il est recommandé d'utiliser le nom le plus court compatible avec les autres paquets nécessaires.
Le nom du fichier est de la forme : nom invariant du paquet, suivi éventuellement d'un tiret et de l'architecture, suivi éventuellement d'un tiret et de la distribution, suivi éventuellement d'un tiret et de la version ou du couple version-révision, et terminé par ".info".
Les éléments "architecture" et "distributtion" ne sont autorisés que si leurs champs sont présents dans le paquet et qu'ils fournissent une seule et unique valeur.
L'arborescence des descriptions de paquets comprend plusieurs niveaux de répertoires. En voici la liste de la racine au bas de l'arborescence :
dists
est à la racine. Le répertoiredists
est nécessaire pour les outils Debian. In recent versions of fink, this is a symlink to a directory with a distribution-inspired name.- La distribution. Il y en a trois :
stable
,unstable
etlocal
. Le répertoirelocal
est sous le contrôle de l'utilisateur/administrateur local. Les répertoiresstable
etunstable
font partie de Fink. - L'arbre.
The
main
tree contains the bulk of the packages. Prior to July 1, 2010, the Cryptographic software was kept in a separate tree,crypto
, but this is now a section of themain
tree. finkinfo
etbinary-darwin-powerpc
.finkinfo
contient les descriptions de paquets Fink et leurs rustines, tandis quebinary-darwin-powerpc
contient les paquets binaires.deb
.- Sections. L'arbre
main
est subdivisé en sections thématiques pour en faciliter la gestion.
2.2 Format de fichier
Les fichiers de description sont de simples listes de paires clés-valeurs, appelés également "champs". Chaque ligne commence par une clé, suivie de deux-points et d'une espace, puis de la valeur de clé :
clé: valeur
Il y a deux notations pour les champs qui peuvent s'étendre sur plusieurs lignes.
La notation recommandée est basée sur la syntaxe "here-document" - "données ci-après", utilisée dans les scripts shell. Dans cette syntaxe, la première ligne est composée de la clé, suivie du symbole redoublé <<
comme valeur. Toutes les lignes suivantes sont considérées comme valeurs, jusqu'à la rencontre d'une ligne ne contenant que <<
. L'exemple ci-dessus ressemble maintenant à :
InstallScript: << mkdir -p %i/share/man make install prefix=%i mandir=%i/share/man mkdir -p %i/share/doc/%n install -m 644 COPYING %i/share/doc/%n <<
Avec ce format, l'indentation est optionnelle, mais vous pouvez l'utiliser pour améliorer la lisibilité.
On peut imbriquer plusieurs "here-document". Cela arrive souvent dans un champ SplitOff
ou SplitOffN
. Ces champs contiennent d'autres champs (à lignes multiples), et cette syntaxe permet aux sous-champs de contenir eux mêmes des lignes multiples. Le même code de terminaison <<
est utilisé pour les sous-champs utilisant la syntaxe "here-document". En voici un exemple :
SplitOff: << Package: %N-shlibs InstallScript: << ln -s %p/lib/libfoo.2.dylib %i/lib/libfoo.%v.dylib << <<
Une notation plus ancienne, obsolète, est basée sur la méthode de pliage des headers du RFC 822. Une ligne commençant par une espace est traitée comme la continuation de la ligne précédente. Exemple :
InstallScript: mkdir -p %i/share/man make install prefix=%i mandir=%i/share/man mkdir -p %i/share/doc/%n install -m 644 COPYING %i/share/doc/%n
Notez l'indentation obligatoire des lignes.
Dans les deux formats, les lignes vides ainsi que celles débutant avec un dièse (#) sont ignorées. Dans Fink, les clés (noms des champs) ne sont pas sensibles à la casse, vous pouvez donc écrire indifféremment : InstallScript
, installscript
ou INSTALLSCRIPT
. Cependant, on conseille la première forme, où chaque initiale de mot est mise en majuscules, pour des raisons de lisibilité. Certains champs prennent une valeur booléenne ; sont traitées comme vraies, les valeurs suivantes : "true", "yes", "on", "1" (toutes insensibles à la casse) ; toute autre valeur est traitée comme fausse.
2.3 Raccourcis %
Pour vous rendre la vie plus facile, Fink gère un jeu de raccourcis sur certains champs. Pour lever toute ambiguïté, vous pouvez utiliser des accolades autour des caractères qui doivent être considérés comme des raccourcis. Par exemple, %{n}
a la même signification que %n
. Les raccourcis disponibles sont les suivants :
Raccourcis | Signification |
---|---|
%n |
le nom du paquet actif |
%N |
Nom du paquet parent (le même que %n à moins d'être dans un
Note : si le champ |
%e |
ère du paquet |
%v |
version du paquet. Notez que l'ère ne fait partie de |
%V |
the full package Version, which automatically includes the Epoch
if present. Note that this percent expansion is only available for
packages whose |
%r |
révision du paquet |
%f |
nom complet du paquet, c'est-à-dire : %n-%v-%r. Notez que l'ère ne fait partie de |
%p, %P |
préfixe d'installation de Fink, par exemple : |
%d |
répertoire dans lequel le paquet est construit, par exemple : |
%D |
répertoire Dans lequel le paquet parent est construit (le même que %d à moins d'être dans un |
%i |
préfixe complet de la phase d'installation, équivalent à %d%p |
%I |
préfixe d'Installation du paquet parent, équivalent à %D%P (identique à %i à moins d'être dans un |
%a |
chemin des rustines |
%b |
répertoire de compilation, exemple : Note : ne l'utilisez que s'il n'y a pas d'autres possibilités. Le répertoire de compilation est le répertoire actif lorsque les scripts sont exécutés ; vous devez utiliser des chemins relatifs dans les commandes. |
%c |
paramètres pour configure : |
%m |
chaîne spécifiant l'architecture de la machine. Identique au résultat de la commande |
%% |
signe pourcentage (%) (ce signe n'est pas interprété en fonction de ce qui le suit). L'interprétation se fait de gauche à droite, si bien que %%n n'a rien à voir avec le nom du paquet, mais représente la chaîne %n. (Introduit dans fink-0.18.0). |
%type_raw[type], %type_pkg[type], %type_num[type] |
fonction de pseudo-hachage retournant le sous-type du type donné. Voir la documentation sur le champ |
%{ni}, %{Ni} |
la partie invariante du nom du paquet. Identiques à %n et %N, à l'exception près que tous les %type_pkg[] et %type_raw[] sont occultés. (Introduit dans une version CVS de Fink ultérieure à la version 0.19.2). Vous devez utiliser %{ni} et %{Ni} pour éviter de possibles confusions avec les raccourcis %n et %N. |
%{default_script} |
Uniquement valide dans les champs |
%{PatchFile} |
Chemin complet du fichier indiqué dans le champ |
%lib |
Si le champ Note that |