all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
* ~/.config/guix/current
@ 2018-07-03 15:05 Mikhail Kryshen
  2018-07-09 11:53 ` ~/.config/guix/current Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Mikhail Kryshen @ 2018-07-03 15:05 UTC (permalink / raw)
  To: help-guix

[-- Attachment #1: Type: text/plain, Size: 1248 bytes --]

Hi,

Is there some reason why "guix pull" keeps profile symlinks in
~/.config/guix instead of under /var/guix/profiles?

I'm looking into installing Guix on multiple computers with shared user
accounts and /home on NFS.  So far the possibilities seem to be:

a) master node running guix-daemon [1]
   - will "guix gc" destroy guix/current profiles if /home is not
   mounted on the master node?  What if some users have local
   home directories and some are on nfs?
   
b) guix-daemon on every computer
   - then /gnu/store and /var/guix/profiles will by local and user
   profiles can be different on every computer, but
   ~/.config/guix/current will link to nonexistent store item if
   "guix pull" was invoked by the same user on a different machine.

Can/should this be fixed?

Another question is why ~/.config/guix/current/etc/profile does not
define all necessary environment variables (PATH is there, but no
INFOPATH, GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH)?  It would be
convenient to source it in .bash_profile the same way as normal
guix-profile instead of defining all necessary variables explicitly.

[1] https://guix-hpc.bordeaux.inria.fr/blog/2017/11/installing-guix-on-a-cluster/

-- 
Mikhail

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: ~/.config/guix/current
  2018-07-03 15:05 ~/.config/guix/current Mikhail Kryshen
@ 2018-07-09 11:53 ` Ludovic Courtès
  2018-07-11 15:46   ` ~/.config/guix/current Mikhail Kryshen
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2018-07-09 11:53 UTC (permalink / raw)
  To: Mikhail Kryshen; +Cc: help-guix

Hello Mikhail,

Mikhail Kryshen <mikhail@kryshen.net> skribis:

> Is there some reason why "guix pull" keeps profile symlinks in
> ~/.config/guix instead of under /var/guix/profiles?

It’s mostly because it takes less code to do it this way.  :-)
This was briefly discussed during the submission of this patch series.

> I'm looking into installing Guix on multiple computers with shared user
> accounts and /home on NFS.  So far the possibilities seem to be:
>
> a) master node running guix-daemon [1]
>    - will "guix gc" destroy guix/current profiles if /home is not
>    mounted on the master node?  What if some users have local
>    home directories and some are on nfs?

> [1] https://guix-hpc.bordeaux.inria.fr/blog/2017/11/installing-guix-on-a-cluster/

This is what I would recommend, and as the post suggests, you’ll have to
make sure home directories are visible to guix-daemon, which means
having them mounted on the master node.

If you don’t do that, there’s a risk that user-pulled Guixes will be
reclaimed prematurely, simply because the GC won’t see that they are
still “live.”

Writing the profile to /var/guix/profiles would indeed solve this
specific issue.

> b) guix-daemon on every computer
>    - then /gnu/store and /var/guix/profiles will by local and user
>    profiles can be different on every computer, but
>    ~/.config/guix/current will link to nonexistent store item if
>    "guix pull" was invoked by the same user on a different machine.

If this is a cluster, I would definitely recommend option a), which
provides a single world view, shared storage, etc.

Option b) causes all the issues you mention, and this is not specific to
the new ‘guix pull’ (you had similar issues with ~/.config/guix/latest
before, for instance.)

> Can/should this be fixed?

We can do it.  In fact my take on this was to keep it simple for now,
and to adjust if/when someone reports a need for this—which I think you
just did.  :-)

> Another question is why ~/.config/guix/current/etc/profile does not
> define all necessary environment variables (PATH is there, but no
> INFOPATH, GUILE_LOAD_PATH and GUILE_LOAD_COMPILED_PATH)?  It would be
> convenient to source it in .bash_profile the same way as normal
> guix-profile instead of defining all necessary variables explicitly.

The reason it doesn’t define INFOPATH for example is because INFOPATH
“belongs” to Texinfo, and Texinfo is not in that profile; similarly for
GUILE_LOAD_PATH.

I agree it would be useful (the way we do it on GuixSD is by having
/etc/profile define INFOPATH systematically, for instance), but there’s
no clear way to have ~/.config/guix/current/etc/profile define them
directly.

Thanks for your feedback,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: ~/.config/guix/current
  2018-07-09 11:53 ` ~/.config/guix/current Ludovic Courtès
