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

From: Steffen Rytter Postas <[email-masked]>
Date: Tue, 11 Aug 2020 15:54:36 +0200

Hi,

Some background first, to better understand the issue:
I've been running Guix on a foreign distribution
with my own channel in ~/.config/guix/channels.scm for some time now. 
However this means having to deal with doing both a `guix pull` as
 a user, but also `guix pull` as superuser to keep the system
builder daemon etc up to date.
I wanted to avoid this, by using simply a system-wide guix install, and
not have my own user have a guix variant. I tried simply deleting
~/.config/guix/current symlink, and confirmed that `guix` was now using
the `/usr/local/bin/guix` symlink.
Then I moved my ~/.config/guix/channels.scm file to
/etc/guix/channels.scm
and satisfied with my setup, performed `sudo guix pull --fallback` to
pull the latest changes and verify it worked.
The command ran as expected, and printed the new packages from my
channel that were now available.

So, that's the background of what I've been trying to do. Here's what
happened:

I have in my own channel a package called `entr-git`. Installing it is
simple:

`guix show entr-git`

Expected result:

name: entr-git
version: 4.5-0.6b13a97
outputs: out
systems: x86_64-linux i686-linux
dependencies: [email-masked]
location: gnu/packages/entr-git.scm:25:2
homepage: http://entrproject.org/
license: ISC
synopsis: Run arbitrary commands when files change  
description: entr is a zero-configuration tool with no external build
or run-time dependencies.  The interface to entr is not only minimal,
it aims to be simple enough to create a new
+ category of ad hoc automation.  These micro-tests reduce keystrokes,
but more importantly they emphasize the utility of automated checks.

Actual result:

guix show: error: entr-git: package not found

Additional information:

`type guix`:
/usr/local/bin/guix

`readlink /usr/local/bin/guix`
/var/guix/profiles/per-user/root/current-guix/bin/guix

`/usr/local/bin/guix show entr-git`
guix show: error: entr-git: package not found

`/var/guix/profiles/per-user/root/current-guix/bin/guix show entr-git`
name: entr-git
version: 4.5-0.6b13a97
outputs: out
systems: x86_64-linux i686-linux
dependencies: [email-masked]
location: gnu/packages/entr-git.scm:25:2
homepage: http://entrproject.org/
license: ISC
synopsis: Run arbitrary commands when files change  
description: entr is a zero-configuration tool with no external build
or run-time dependencies.  The interface to entr is not only minimal,
it aims to be simple enough to create a new
+ category of ad hoc automation.  These micro-tests reduce keystrokes,
but more importantly they emphasize the utility of automated checks.

Simplest reproduction of issue:

* Ubuntu 20.04 AMD64 Desktop/Server system.
* Install Guix using guix-install.sh script.
* As a user, ensure absence of ~/.config/guix/current symlink.
* As a user, run `guix pull --fallback`
* As a user, run `guix describe`.
* As a user, run `sudo guix describe`.
* As root, run `guix describe`.

Workaround:

Use `/var/guix/profiles/per-user/root/current-guix/bin/guix` "directly"
(despite this also being a symlink).

I hope this is enough relevant information, otherwise it appears very
straight forward to reproduce.

Sincerely,
Steffen Rytter Postas