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

From: Marius Bakke <[email-masked]>
Date: Wed, 07 Nov 2018 19:18:12 +0100

swedebugia <[email-masked]> writes:

> Hi
>
> Output as requested below.
>
> On 2018-11-07 17:36, Ludovic Courtès wrote:
>> Hello,
>>
>> swedebugia <[email-masked]> skribis:
>>
>>> On 2018-11-06 15:03, Ludovic Courtès wrote:
>> [...]
>>
>>>> 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”.
>>> GuixSD VM image in Qemu on parabola.
>>>
>>> sdb@komputilo ~$ guix --version
>>> guix (GNU Guix) 1f44934fb6e2cefccbecd4fa347025349fa9ff76 (v0.15)
>>>
>>> $ which shepherd
>>> /run/current-system/profile/bin/shepherd
>>>
>>> sdb@komputilo ~$ readlink -f $(which shepherd)
>>> /gnu/store/fwc1nkcc0hfyr1d9snpbvfss4pz4ycrw-shepherd-0.4.0/bin/shepherd
>> What does ‘id’ return?
> sdb@komputilo ~$ id
> uid=30011(sdb) gid=998(users) 
> groups=998(users),991(audio),992(video),999(wheel)
>
>> What about: ‘herd status | grep logind’?
>
> No output
>
> sdb@komputilo ~$ sudo herd status |grep logind
>
>> Does /run/user exist?
>
> No

If you add (elogind-service) to your system configuration, Shepherd
should work out of the box.

Alternatively, I do this on a minimal system:

--8<---------------cut here---------------start------------->8---
# Shepherd requires that this variable is set unless logind is present.
export XDG_RUNTIME_DIR="${HOME}/.local/run"

# ...and does not clean up its own socket after use.
rm -f "$XDG_RUNTIME_DIR/shepherd/socket"

# Now we can start it.
shepherd &
--8<---------------cut here---------------end--------------->8---