@ 2018-07-11 15:46   ` Mikhail Kryshen
  2018-07-12  8:26     ` ~/.config/guix/current Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Mikhail Kryshen @ 2018-07-11 15:46 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

[-- Attachment #1: Type: text/plain, Size: 2726 bytes --]

Ludovic Courtès <ludovic.courtes@inria.fr> writes:

>> a) master node running guix-daemon [1]
>>    - will "guix gc" destroy guix/current profiles if /home is not
>>    mounted on the master node?  What if some users have local
>>    home directories and some are on nfs?
>
>> [1] https://guix-hpc.bordeaux.inria.fr/blog/2017/11/installing-guix-on-a-cluster/
>
> This is what I would recommend, and as the post suggests, you’ll have to
> make sure home directories are visible to guix-daemon, which means
> having them mounted on the master node.
>
> If you don’t do that, there’s a risk that user-pulled Guixes will be
> reclaimed prematurely, simply because the GC won’t see that they are
> still “live.”

But ~root is local on each machine, so root-pulled Guix will still not
be protected from gc.

Btw, is option a) possible on GuixSD?


>> b) guix-daemon on every computer
>>    - then /gnu/store and /var/guix/profiles will by local and user
>>    profiles can be different on every computer, but
>>    ~/.config/guix/current will link to nonexistent store item if
>>    "guix pull" was invoked by the same user on a different machine.
>
> If this is a cluster, I would definitely recommend option a), which
> provides a single world view, shared storage, etc.

It's for GNU/Linux workstations in university labs.  I want to use Guix
to provide additional software that is not available in required
configuration in the host distro, and also give students an interesting
environment to experiment.

I decided for now to go with the option b) for performance and
reliability.  My previous attempts to deploy large software packages on
NFS (even with FS-Cache enabled) didn't work well.  Also, it may be
possible to somehow exploit immutability of the store items to share and
cache them more efficiently.

The computers periodically run "guix pull" as root and I want to make
the updated Guix automatically available to all users, but
/usr/local/bin/guix can't be linked to
/root/.config/guix/current/bin/guix as the /root directory is normally
not searchable by other users — another reason to keep pulled Guix
profiles in /var.  I workaround this by having the script that runs
"guix pull" to symlink /usr/local/bin/guix directly into the new profile
in /gnu/store.


> I agree it would be useful (the way we do it on GuixSD is by having
> /etc/profile define INFOPATH systematically, for instance), but there’s
> no clear way to have ~/.config/guix/current/etc/profile define them
> directly.

It would be useful to have a similar script included in the guix package
to be symlinked into host distro's /etc/profile.d

