help-guix
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

What exactly guix pull does and why is there a seperate profile at ~/.co


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
User-agent: NeoMutt/20180716

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



reply via email to

[Prev in Thread] Current Thread [Next in Thread]