Suivant: , Monter: Interface de programmation   [Table des matières][Index]


9.1 Modules de paquets

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 :

  1. En ajoutant le répertoire contenant vos modules de paquets au chemin de recherche avec le tag -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.
  2. En définissant un canal et en configurant 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 :

Variable d'environnement :GUIX_PACKAGE_PATH

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.


Notes de bas de page

(19)

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.

(20)

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]