Thank you, 
Mikhail

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: ~/.config/guix/current
  2018-07-11 15:46   ` ~/.config/guix/current Mikhail Kryshen
@ 2018-07-12  8:26     ` Ludovic Courtès
  2018-07-13 13:07       ` ~/.config/guix/current Mikhail Kryshen
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2018-07-12  8:26 UTC (permalink / raw)
  To: Mikhail Kryshen; +Cc: help-guix

Hello Mikhail,

Mikhail Kryshen <mikhail@kryshen.net> skribis:

> Ludovic Courtès <ludovic.courtes@inria.fr> writes:
>
>>> a) master node running guix-daemon [1]
>>>    - will "guix gc" destroy guix/current profiles if /home is not
>>>    mounted on the master node?  What if some users have local
>>>    home directories and some are on nfs?
>>
>>> [1] https://guix-hpc.bordeaux.inria.fr/blog/2017/11/installing-guix-on-a-cluster/
>>
>> This is what I would recommend, and as the post suggests, you’ll have to
>> make sure home directories are visible to guix-daemon, which means
>> having them mounted on the master node.
>>
>> If you don’t do that, there’s a risk that user-pulled Guixes will be
>> reclaimed prematurely, simply because the GC won’t see that they are
>> still “live.”
>
> But ~root is local on each machine, so root-pulled Guix will still not
> be protected from gc.

True, but in this configuration, only the root account of the master
node really matters, and it’s protected from GC.

> Btw, is option a) possible on GuixSD?

I think so.  Why wouldn’t it?

>>> b) guix-daemon on every computer
>>>    - then /gnu/store and /var/guix/profiles will by local and user
>>>    profiles can be different on every computer, but
>>>    ~/.config/guix/current will link to nonexistent store item if
>>>    "guix pull" was invoked by the same user on a different machine.
>>
>> If this is a cluster, I would definitely recommend option a), which
>> provides a single world view, shared storage, etc.
>
> It's for GNU/Linux workstations in university labs.  I want to use Guix
> to provide additional software that is not available in required
> configuration in the host distro, and also give students an interesting
> environment to experiment.
>
> I decided for now to go with the option b) for performance and
> reliability.  My previous attempts to deploy large software packages on
> NFS (even with FS-Cache enabled) didn't work well.  Also, it may be
> possible to somehow exploit immutability of the store items to share and
> cache them more efficiently.

Yes, we use option a) on a cluster at Inria (and Roel and Ricardo have a
similar setup at their institutes), and it works pretty well.

From a performance viewpoint, it’s important for the master node to have
the store on a local file system, so that things like GC and
deduplication run quickly enough—these would be slow over NFS.  For the
compute nodes, accessing packages over NFS is good enough.

> The computers periodically run "guix pull" as root and I want to make
> the updated Guix automatically available to all users, but
> /usr/local/bin/guix can't be linked to
> /root/.config/guix/current/bin/guix as the /root directory is normally
> not searchable by other users — another reason to keep pulled Guix
> profiles in /var.  I workaround this by having the script that runs
> "guix pull" to symlink /usr/local/bin/guix directly into the new profile
> in /gnu/store.

I see.  I’ll look into treating ~/.config/guix/current similarly to
~/.guix-profile.  That would help for a setup like yours.

>> I agree it would be useful (the way we do it on GuixSD is by having
>> /etc/profile define INFOPATH systematically, for instance), but there’s
>> no clear way to have ~/.config/guix/current/etc/profile define them
>> directly.
>
> It would be useful to have a similar script included in the guix package
> to be symlinked into host distro's /etc/profile.d

We could do that, though it wouldn’t help much: you’d have to add one
line to /etc/profile instead of adding two lines, essentially.

Thanks,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: ~/.config/guix/current
  2018-07-12  8:26     ` ~/.config/guix/current Ludovic Courtès
@ 2018-07-13 13:07       ` Mikhail Kryshen
  2018-07-13 14:42         ` ~/.config/guix/current Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Mikhail Kryshen @ 2018-07-13 13:07 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

[-- Attachment #1: Type: text/plain, Size: 773 bytes --]

Ludovic Courtès <ludovic.courtes@inria.fr> writes:

>> Btw, is option a) possible on GuixSD?
>
> I think so.  Why wouldn’t it?

It looks like /gnu/store is needed early to boot the system.

Can you hint on how to configure GuixSD with /gnu/store on NFS?

> Yes, we use option a) on a cluster at Inria (and Roel and Ricardo have a
> similar setup at their institutes), and it works pretty well.
>
> From a performance viewpoint, it’s important for the master node to have
> the store on a local file system, so that things like GC and
> deduplication run quickly enough—these would be slow over NFS.  For the
> compute nodes, accessing packages over NFS is good enough.

Thanks!  I think I'll try to experiment with a) a bit first.

-- 
Mikhail

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: ~/.config/guix/current
  2018-07-13 13:07       ` ~/.config/guix/current Mikhail Kryshen
@ 2018-07-13 14:42         ` Ludovic Courtès
  2018-07-13 16:51           ` Store on NFS (was Re: ~/.config/guix/current) Mikhail Kryshen
  0 siblings, 1 reply; 8+ messages in thread
From: Ludovic Courtès @ 2018-07-13 14:42 UTC (permalink / raw)
  To: Mikhail Kryshen; +Cc: help-guix

Mikhail Kryshen <mikhail@kryshen.net> skribis:

> Ludovic Courtès <ludovic.courtes@inria.fr> writes:
>
>>> Btw, is option a) possible on GuixSD?
>>
>> I think so.  Why wouldn’t it?
>
> It looks like /gnu/store is needed early to boot the system.

Oh right, I thought you were referring to the configuration of the
master node.

The compute nodes would need to be able to mount /gnu/store early at
boot over NFS, and I think that’s doesn’t work right now on GuixSD.
I’m not sure exactly what’s missing.

Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Store on NFS (was Re: ~/.config/guix/current)
  2018-07-13 14:42         ` ~/.config/guix/current Ludovic Courtès
