Suivant: Invoquer guix describe
, Précédent: Invoquer guix time-machine
, Monter: Gestion de paquets [Table des matières][Index]
Remarque : La fonctionnalité décrite ici est un « démonstrateur technique » à la version 1.4.0. Ainsi, l’interface est sujette à changements.
Parfois vous pourriez avoir à mélanger des paquets de votre révision de Guix avec des paquets disponibles dans une révision différente de Guix. Les inférieurs de Guix vous permettent d’accomplir cette tâche en composant différentes versions de Guix de manière arbitraire.
Techniquement, un « inférieur » est surtout un processus Guix séparé
connecté à votre processus Guix principal à travers un REPL (voir Invoquer guix repl
). Le module (guix inferior)
vous permet de créer des
inférieurs et de communiquer avec eux. Il fournit aussi une interface de
haut-niveau pour naviguer dans les paquets d’un inférieur — des paquets
inférieurs — et les manipuler.
Lorsqu’on les combine avec des canaux (voir Canaux), les inférieurs
fournissent une manière simple d’interagir avec un révision de Guix
séparée. Par exemple, disons que vous souhaitiez installer dans votre
profil le paquet guile actuel, avec le guile-json
d’une ancienne
révision de Guix — peut-être parce que la nouvelle version de
guile-json
a une API incompatible et que vous voulez lancer du code
avec l’ancienne API. Pour cela, vous pourriez écrire un manifeste à
utiliser avec guix package --manifest
(voir Écrire un manifeste) ;
dans ce manifeste, vous créeriez un inférieur pour l’ancienne révision de
Guix qui vous intéresse et vous chercheriez le paquet guile-json
dans
l’inférieur :
(use-modules (guix inferior) (guix channels) (srfi srfi-1)) ;pour « first » (define channels ;; L'ancienne révision depuis laquelle on veut ;; extraire guile-json. (list (channel (name 'guix) (url "https://git.savannah.gnu.org/git/guix.git") (commit "65956ad3526ba09e1f7a40722c96c6ef7c0936fe")))) (define inferior ;; Un inférieur représentant la révision ci-dessus. (inferior-for-channels channels)) ;; Maintenant on crée un manifeste avec le paquet « guile » actuel ;; et l'ancien paquet « guile-json ». (packages->manifest (list (first (lookup-inferior-packages inferior "guile-json")) (specification->package "guile")))
Durant la première exécution, guix package --manifest
pourrait
avoir besoin de construire le canal que vous avez spécifié avant de créer
l’inférieur ; les exécutions suivantes seront bien plus rapides parce que la
révision de Guix sera déjà en cache.
Le module (guix inferior)
fournit les procédures suivantes pour
ouvrir un inférieur :
Renvoie un inférieur pour channels, une liste de canaux. Elle utilise le cache dans cache-directory, où les entrées peuvent être glanées après ttl secondes. Cette procédure ouvre une nouvelle connexion au démon de construction.
Elle a pour effet de bord de construire ou de substituer des binaires pour channels, ce qui peut prendre du temps.
Ouvre le Guix inférieur dans directory et lance
directory/command repl
ou équivalent. Renvoie #f
si l’inférieur n’a pas pu être lancé.
Les procédures listées plus bas vous permettent d’obtenir et de manipuler des paquets inférieurs.
Renvoie la liste des paquets connus de l’inférieur inferior.
Renvoie la liste triée des paquets inférieurs qui correspondent à name dans inferior, avec le plus haut numéro de version en premier. Si version est vrai, renvoie seulement les paquets avec un numéro de version préfixé par version.
Renvoie vrai si obj est un paquet inférieur.
Ces procédures sont la contrepartie des accesseurs des enregistrements de
paquets (voir Référence de package
). La plupart fonctionne en effectuant
des requêtes à l’inférieur dont provient package, donc l’inférieur
doit toujours être disponible lorsque vous appelez ces procédures.
Les paquets inférieurs peuvent être utilisés de manière transparente comme
tout autre paquet ou objet simili-fichier dans des G-expressions
(voir G-Expressions). Ils sont aussi gérés de manière transparente par
la procédure packages->manifest
, qui est typiquement utilisée dans
des manifestes (voir l’option --manifest
de guix package
). Ainsi, vous pouvez insérer un paquet inférieur
à peu près n’importe où vous utiliseriez un paquet normal : dans des
manifestes, dans le champ packages
de votre déclaration
operating-system
, etc.
Suivant: Invoquer guix describe
, Précédent: Invoquer guix time-machine
, Monter: Gestion de paquets [Table des matières][Index]