Suivant: Inférieurs, Précédent: Invoquer guix pull
, Monter: Gestion de paquets [Table des matières][Index]
guix time-machine
La commande guix time-machine
donne accès à d’autres révisions de
Guix, par exemple pour installer d’anciennes versions de paquets, ou pour
reproduire un calcul dans un environnement identique. La révision de Guix à
utiliser est définie par un commit ou par un fichier de description de canal
créé par guix describe
(voir Invoquer guix describe
).
Supposons que vous vouliez voyager en ces jours de novembre 2020 où la
version 1.2.0 de Guix a été publiée et que, une fois que vous y êtes, vous
lanciez le guile
de cette époque :
guix time-machine --commit=v1.2.0 -- \ environment -C --ad-hoc guile -- guile
La commande ci-dessus récupère Guix 1.2.0 et lance sa commande
guix environment
pour démarrer un environnement dans un conteneur
qui lance guile
(guix environment
a depuis été remplacé
par guix shell
; voir Invoquer guix shell
). C’est comme
conduire une DeLorean12 ! La première invocation de
guix time-machine
peut être coûteuse. Elle doit télécharger voire
construire un grand nombre de paquets. Heureusement le résultat est mis en
cache et les commandes suivantes qui ciblent le même commit sont presque
instantanées.
Remarque : L’histoire de Guix est immuable et
guix time-machine
fournit exactement les mêmes logiciels que ceux de la révision de Guix spécifique. Naturellement, aucun correctif de sécurité n’est fournit pour les anciennes versions de Guix ou ses canaux. Utiliserguix time-machine
sans précaution ouvre la porte à des vulnérabilités de sécurité. Voir --allow-downgrades.
La syntaxe générale est :
guix time-machine options… -- commande arg…
où command et arg… sont passés sans modification à la
commande guix
de la révision spécifiée. Les options qui
définissent cette révision sont les mêmes que pour la commande guix
pull
(voir Invoquer guix pull
) :
--url=url
--commit=commit
--branch=branche
Utiliser le canal guix
depuis l’url spécifiée, au commit
donné (un commit Git valide représenté par une chaîne hexadécimale ou le nom
d’une étiquette) ou à la branche branch.
--channels=file
-C file
Lit la liste des canaux dans file. file doit contenir un code Scheme qui s’évalue en une liste d’objets de canaux. Voir Canaux pour plus d’informations.
Quant à guix pull
, l’absence d’options signifie que le dernier
commit sur la branche master sera utilisé. La commande
guix time-machine -- build hello
va donc construire le paquet hello
tel que défini dans la branche
master, qui est en général une révision de Guix plus récente que celle que
vous avez installée. Le voyage dans le temps fonctionne dans les deux sens
!
Remarquez que guix time-machine
peut lancer des constructions de
canaux et de leurs dépendances, et qu’elles peuvent être contrôlées avec les
options de construction communes (voir Options de construction communes).
Si vous ne savez pas ce qu’est une DeLorean, envisagez un voyage vers les années 1980.
Suivant: Inférieurs, Précédent: Invoquer guix pull
, Monter: Gestion de paquets [Table des matières][Index]