@ 2018-07-13 16:51           ` Mikhail Kryshen
  2018-07-16  7:49             ` Ludovic Courtès
  0 siblings, 1 reply; 8+ messages in thread
From: Mikhail Kryshen @ 2018-07-13 16:51 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: help-guix

[-- Attachment #1: Type: text/plain, Size: 828 bytes --]

Ludovic Courtès <ludovic.courtes@inria.fr> writes:

> Oh right, I thought you were referring to the configuration of the
> master node.

Concerning the master node, is there a way to specify NFS exports in
GuixSD OS configuration?

> The compute nodes would need to be able to mount /gnu/store early at
> boot over NFS, and I think that’s doesn’t work right now on GuixSD.
> I’m not sure exactly what’s missing.

I see in grub.cfg, that the kernel and initrd are loaded from the store,
so it must be available to the bootloader.  Would it be possible to
combine local and remote stores after boot with overlayfs and ensure
that all necessary items are written to the local store at "system
reconfigure" (maybe have a local guix daemon manage the local store for
"system reconfigure")?

-- 
Mikhail

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

^ permalink raw reply	[flat|nested] 8+ messages in thread

* Re: Store on NFS (was Re: ~/.config/guix/current)
  2018-07-13 16:51           ` Store on NFS (was Re: ~/.config/guix/current) Mikhail Kryshen
@ 2018-07-16  7:49             ` Ludovic Courtès
  0 siblings, 0 replies; 8+ messages in thread
From: Ludovic Courtès @ 2018-07-16  7:49 UTC (permalink / raw)
  To: Mikhail Kryshen; +Cc: help-guix

Mikhail Kryshen <mikhail@kryshen.net> skribis:

> Ludovic Courtès <ludovic.courtes@inria.fr> writes:
>
>> Oh right, I thought you were referring to the configuration of the
>> master node.
>
> Concerning the master node, is there a way to specify NFS exports in
> GuixSD OS configuration?

You’d have to extend ‘etc-service-type’ to provide a /etc/exports file,
along these lines:

  (simple-service 'etc-exports etc-service-type
                  `(("exports" ,(plain-file "exports" "…"))))

>> The compute nodes would need to be able to mount /gnu/store early at
>> boot over NFS, and I think that’s doesn’t work right now on GuixSD.
>> I’m not sure exactly what’s missing.
>
> I see in grub.cfg, that the kernel and initrd are loaded from the store,
> so it must be available to the bootloader.  Would it be possible to
> combine local and remote stores after boot with overlayfs and ensure
> that all necessary items are written to the local store at "system
> reconfigure" (maybe have a local guix daemon manage the local store for
> "system reconfigure")?

Yes, that sounds like a reasonable option.

You can probably add to the ‘file-systems’ field a declaration of the
overlayfs and mark it with (needed-for-boot? #f).  We need to experiment
with this!

HTH,
Ludo’.

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2018-07-16  7:49 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-07-03 15:05 ~/.config/guix/current Mikhail Kryshen
2018-07-09 11:53 ` ~/.config/guix/current Ludovic Courtès
2018-07-11 15:46   ` ~/.config/guix/current Mikhail Kryshen
2018-07-12  8:26     ` ~/.config/guix/current Ludovic Courtès
2018-07-13 13:07       ` ~/.config/guix/current Mikhail Kryshen
2018-07-13 14:42         ` ~/.config/guix/current Ludovic Courtès
2018-07-13 16:51           ` Store on NFS (was Re: ~/.config/guix/current) Mikhail Kryshen
2018-07-16  7:49             ` Ludovic Courtès

Code repositories for project(s) associated with this external index

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

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.