I’m neither a Guix user, nor a Guile user, but let’s try. I guess that guix shell guile -- guile
reproduces the behavior. So let’s use strace
to see whether something interesting happens before the warning:
guix shell guile glibc-locales strace -- strace guile --version |& grep -E "warning:.*install locale" -B6
openat(AT_FDCWD, "/run/current-system/locale/2.33/en_US.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/locale/2.33/en_US.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/locale/2.33/en_US/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/locale/2.33/en.UTF-8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/locale/2.33/en.utf8/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
openat(AT_FDCWD, "/run/current-system/locale/2.33/en/LC_IDENTIFICATION", O_RDONLY|O_CLOEXEC) = -1 ENOENT (No such file or directory)
write(2, "guile: warning: failed to instal"..., 41guile: warning: failed to install locale
In case you don’t know openat(...)
, it’s what actually opens files. Or at least tries to. In this case, the openat
call returns ENOENT
: the file does not exist.
My LANG
environment variable is en_US.UTF-8
, which explains all those tries. Either way, this shows that the locale system looks for the locales within /run/current-system
, a path that does not exist on Debian. I guess that /run/current-system/
is a Guix thing about the, well, current system configuration, but that’s not available on Debian.
However, the important part here is that my LANG
was used within the guix shell
environment. The issue vanishes as soon as we use a --pure
(or --container
) shell, as this won’t transfer the LANG
env:
$ guix shell --pure guile glibc-locales strace -- strace guile --version |& grep -E "warning:.*install locale" -B6
No output, therefore no warning. So all in all, I guess this is an issue of Guix@Debian not setting the current-system
correctly.