Packages are installed or upgraded to the latest version available in the
distribution currently available on your local machine. To update that
distribution, along with the Guix tools, you must run
the command downloads the latest Guix source code and package descriptions,
and deploys it. Source code is downloaded from a
Git repository, by default the official
GNU Guix repository, though this can be customized.
pull ensures that the code it downloads is authentic by verifying
that commits are signed by Guix developers.
guix pull downloads code from the channels
(see 频道) specified by one of the following, in this order:
guix package will use packages and package versions
from this just-retrieved copy of Guix. Not only that, but all the Guix
commands and Scheme modules will also be taken from that latest version.
guix sub-commands added by the update also become available.
Any user can update their Guix copy using
guix pull, and the
effect is limited to the user who ran
guix pull. For instance,
guix pull, this has no effect on the
version of Guix that user
alice sees, and vice versa.
The result of running
guix pull is a profile available under
~/.config/guix/current containing the latest Guix. Thus, make sure
to add it to the beginning of your search path so that you use the latest
version, and similarly for the Info manual (see 文档):
export PATH="$HOME/.config/guix/current/bin:$PATH" export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH"
The --list-generations or -l option lists past generations
guix pull, along with details about their provenance:
$ guix pull -l Generation 1 Jun 10 2018 00:18:18 guix 65956ad repository URL: https://git.savannah.gnu.org/git/guix.git branch: origin/master commit: 65956ad3526ba09e1f7a40722c96c6ef7c0936fe Generation 2 Jun 11 2018 11:02:49 guix e0cc7f6 repository URL: https://git.savannah.gnu.org/git/guix.git branch: origin/master commit: e0cc7f669bec22c37481dd03a7941c7d11a64f1d Generation 3 Jun 13 2018 23:31:07 (current) guix 844cc1c repository URL: https://git.savannah.gnu.org/git/guix.git branch: origin/master commit: 844cc1c8f394f03b404c5bb3aee086922373490c
guix describe, for other ways to
describe the current status of Guix.
~/.config/guix/current profile works exactly like the profiles
guix package (see Invoking
guix package). That is,
you can list generations, roll back to the previous generation—i.e., the
previous Guix—and so on:
$ guix pull --roll-back switched from generation 3 to 2 $ guix pull --delete-generations=1 deleting /var/guix/profiles/per-user/charlie/current-guix-1-link
You can also use
guix package (see Invoking
guix package) to
manage the profile by naming it explicitly:
$ guix package -p ~/.config/guix/current --roll-back switched from generation 3 to 2 $ guix package -p ~/.config/guix/current --delete-generations=1 deleting /var/guix/profiles/per-user/charlie/current-guix-1-link
guix pull command is usually invoked with no arguments, but it
supports the following options:
Download code for the
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.
These options are provided for convenience, but you can also specify your configuration in the ~/.config/guix/channels.scm file or using the --channels option (see below).
Read the list of channels from file instead of ~/.config/guix/channels.scm or /etc/guix/channels.scm. file must contain Scheme code that evaluates to a list of channel objects. See 频道, for more information.
Inhibit loading of the user and system channel files, ~/.config/guix/channels.scm and /etc/guix/channels.scm.
Display news written by channel authors for their users for changes made since the previous generation (see Writing Channel News). When --details is passed, additionally display new and upgraded packages.
You can view that information for previous generations with
List all the generations of ~/.config/guix/current or, if
pattern is provided, the subset of generations that match
pattern. The syntax of pattern is the same as with
package --list-generations (see Invoking
By default, this prints information about the channels used in each revision as well as the corresponding news entries. If you pass --details, it will also print the list of packages added and upgraded in each generation compared to the previous one.
Instruct --list-generations or --news to display more information about the differences between subsequent generations—see above.
Roll back to the previous generation of ~/.config/guix/current—i.e., undo the last transaction.
Switch to a particular generation defined by pattern.
pattern may be either a generation number or a number prefixed with “+” or “-”. The latter means: move forward/backward by a specified number of generations. For example, if you want to return to the latest generation after --roll-back, use --switch-generation=+1.
When pattern is omitted, delete all generations except the current one.
This command accepts the same patterns as --list-generations. When pattern is specified, delete the matching generations. When pattern specifies a duration, generations older than the specified duration match. For instance, --delete-generations=1m deletes generations that are more than one month old.
If the current generation matches, it is not deleted.
Note that deleting generations prevents rolling back to them. Consequently, this command must be used with care.
guix describe, for a way to display information about the
current generation only.
Use profile instead of ~/.config/guix/current.
Show which channel commit(s) would be used and what would be built or substituted but do not actually do it.
Allow pulling older or unrelated revisions of channels than those currently in use.
guix pull protects against so-called “downgrade
attacks” whereby the Git repository of a channel would be reset to an
earlier or unrelated revision of itself, potentially leading you to install
older, known-vulnerable versions of software packages.
注: Make sure you understand its security implications before using --allow-downgrades.
Allow pulling channel code without authenticating it.
guix pull authenticates code downloaded from channels
by verifying that its commits are signed by authorized developers, and
raises an error if this is not the case. This option instructs it to not
perform any such verification.
注: Make sure you understand its security implications before using --disable-authentication.
Attempt to build for system—e.g.,
i686-linux—instead of the
system type of the build host.
Use the bootstrap Guile to build the latest Guix. This option is only useful to Guix developers.
The channel mechanism allows you to instruct
guix pull which
repository and branch to pull from, as well as additional
repositories containing package modules that should be deployed.
See 频道, for more information.
guix pull supports all the common build options