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 4d126e7. 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.
When combined with channels (voir Canaux), inferiors provide a simple
way to interact with a separate revision of Guix. For example, let’s assume
you want to install in your profile the current guile
package, along
with the guile-json
as it existed in an older revision of
Guix—perhaps because the newer guile-json
has an incompatible API
and you want to run your code against the old API. To do that, you could
write a manifest for use by guix package --manifest
(voir Écrire un manifeste); in that manifest, you would create an inferior for that old
Guix revision you care about, and you would look up the guile-json
package in the inferior:
(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]