Suivant: , Précédent: , Monter: Gestion de paquets   [Table des matières][Index]


6.7 Invoquer 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. Utiliser guix 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

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).


Notes de bas de page

(12)

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]