From 75e24d7b0e19ab2164aecb340e82d07d2b9714e7 Mon Sep 17 00:00:00 2001 From: Ludovic Courtès Date: Wed, 30 May 2018 17:50:21 +0200 Subject: pull: Install the new Guix in a profile. * guix/scripts/pull.scm (%pull-version): New variable. (build-from-source): Pass #:pull-version to BUILD. (whole-package-for-legacy, derivation->manifest-entry): New procedure. (build-and-install): Rewrite in terms of 'build-and-use-profile'. * guix/scripts/system.scm (maybe-suggest-running-guix-pull)[latest]: Switch to "/current". * scripts/guix.in (augment-load-paths!): Remove use of ~/.config/guix/latest. * build-aux/compile-as-derivation.scm: Replace "/guix/latest/" with "/current/share/guile/site/X.Y" * guix/scripts.scm (warn-about-old-distro)[age]: Check "/current" instead of "/latest". * doc/guix.texi (Invoking guix pull): Document it. * doc/contributing.texi (Running Guix Before It Is Installed): Remove footnote about abusing ~/.config/guix/latest. --- doc/guix.texi | 38 +++++++++++++++++++++++++++++++++----- 1 file changed, 33 insertions(+), 5 deletions(-) (limited to 'doc/guix.texi') diff --git a/doc/guix.texi b/doc/guix.texi index 6ed4799dfc..13b42f59f3 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2743,11 +2743,39 @@ Any user can update their Guix copy using @command{guix pull}, and the effect is limited to the user who run @command{guix pull}. For instance, when user @code{root} runs @command{guix pull}, this has no effect on the version of Guix that user @code{alice} sees, and vice -versa@footnote{Under the hood, @command{guix pull} updates the -@file{~/.config/guix/latest} symbolic link to point to the latest Guix, -and the @command{guix} command loads code from there. Currently, the -only way to roll back an invocation of @command{guix pull} is to -manually update this symlink to point to the previous Guix.}. +versa. + +The result of running @command{guix pull} is a @dfn{profile} available +under @file{~/.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 +(@pxref{Documentation}): + +@example +export PATH="$HOME/.config/guix/current/bin:$PATH" +export INFOPATH="$HOME/.config/guix/current/share/info:$INFOPATH" +@end example + +This @code{~/.config/guix/current} profile works like any other profile +created by @command{guix package} (@pxref{Invoking guix package}). That +is, you can list generations, roll back to the previous +generation---i.e., the previous Guix---and so on: + +@example +$ guix package -p ~/.config/guix/current -l +Generation 1 May 25 2018 10:06:41 + guix 221951a out /gnu/store/i4dfk7vw5k112s49jrhl6hwsfnh6wr7l-guix-221951af4 + +Generation 2 May 27 2018 19:07:47 + + guix 2fbae00 out /gnu/store/44cv9hyvxg34xf5kblf5dz57hc52y4bm-guix-2fbae006f + - guix 221951a out /gnu/store/i4dfk7vw5k112s49jrhl6hwsfnh6wr7l-guix-221951af4 + +Generation 3 May 30 2018 16:11:39 (current) + + guix a076f19 out /gnu/store/332czkicwwg6lc3x4aqbw5q2mq12s7fj-guix-a076f1990 + - guix 2fbae00 out /gnu/store/44cv9hyvxg34xf5kblf5dz57hc52y4bm-guix-2fbae006f +$ guix package -p ~/.config/guix/current --roll-back +switched from generation 3 to 2 +@end example The @command{guix pull} command is usually invoked with no arguments, but it supports the following options: -- cgit 1.4.1