unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Andrew Tropin <andrew@trop.in>
To: Jan Nieuwenhuizen <janneke@gnu.org>, 50945@debbugs.gnu.org
Subject: bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed"
Date: Thu, 07 Oct 2021 08:21:24 +0300	[thread overview]
Message-ID: <871r4xwgtn.fsf@trop.in> (raw)
In-Reply-To: <87y27czr0v.fsf@gnu.org>


[-- Attachment #1.1: Type: text/plain, Size: 4908 bytes --]

On 2021-10-01 17:46, Jan Nieuwenhuizen wrote:

> Hi,
>
> When using su or sudo to enter an account managed by guix home, I get
> this error
>
> --8<---------------cut here---------------start------------->8---
> Backtrace:
>            2 (primitive-load "/home/guix/.guix-home/on-first-login")
> In ice-9/ports.scm:
>    461:11  1 (call-with-output-file "/run/user/1003/on-first-login-…" …)
> In unknown file:
>            0 (open-file "/run/user/1003/on-first-login-executed" "w" …)
>
> ERROR: In procedure open-file:
> In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed"
> --8<---------------cut here---------------end--------------->8---
>
> Upon a console login or ssh login, /var/run/1003 is created and all is fine.
>
> See below for the scenario, home-minimal.scm is attached.
>
> Greetings,
> Janneke
>
>
> $ ssh guix@localhost -p 2222
> guix@localhost's password: 
> Last login: Tue Jun 23 11:45:08 2020 from 2001:980:1b4f:1:216:d3ff:fe29:7cdb
> guix@dundal ~$ guix home reconfigure home-minimal.scm
> /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home
> Cleaning up symlinks from previous home-environment.
>
> Skipping /home/guix/.config/fontconfig (not an empty directory)... done
> Skipping /home/guix/.config (not an empty directory)... done
> Cleanup finished.
>
> New symlinks to home-environment will be created soon.
> All conflicting files will go to /home/guix/1633101995-guix-home-legacy-configs-backup.
>
> Skipping   /home/guix/.config (directory already exists)... done
> Creating   /home/guix/.config/fontconfig... done
> Symlinking /home/guix/.config/fontconfig/fonts.conf -> /gnu/store/phj2z2iiqdhryfy7mqral0b9qz3hlva6-fonts.conf... done
> Symlinking /home/guix/.config/test.conf -> /gnu/store/bdixb09v30bvhpgi2f6ndiq25wzb9l74-tmp-file.txt... done
> Symlinking /home/guix/.bash_profile -> /gnu/store/j3vhlswj46psxicapnq8c9p1jrwd55rk-bash_profile... done
> Symlinking /home/guix/.profile -> /gnu/store/fxbppk3pqzdi3zzy0xl5vg1ir6c5jzq5-shell-profile... done
> Symlinking /home/guix/.bashrc -> /gnu/store/513j2xkszmcmv7fiawh59mr0i1fmin55-bashrc... done
>  done
> Finished updating symlinks.
>
> Comparing /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home/profile/share/fonts and
>           /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home/profile/share/fonts... done (same)
> Evaling on-change gexps.
>
> On-change gexps evaluation finished.
>
> guix@dundal ~$ guix home list-generations
> ]8;;file://dundal/var/guix/profiles/per-user/guix/guix-home-1-link\Generation 1	Oct 01 2021 12:19:16]8;;\	(current)
>   file name: /var/guix/profiles/per-user/guix/guix-home-1-link
>   canonical file name: /gnu/store/fgxpmf1iwjp9f8dfyaf7wxqa8105lq3w-home
>   channels:
>     guix:
>       repository URL: https://git.savannah.gnu.org/git/guix.git
>       branch: master
>       commit: ]8;;https://git.savannah.gnu.org/cgit/guix.git/commit/?id=56b10709efc4eb35df66f52a20ce3cb7fab4fee6\56b10709efc4eb35df66f52a20ce3cb7fab4fee6]8;;\
>   configuration file: ]8;;file://dundal/gnu/store/kjha5z8mck0pa9jrgx2266rq1lvlb3ji-configuration.scm\/gnu/store/kjha5z8mck0pa9jrgx2266rq1lvlb3ji-configuration.scm]8;;\
> guix@dundal ~$ logout
> Connection to localhost closed.
> 17:26:49 janneke@dundal:~
> $ sudo -i -u guix
> Password: 
> Backtrace:
>            2 (primitive-load "/home/guix/.guix-home/on-first-login")
> In ice-9/ports.scm:
>    461:11  1 (call-with-output-file "/run/user/1003/on-first-login-…" …)
> In unknown file:
>            0 (open-file "/run/user/1003/on-first-login-executed" "w" …)
>
> ERROR: In procedure open-file:
> In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed"
> guix@dundal ~$ ls -ltrF /run/user
> total 0
> drwx------  7 gdm     gdm     160 Oct  1 12:16 971/
> drwx------ 13 janneke janneke 260 Oct  1 13:07 1000/
> guix@dundal ~$ logout
> 17:29:34 janneke@dundal:~
> $ su - guix
> Password: 
> Backtrace:
>            2 (primitive-load "/home/guix/.guix-home/on-first-login")
> In ice-9/ports.scm:
>    461:11  1 (call-with-output-file "/run/user/1003/on-first-login-…" …)
> In unknown file:
>            0 (open-file "/run/user/1003/on-first-login-executed" "w" …)
>
> ERROR: In procedure open-file:
> In procedure open-file: No such file or directory: "/run/user/1003/on-first-login-executed"
> 17:37:33 janneke@dundal:~
> $ ssh guix@localhost -p 2222
> guix@localhost's password: 
> Last login: Fri Oct  1 17:23:35 2021 from 127.0.0.1
> guix@dundal ~$ 

