Next: Invoking guix time-machine, Previous: Invoking guix gc, Up: Package Management [Contents][Index]
guix pullPackages 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 guix
pull: 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. guix
pull ensures that the code it downloads is authentic by
verifying that commits are signed by Guix developers.
Specifically, guix pull downloads code from the channels
(see Channels) specified by one of the followings, in this order:
%default-channels
variable.
On completion, 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. New 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, when user root runs 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 Documentation):
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
produced by 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
2 new packages: keepalived, libnfnetlink
6 packages upgraded: emacs-nix-mode@2.0.4,
guile2.0-guix@0.14.0-12.77a1aac, guix@0.14.0-12.77a1aac,
heimdal@7.5.0, milkytracker@1.02.00, nix@2.0.4
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
28 new packages: emacs-helm-ls-git, emacs-helm-mu, …
69 packages upgraded: borg@1.1.6, cheese@3.28.0, …
See guix describe, for other ways to
describe the current status of Guix.
This ~/.config/guix/current profile works exactly like the profiles
created by 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
The guix pull command is usually invoked with no arguments,
but it supports the following options:
--url=url--commit=commit--branch=branchDownload code for the guix channel from the specified url, at the
given commit (a valid Git commit ID represented as a hexadecimal
string), 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).
--channels=file-C fileRead 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 Channels, for more information.
--news-NDisplay the list of packages added or upgraded since the previous generation, as well as, occasionally, news written by channel authors for their users (see Writing Channel News).
The package information is the same as displayed upon guix
pull completion, but without ellipses; it is also similar to the output
of guix pull -l for the last generation (see below).
--list-generations[=pattern]-l [pattern]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 guix package
--list-generations (see Invoking guix package).
--roll-backRoll back to the previous generation of ~/.config/guix/current—i.e., undo the last transaction.
--switch-generation=pattern-S patternSwitch 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.
--delete-generations[=pattern]-d [pattern]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.
See Invoking guix describe, for a way to display information about the current generation only.
--profile=profile-p profileUse profile instead of ~/.config/guix/current.
--dry-run-nShow which channel commit(s) would be used and what would be built or substituted but do not actually do it.
--allow-downgradesAllow pulling older or unrelated revisions of channels than those currently in use.
By default, 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.
Note: Make sure you understand its security implications before using --allow-downgrades.
--disable-authenticationAllow pulling channel code without authenticating it.
By default, 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.
Note: Make sure you understand its security implications before using --disable-authentication.
--system=system-s systemAttempt to build for system—e.g., i686-linux—instead of
the system type of the build host.
--bootstrapUse 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 Channels, for more
information.
In addition, guix pull supports all the common build options
(see Common Build Options).
Next: Invoking guix time-machine, Previous: Invoking guix gc, Up: Package Management [Contents][Index]