Suivant: Définition des paquets, Monter: Interface de programmation [Table des matières][Index]
D’un point de vue programmatique, les définitions de paquets de la
distribution GNU sont fournies par des modules Guile dans l’espace de noms
(gnu packages …)
19 (voir Guile modules dans GNU Guile Reference
Manual). Par exemple, le module (gnu packages emacs)
exporte une
variable nommée emacs
, qui est liée à un objet <package>
(voir Définition des paquets).
L’espace de nom (gnu packages …)
est automatiquement scanné par
les outils en ligne de commande. Par exemple, lorsque vous lancez
guix install emacs
, tous les modules (gnu packages …)
sont scannés jusqu’à en trouver un qui exporte un objet de paquet dont le
nom est emacs
. Cette capacité à chercher des paquets est implémentée
dans le module (gnu packages)
.
Les utilisateur·rice·s peuvent stocker les définitions de paquets dans des
modules ayant des noms différents—par exemple, (my-packages
emacs)
20. Il y a deux façons de rendre ces définitions de
paquets visibles pour les interfaces utilisateur·rice :
-L
de guix package
et des autres
commandes (voir Options de construction communes) ou en indiquant la variable
d’environnement GUIX_PACKAGE_PATH
décrite plus bas.
guix pull
pour
qu’il l’utilise. Un canal est en substance un dépôt Git contenant des
modules de paquets. Voir Canaux, pour plus d’informations sur comment
définir et utiliser des canaux.
GUIX_PACKAGE_PATH
fonctionne comme les autres variables de chemins de
recherche :
C’est une liste séparée par des deux-points de répertoires dans lesquels trouver des modules de paquets supplémentaires. Les répertoires listés dans cette variable sont prioritaires par rapport aux paquets de la distribution.
La distribution est entièrement bootstrappée et auto-contenue :
chaque paquet est construit uniquement à partir d’autres paquets de la
distribution. La racine de ce graphe de dépendance est un petit ensemble de
binaires de bootstrap fournis par le module (gnu packages
bootstrap)
. Pour plus d’informations sur le bootstrap,
voir Bootstrapping.
Remarquez que les paquets sous
l’espace de nom (gnu packages …)
ne sont pas nécessairement des
« paquets GNU ». Le nom de ce module suit la convention de nommage usuelle
de Guile : gnu
signifie que ces modules sont distribués dans le
système GNU, et packages
identifie les modules qui définissent les
paquets.
Remarquez que le nom du fichier et le nom du module doivent
correspondre. Par exemple, le module (my-packages emacs)
doit être
stocké dans un fichier my-packages/emacs.scm relatif au chemin de
chargement spécifié avec --load-path ou GUIX_PACKAGE_PATH
.
Voir Modules and the File System dans GNU Guile Reference Manual,
pour plus de détails.
Suivant: Définition des paquets, Monter: Interface de programmation [Table des matières][Index]