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.
As for guix pull
, in the absence of any options,
time-machine
fetches the latest commits of the channels specified
in ~/.config/guix/channels.scm, /etc/guix/channels.scm, or the
default channels; the -q option lets you ignore these configuration
files. The command:
guix time-machine -q -- build hello
will thus build the package hello
as defined in the main branch of
Guix, without any additional channel, which is in general a newer revision
of Guix than you have installed. Time travel works in both directions!
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.
guix time-machine
raises an error when attempting to travel to
commits older than “v0.16.0” (commit ‘4a0b87f0’), dated Dec. 2018.
This is one of the oldest commits supporting the channel mechanism that
makes “time travel” possible.
Remarque : Although it should technically be possible to travel to such an old commit, the ease to do so will largely depend on the availability of binary substitutes. When traveling to a distant past, some packages may not easily build from source anymore. One such example are old versions of OpenSSL whose tests would fail after a certain date. This particular problem can be worked around by running a virtual build machine with its clock set to the right time (voir Virtual Build Machines).
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.
--no-channel-files
-q
Inhibit loading of the user and system channel files, ~/.config/guix/channels.scm and /etc/guix/channels.scm.
Thus, guix time-machine -q
is equivalent to the following Bash
command, using the “process substitution” syntax (voir Process
Substitution dans The GNU Bash Reference Manual):
guix time-machine -C <(echo %default-channels) …
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).
If guix time-machine
is executed without any command, it prints
the file name of the profile that would be used to execute the command.
This is sometimes useful if you need to get store file name of the
profile—e.g., when you want to guix copy
it.
Si vous ne savez pas ce qu’est une DeLorean, envisagez un voyage vers les années 1980. (Retour vers le futur (1985))
Suivant: Inférieurs, Précédent: Invoquer guix pull
, Monter: Gestion de paquets [Table des matières][Index]