Thank you for a very detailed report.

pam_elogind doesn't create a session, when the login shell spawned by
sudo or su => XDG_RUNTIME_DIR not get created => this message appears.

I think we can omit execution of any processes by on-first-login script
in case session wasn't created.  Added the check:


[-- Warning: decoded text below may be mangled, UTF-8 assumed --]
[-- Attachment #1.2: 0001-home-services-on-first-login-Check-if-XDG_RUNTIME_DI.patch --]
[-- Type: text/x-patch, Size: 1397 bytes --]

From aab6df0298963fe91a6ebfd1dadbc1530eceeff7 Mon Sep 17 00:00:00 2001
From: Andrew Tropin <andrew@trop.in>
Date: Thu, 7 Oct 2021 08:12:04 +0300
Subject: [PATCH] home-services: on-first-login: Check if XDG_RUNTIME_DIR
 exists.

* gnu/home-services.scm (on-first-login): on-first-login won't execute
anything if XDG_RUNTIME_DIR doesn't exists.
---
 gnu/home-services.scm | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/gnu/home-services.scm b/gnu/home-services.scm
index 9f1e986616..0b77a1321d 100644
--- a/gnu/home-services.scm
+++ b/gnu/home-services.scm
@@ -286,8 +286,11 @@ will be put in @file{~/.guix-home/files}.")))
        ;; XDG_RUNTIME_DIR dissapears on logout, that means such trick
        ;; allows to launch on-first-login script on first login only
        ;; after complete logout/reboot.
-       (when (not (file-exists? flag-file-path))
-         (begin #$@gexps (touch flag-file-path))))))
+       (if (file-exists? xdg-runtime-dir)
+           (when (not (file-exists? flag-file-path))
+             (begin #$@gexps (touch flag-file-path)))
+           (display "XDG_RUNTIME_DIR doesn't exists, the session wasn't
+created, on-first-login script won't execute anything.")))))
 
 (define (on-first-login-script-entry m-on-first-login)
   "Return, as a monadic value, an entry for the on-first-login script
-- 
2.33.0


[-- Attachment #1.3: Type: text/plain, Size: 37 bytes --]


-- 
Best regards,
Andrew Tropin

[-- Attachment #2: signature.asc --]
[-- Type: application/pgp-signature, Size: 832 bytes --]

  parent reply	other threads:[~2021-10-07  5:22 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-01 15:46 bug#50945: Guix home: No such file or directory: "/run/user/1003/on-first-login-executed" Jan Nieuwenhuizen
2021-10-01 17:05 ` Xinglu Chen
2021-10-07  5:21 ` Andrew Tropin [this message]
2021-11-05 16:58   ` Xinglu Chen
2021-11-08  9:24     ` Andrew Tropin
2021-11-14 22:11       ` Ludovic Courtès

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=871r4xwgtn.fsf@trop.in \
    --to=andrew@trop.in \
    --cc=50945@debbugs.gnu.org \
    --cc=janneke@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).