Subject: bug#33260: [Shepherd] ERROR: In procedure stat: No such file or directory: "/run/user/30011/shepherd

From: [email-masked] (Ludovic Courtès)
Date: Tue, 06 Nov 2018 15:03:41 +0100

Hello,

swedebugia <[email-masked]> skribis:

> In a VM with GuixSD I did:
>
> $ shepherd
> Backtrace:
>            3 (primitive-load "/run/current-system/profile/bin/shephe…")
> In shepherd.scm:
>     164:9  2 (main . _)
> In shepherd/support.scm:
>    396:20  1 (verify-dir _ #:secure? _)
> In unknown file:
>            0 (stat "/run/user/30011/shepherd" #<undefined>)
>
> ERROR: In procedure stat:
> In procedure stat: No such file or directory: "/run/user/30011/shepherd"

Danny Milosavljevic <[email-masked]> skribis:

> this is a known problem in GuixSD (not in shepherd) and I don't think anyone fixed
> it yet, because it requires some design (and is kinda harder than ignoring the
> problem and letting the user choose - see below).
>
> There is only rudimentary support for distinguishing sessions from users in GuixSD
> (I guess nowadays everyone is using a computer of their own and people don't
> remember huge shared computers which you would dial into multiple times from
> different sites (not necessarily after hanging up the previous connection) -
> I work with the latter daily so I do remember).
>
> Shepherd assumes to be run per user (for non-root), not per session.
> For the vast majority of tasks-to-be-automated, that is what you want.
>
> But who starts the per-user shepherd?

I do!  I run ‘shepherd’ as non-root on GuixSD, and I don’t have the
above file-not-found issue.  On GuixSD, /run/user/UID is created as
expected, and I suspect it’s the same on most other GNU/Linux distros
these days.

swedebugia, what distribution are you using?  On GuixSD, 30011 is a UID
that would be allocated to one of the build users, which cannot “log in”.

Thanks,
Ludo’.