Subject: Re: bug#42810: Guix doesn't follow all symlinks

From: Steffen Rytter Postas <[email-masked]>
Date: Wed, 16 Sep 2020 09:35:06 +0200

Hi,

ons, 16 09 2020 kl. 09:26 +0200, skrev zimoun:
> Dear,
> 
> On Wed, 16 Sep 2020 at 08:45, Steffen Rytter Postas <[email-masked]>
> wrote:
> 
> > > Well, I am not sure to understand why you want this setup since
> > > “guix-daemon” needs (really) few updates and as regular user,
> > > when
> > > doing
> > > “guix pull”, if there is major upgrade, then it will be announced
> > > with
> > > “guix pull –news”.  We all like different tastes. :-)
> > 
> > I also wanted to maintain only one copy of "guix" usable, instead
> > of
> > having one version of guix per user, which is a lot harder to
> > maintain.
> 
> But the point of Guix is: each user manages their own version, isn't
> it?
> From my point of view, it does not make sense to try to maintain only
> one central copy, because in any case, each user can run:
> 
>   guix time-machine -C <channels.scm> -- <command>
>   guix time-machine --commit=<hash> -- <command>
> 
> so each user can install, remove, etc. any version of Guix (specified
> by <channels.scm> and <hash>) independently of the version of "guix
> time-machine".
> 
> Well, I am not sure to understand the aim of the configuration you
> want to.
> 

This may well be the point of Guix, and maybe I'm' following too much
of a classical paradigm, but for me on a classical Linux desktop
system, it is much easier for me to just use _one_ version of Guix,
regardless of using it as my own user, or installing applications as
root.

I'm not sure why this should _not_ work. What is the arguments against
my use case? Is it that each user _MUST_ run `guix pull` as their own
user and _NEVER_ use the system-wide Guix with local channels?

> 
> > > So you need to have also in the correct symlinks with
> > > ’lib/{guile,guix}’
> > > and others.
> > 
> > How would I set this up? This happens on a default Guix setup
> > following
> > the standard installation guide for installing on a foreign
> > distribution, and then setting up the channel configuration as
> > mentioned.
> 
> I do not know how you could setup your non-standard usage of Guix.
> 
> Maybe you could try as root:
> 
>    sudo guix pull -p /usr
> 
> then place /usr in the correct paths (PATH, LIBRARY_PATH, etc.) for
> each user.  However, it will be easy for one user to by-pass your
> setup and use any version of Guix they wants:
> 
>    /usr/bin/guix pull -p /path/somewhere/to/user-home
> 
> then the user can correctly set up the paths so that "guix" will
> refer
> to the one living at /path/somewhere/to/user-home/.
> 
> Well, from my understanding, you are trying to set up Guix in the
> paradigm of classic package manager, not in its "philosophy".
> 

I do not mind being able to by-pass any setup I've made. This is for my
own system(s) only, but the issue happens on any non-GuixSD system
running Guix on a foreign distribution.

I am aware there may be workarounds, and currently I'm using the
workaround as specified in the bug report, but if this is _NOT_ a bug,
then I shall continue to use my workaround.

It does seem to me that this is indeed a bug, as Guix behaves
differently based upon who is executing it.

> 
> > > I have not investigated but I guess the issue you hit comes from
> > > ’lib/guix/package.cache’, correctly see by
> > > /var/guix/profiles/…/bin/guix’ but not all your other symlink
> > > machinery.
> > > 
> > 
> > This does make sense, if that is somehow only read from a non-store
> > location (I'm not sure why it would be, that seems against all the
> > point of guix in the first place).
> 
> I am not sure to understand what you mean.
> 
> 
> Do the explanations help?
> 
> All the best,
> simon
>