From mboxrd@z Thu Jan 1 00:00:00 1970 From: Doron Behar Subject: What exactly guix pull does and why is there a seperate profile at ~/.config/guix/current ? Date: Mon, 13 May 2019 22:02:01 +0300 Message-ID: <20190513190201.2koyiyoa7zzdcqy6@NUC.doronbehar.com> Mime-Version: 1.0 Content-Type: text/plain; charset=utf-8 Return-path: Received: from eggs.gnu.org ([209.51.188.92]:33194) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1hQGDb-0000MT-Dc for help-guix@gnu.org; Mon, 13 May 2019 15:02:36 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1hQGDa-0005Wi-42 for help-guix@gnu.org; Mon, 13 May 2019 15:02:35 -0400 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]:40062) by eggs.gnu.org with esmtps (TLS1.0:RSA_AES_128_CBC_SHA1:16) (Exim 4.71) (envelope-from ) id 1hQGDZ-0005Vn-TR for help-guix@gnu.org; Mon, 13 May 2019 15:02:34 -0400 Received: by mail-wm1-x330.google.com with SMTP id h11so395462wmb.5 for ; Mon, 13 May 2019 12:02:33 -0700 (PDT) Received: from localhost (bzq-79-180-236-30.red.bezeqint.net. [79.180.236.30]) by smtp.gmail.com with ESMTPSA id c130sm492160wmf.47.2019.05.13.12.02.30 for (version=TLS1_2 cipher=ECDHE-RSA-CHACHA20-POLY1305 bits=256/256); Mon, 13 May 2019 12:02:30 -0700 (PDT) Content-Disposition: inline List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: help-guix-bounces+gcggh-help-guix=m.gmane.org@gnu.org Sender: "Help-Guix" To: help-guix@gnu.org Hey all, I'm using Arch Linux and I'd like to get my hands dirty with Guix as an alternative (but better) package manager. Unfortunately, I'm very confused as for the role of `guix pull` and `guix package -u` and the 'current guix profile' symlinked to ~/.config/guix/current . In 'traditional` package managers, there's the concept of a "repository" which seems to correspond to all the scheme code written in gnu/packages/*.scm under the Guix Git repository. Usually, the repositories (or more precisely, the package definitions) are managed separately from the source code of the package manager itself, and very reasonably IMO. Since the source code to retrieve packages / reading definitions and building them shouldn't be linked to changes such as packages added or updated in the repositories. According to the documentation, `guix pull` 'updates the distribution along with the Guix tools'. Does it mean that every time something is updated in the actual source code of the remote Guix repository, when I run `guix pull` afterwards my computer builds `guix` and `guix-daemon` from the ground up? Does it actually run `./configure && make && make check` behind the scenes on the source files? If so, that's insanely CPU wasteful and definitely unnecessary. This wouldn't have been that bad if Guile would have had a compiler cache like C and some other languages have (see [ccache][1] and [sccache][2]). Additionally, I'm not sure I understand the relation between `guix pull` and `guix package -u`. Let's say I'm running `guix pull` and some packages have been updated / added. Do I have to use the guix binary in ~/.config/guix/current/bin/ in order to install them? Speaking of which, what is the purpose of this profile anyway? Why doesn't `guix pull` just updates a database of all package definitions and then suggests to run `guix package -u` to do all the rest - including updating `guix` it self in the default profile **if needed**? One more unclear thing for me: If I run `guix pull`, I always get the message that I should add ~/.config/guix/current/bin/ to my $PATH so I'd use the latest `guix`. Does it mean that with using `guix` from ~/.guix-profile/bin I don't really get any updates? I hope the design decisions of the way things work now are genius as the rest of the ecosystem and that I've failed to see that. Anyway, above all, I'm not sure as for what `etc/profile` files to `source` so my $PATH and other environmental variables will always be up to date with the current state.. Thanks for any help, Doron. [1]: https://ccache.samba.org [2]: https://github.com/mozilla/sccache