Re: Root guix dereferencing
Thorsten Wilms writes: >> If you are using Ubuntu, you don't need to use that command though, but >> you need your systemd's guix-daemon to point to a recent guix. It could >> be either the one updated by root's 'guix pull', or the one updated by >> your current user's 'guix pull'. I chose the latter because I want to >> run 'guix pull' only once. > > You mean edit /etc/systemd/guix-daemin.service and change > "/var/guix/profiles/per-user/root/guix-profile/bin/guix-daemon"? Well... The problem with the default one is that it's not updated by 'guix pull', rather it's updated when root's guix package[1] is updated (that is: less often). It's not a big deal though, because 'guix-daemon' is very stable, rarely changed. (Actually, there is no difference at the moment, because I believe 'guix pull' uses the daemon of the guix package. But there might be a difference in the future.) tldr: you don't need to change your guix-daemon :/ > If so, to what, as there's no guix-daemon in > /var/guix/profiles/per-user/root/guix-profile/bin/. To /home//.config/guix/current/bin/guix-daemon or /root/.config/guix/current/bin/guix-daemon, depending on whether you want to use your user's Guix-daemon or root's Guix-daemon. But your current situation is fine :) > Is the whole reason to have /usr/local/bin/guix to make guix available for > root without modifying root's PATH? The reason is to make the 'guix' command available to every user, because /usr/local/bin is supposedly in every user's PATH. You don't need it anymore if all your users already have their own 'guix' command. > Things are a bit clearer now, thanks, Clément. This stuff is pretty complicated anyway. You're welcome :-) Clément [1]: https://git.savannah.gnu.org/cgit/guix.git/tree/gnu/packages/package-management.scm#n100
Re: Root guix dereferencing
On 19/11/2018 16.06, Clément Lassieur wrote: If you check ~root/.config/guix/current/bin/guix, you'll see that it's updated when you run 'guix pull' as root. If you want that guix to be used for your 'root' user, you just need to make sure ~root/.config/guix/current/bin/ is first in root's $PATH. I could bet last time I checked, there was not "current", only "latest", below ~root/.config/guix, but indeed, there's a recently changed ~root/.config/guix/current/bin/guix. If you are using Ubuntu, you don't need to use that command though, but you need your systemd's guix-daemon to point to a recent guix. It could be either the one updated by root's 'guix pull', or the one updated by your current user's 'guix pull'. I chose the latter because I want to run 'guix pull' only once. You mean edit /etc/systemd/guix-daemin.service and change "/var/guix/profiles/per-user/root/guix-profile/bin/guix-daemon"? If so, to what, as there's no guix-daemon in /var/guix/profiles/per-user/root/guix-profile/bin/. Is the whole reason to have /usr/local/bin/guix to make guix available for root without modifying root's PATH? Things are a bit clearer now, thanks, Clément. -- Thorsten Wilms thorwil's design for free software: http://thorwil.wordpress.com/
Re: Root guix dereferencing
Thorsten Wilms writes: > On 19/11/2018 15.07, Clément Lassieur wrote: >> It doesn't need to contain 'sudo' and 'root', because 'root' is just a >> user, so everything works the same way. > > $: which guix > /home/thorwil/.config/guix/current/bin/guix > > $: sudo which guix > /usr/local/bin/guix > > $ sudo -E which guix > /usr/local/bin/guix > > $: sudo -i > root@charly:~# which guix > /root/.guix-profile/bin/guix > > I wouldn't describe that as working the same way, especially since only the > symlinks for the plain user are being updated. If you check ~root/.config/guix/current/bin/guix, you'll see that it's updated when you run 'guix pull' as root. If you want that guix to be used for your 'root' user, you just need to make sure ~root/.config/guix/current/bin/ is first in root's $PATH. You can substitute 'root' with whatever else in the above statement. 'sudo', however, is more tricky to use. I only use it for 'guix system reconfigure' because it requires root's privileges. 'sudo -E guix system reconfigure config.scm' would for example use my own environment variables, thus my own guix, with root's privileges. If you are using Ubuntu, you don't need to use that command though, but you need your systemd's guix-daemon to point to a recent guix. It could be either the one updated by root's 'guix pull', or the one updated by your current user's 'guix pull'. I chose the latter because I want to run 'guix pull' only once. Does it make more sense? Clément
Re: Root guix dereferencing
On 19/11/2018 15.07, Clément Lassieur wrote: It doesn't need to contain 'sudo' and 'root', because 'root' is just a user, so everything works the same way. $: which guix /home/thorwil/.config/guix/current/bin/guix $: sudo which guix /usr/local/bin/guix $ sudo -E which guix /usr/local/bin/guix $: sudo -i root@charly:~# which guix /root/.guix-profile/bin/guix I wouldn't describe that as working the same way, especially since only the symlinks for the plain user are being updated. -- Thorsten Wilms thorwil's design for free software: http://thorwil.wordpress.com/
Re: Root guix dereferencing
Thorsten Wilms writes: > On 19/11/2018 11.20, Clément Lassieur wrote: > >> This is because the result of running guix pull is a profile available >> under ~/.config/guix/current containing the latest Guix[1]. >> >> So you may need to make sure it is at the beginning of your search path. > > Thanks, but the plain user `guix pull` works fine and ~/.config/guix/current > is up-to-date. In case it's not clear, '~' refers to root's home as well. 'root' is just a user. You don't even have to use it at all. (I personally never use it.) >> [1]: >> https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pull.html > > I note that this page doesn't contain "sudo" at all and "root" only once, in > "For instance, when user root runs guix pull, this has no effect on the > version of Guix that user alice sees, and vice versa.". It doesn't need to contain 'sudo' and 'root', because 'root' is just a user, so everything works the same way. Clément
Re: Root guix dereferencing
On 19/11/2018 11.20, Clément Lassieur wrote: This is because the result of running guix pull is a profile available under ~/.config/guix/current containing the latest Guix[1]. So you may need to make sure it is at the beginning of your search path. Thanks, but the plain user `guix pull` works fine and ~/.config/guix/current is up-to-date. [1]: https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pull.html I note that this page doesn't contain "sudo" at all and "root" only once, in "For instance, when user root runs guix pull, this has no effect on the version of Guix that user alice sees, and vice versa.". Thorsten Wilms writes: I tried all of these, each time with --commit=0a41123f01d5d2466d6f533be3644ac8c9a2bdf9: sudo guix pull sudo -i guix pull sudo -E guix pull None of these changed what /usr/local/bin/guix and/or /root/.guix-profile/bin/guix are pointing to. I mixed -i and -E up, it was of course sudo -E guix pull sudo -i guix pull That is, first attempt with -E, same as --preserve-env, then sudo -i to log into root before `guix pull`. -- Thorsten Wilms thorwil's design for free software: http://thorwil.wordpress.com/
Re: Root guix dereferencing
Hi Thorsten, This is because the result of running guix pull is a profile available under ~/.config/guix/current containing the latest Guix[1]. So you may need to make sure it is at the beginning of your search path. [1]: https://www.gnu.org/software/guix/manual/en/html_node/Invoking-guix-pull.html Thorsten Wilms writes: > On 19/11/2018 00.06, Leo Famulari wrote: >> Can you help us by clarifying exactly what is wrong? >> >> In general, using sudo without either the --preserve-env or --login >> options is not recommended, because it won't do what you want in any >> case where environment variables are involved. > > /usr/local/bin/guix and /root/.guix-profile/bin/guix keep pointing to the > original guix installation. > > I tried all of these, each time with > --commit=0a41123f01d5d2466d6f533be3644ac8c9a2bdf9: > > sudo guix pull > sudo -i guix pull > sudo -E > guix pull > > None of these changed what /usr/local/bin/guix and/or > /root/.guix-profile/bin/guix are pointing to.
Re: Root guix dereferencing
On 19/11/2018 00.06, Leo Famulari wrote: Can you help us by clarifying exactly what is wrong? In general, using sudo without either the --preserve-env or --login options is not recommended, because it won't do what you want in any case where environment variables are involved. /usr/local/bin/guix and /root/.guix-profile/bin/guix keep pointing to the original guix installation. I tried all of these, each time with --commit=0a41123f01d5d2466d6f533be3644ac8c9a2bdf9: sudo guix pull sudo -i guix pull sudo -E guix pull None of these changed what /usr/local/bin/guix and/or /root/.guix-profile/bin/guix are pointing to. -- Thorsten Wilms thorwil's design for free software: http://thorwil.wordpress.com/
Re: Root guix dereferencing
On Sat, Nov 17, 2018 at 12:17:58PM +0100, Thorsten Wilms wrote: > How may I fix my installation? Can you help us by clarifying exactly what is wrong? In general, using sudo without either the --preserve-env or --login options is not recommended, because it won't do what you want in any case where environment variables are involved. signature.asc Description: PGP signature
Root guix dereferencing
Hi! It took me embarrassingly long to understand that I have been updating guix for the root profile numerous times without `sudo guix ...` ever pointing to the latest version. This is on Ubuntu 18.04, so there's not a full root account. The state of things, bash output reduced to the relevant parts: ~: sudo ls -l /root/.guix-profile /root/.guix-profile -> /var/guix/profiles/per-user/root/guix-profile ~: ls -l /var/guix/profiles/per-user/root/guix-profile /var/guix/profiles/per-user/root/guix-profile -> guix-profile-3-link ~: ls -l /var/guix/profiles/per-user/root/guix-profile-3-link /var/guix/profiles/per-user/root/guix-profile-3-link -> /gnu/store/9gnbk30krxri2rnslpy9pjqrn0dgpzz9-profile ~: stat /gnu/store/9gnbk30krxri2rnslpy9pjqrn0dgpzz9-profile Change: 2018-09-13 19:23:18.128577196 +0200 2018-09-13 seems to be the date of installation. The last `sudo guix pull` happened yesterday. ~: sudo which guix /usr/local/bin/guix ~: ls -l /usr/local/bin/guix /usr/local/bin/guix -> /var/guix/profiles/per-user/root/guix-profile/bin/guix ~: ls -l /var/guix/profiles/per-user/root/guix-profile/bin/guix /var/guix/profiles/per-user/root/guix-profile/bin/guix -> /gnu/store/xdgjm8slg17gvwqnask6y4fzz7shkf1p-guix-0.15.0-2.8bbb79c/bin/guix ~: stat /gnu/store/xdgjm8slg17gvwqnask6y4fzz7shkf1p-guix-0.15.0-2.8bbb79c/bin/guix Change: 2018-09-13 19:23:15.888610656 +0200 ~: sudo env | grep GUIX ~: sudo env | grep PATH PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin Puzzling to me: things are quite different after `sudo -i`: root@charly:~# which guix /root/.guix-profile/bin/guix root@charly:~# ls -l /root/.guix-profile/bin/guix /gnu/store/xdgjm8slg17gvwqnask6y4fzz7shkf1p-guix-0.15.0-2.8bbb79c/bin/guix root@charly:~# stat /gnu/store/xdgjm8slg17gvwqnask6y4fzz7shkf1p-guix-0.15.0-2.8bbb79c/bin/guix Change: 2018-09-13 19:23:15.888610656 +0200 root@charly:~# env|grep GUIX GUIX_LOCPATH=/root/.guix-profile/lib/locale root@charly:~# env|grep PATH GUIX_LOCPATH=/root/.guix-profile/lib/locale PATH=/root/.guix-profile/bin:/root/.guix-profile/sbin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin How may I fix my installation? -- Thorsten Wilms thorwil's design for free software: http://thorwil.wordpress.com/