guix time-machine command provides access to other revisions
of Guix, for example to install older versions of packages, or to reproduce
a computation in an identical environment. The revision of Guix to be used
is defined by a commit or by a channel description file created by
guix describe (see 调用guix describe).
Let’s assume that you want to travel to those days of November 2020 when
version 1.2.0 of Guix was released and, once you’re there, run the
guile of that time:
guix time-machine --commit=v1.2.0 -- \ environment -C --ad-hoc guile -- guile
The command above fetches Guix 1.2.0 and runs its
environment command to spawn an environment in a container running
guix environment has since been subsumed by
guix shell; see Invoking guix shell). It’s like driving a
DeLorean12! The first
guix time-machine invocation can
be expensive: it may have to download or even build a large number of
packages; the result is cached though and subsequent commands targeting the
same commit are almost instantaneous.
注: The history of Guix is immutable and
guix time-machineprovides the exact same software as they are in a specific Guix revision. Naturally, no security fixes are provided for old versions of Guix or its channels. A careless use of
guix time-machineopens the door to security vulnerabilities. See --allow-downgrades.
The general syntax is:
guix time-machine options… -- command arg…
where command and arg… are passed unmodified to the
guix command of the specified revision. The options that
define this revision are the same as for
(see 调用guix pull):
guix channel from the specified url, at the given
commit (a valid Git commit ID represented as a hexadecimal string or
the name of a tag), or branch.
Read the list of channels from file. file must contain Scheme code that evaluates to a list of channel objects. See 通道 for more information.
guix pull, the absence of any options means that the latest
commit on the master branch will be used. The command
guix time-machine -- build hello
will thus build the package
hello as defined in the master branch,
which is in general a newer revision of Guix than you have installed. Time
travel works in both directions!
guix time-machine can trigger builds of channels and
their dependencies, and these are controlled by the standard build options
If you don’t know what a DeLorean is, consider traveling back to the 1980’s.