unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Stateful system directories
@ 2019-10-18  7:35 Efraim Flashner
  2019-10-18 10:05 ` Giovanni Biscuolo
                   ` (2 more replies)
  0 siblings, 3 replies; 10+ messages in thread
From: Efraim Flashner @ 2019-10-18  7:35 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

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

On Fri, Oct 18, 2019 at 05:08:20AM +0200, Ricardo Wurmus wrote:
> 
> Kei Kebreau <kkebreau@posteo.net> writes:
> 
> > Ricardo Wurmus <rekado@elephly.net> writes:
> >
> >> Kei Kebreau <kkebreau@posteo.net> writes:
> >>
<snip>
> >>
> >> Have you tried removing /var/lib/gdm and the contents of your user
> >> account’s .local/share/gnome* directories?
> >
<snip>
> 
> ~/.local/share/gnome-shell/application_state is a common problem.  It
> contains some state that different versions of GNOME seem to be choking
> on.  There are some other files like ~/.cache/gnome* that might affect
> GNOME and prevent starting after upgrades.  It’s frustrating.
> 
> /var/lib/gdm is the home directory of the gdm account, and it too can
> accumulate state.  In my opinion /var/lib/gdm should always be recreated
> on every boot.
> 

Ignoring the directories in users' home directories, /var/lib/gdm has
been a source of pain on GNOME upgrades, and we still have some problems
with /var/cache/fontconfig and I believe there is something else with
permissions if you switch between ntp and openntpd. I actually have the
following snippet in my OS-config:

;; This directory shouldn't exist
(file-system
  (device "none")
  (mount-point "/var/cache/fontconfig")
  (type "tmpfs")
  (flags '(read-only))
  (check? #f))

While we work on fixing these does it make sense to modify some of these
services to unconditionally recreate their home directories on
boot/activation?

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

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

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

* Re: Stateful system directories
  2019-10-18  7:35 Stateful system directories Efraim Flashner
@ 2019-10-18 10:05 ` Giovanni Biscuolo
  2019-10-18 11:01   ` P
  2019-10-18 17:11   ` Ricardo Wurmus
  2019-10-18 14:17 ` Ricardo Wurmus
  2019-10-19 21:08 ` Ludovic Courtès
  2 siblings, 2 replies; 10+ messages in thread
From: Giovanni Biscuolo @ 2019-10-18 10:05 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: guix-devel

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

Hi Efraim,

Efraim Flashner <efraim@flashner.co.il> writes:

[...]

> I actually have the following snippet in my OS-config:
>
> ;; This directory shouldn't exist
> (file-system
>   (device "none")
>   (mount-point "/var/cache/fontconfig")
>   (type "tmpfs")
>   (flags '(read-only))
>   (check? #f))

yes! now that I read this I see how to workaround this class of
problems, thanks! 

This snippet IMHO deserves a section in the Cookbook: would you please
like to expand this in a proper section/subsection and submit a patch?

> While we work on fixing these

we in Guix you mean? shouldn't it be fixed upstream?

obviously we should help upstream as much as possible giving them
feedback; I don't know about fontconfig, but AFAIU Gnome upstream is
well aware (do I miss something?) of the problems with "statefulness"
compromising starting critical piece of system software like GDM and
*sysadmins* having to work that around deleting "system level"
directories and *each user* deleting one or more of their
.local/<something> files

how can Guix work on fixing this if not by providing workarounds in
system or user services (when will be available) that makes it easier to
sysadmins and users to fix that problems at a different level of their
systems?

to expand my reasoning just to give a little bit of context, I give this
other example: I use Nextcloud on NixOS (still not in Guix), it turns
out that there are a couple of issues that makes practically (I mean in
a practical way) impossible (AFAIU) using Nextcloud in a stateless way,
and there is no even a workaround; details here:
https://github.com/NixOS/nixpkgs/issues/49783#issuecomment-481350460
"[...] the underlying bug is a missing distinction between configuration
and state upstream…"

AFAIU this falls in the same class of problems as the Gnome one
described in the thread you are referencing to (also fontconfig?) 

so, in my POV, one of the interesting "side effects" (or probably main
effect? :-) ) of *using* distributions like Guix System or NixOS - which
promotes stateless configuration from the packages build phase up to
services provisioning [1] - is that users will be affected by this class
of problems while others simply ignores them because they prefer to use
an imperative way to manage their systems... and upstream does not get
enough pressure from its userbase to fix this class of problems

in my case, the Nextcloud problem described above is also refraining me
from investing some resources in trying to package it for Guix (also as
a service, obviously)

> does it make sense to modify some of these services to unconditionally
> recreate their home directories on boot/activation?

IMHO yes, it makes sense; unfortunately in cases like that described
above for Nextcloud, this could have destroying effects on the service,
so we cannot workaround :-S

Thanks! Gio'

[...]


[1] differences in approach to "stateless purity" apart, but they are
secondary in this context, IMHO

-- 
Giovanni Biscuolo

Xelera IT Infrastructures

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

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

* Re: Stateful system directories
  2019-10-18 10:05 ` Giovanni Biscuolo
@ 2019-10-18 11:01   ` P
  2019-10-18 17:11   ` Ricardo Wurmus
  1 sibling, 0 replies; 10+ messages in thread
From: P @ 2019-10-18 11:01 UTC (permalink / raw)
  To: Giovanni Biscuolo; +Cc: Efraim Flashner, guix-devel@gnu.org

Sent with ProtonMail Secure Email.

‐‐‐‐‐‐‐ Original Message ‐‐‐‐‐‐‐
On Friday, October 18, 2019 10:05 AM, Giovanni Biscuolo <g@xelera.eu> wrote:

> "[...] the underlying bug is a missing distinction between configuration
> and state upstream…"

See also the numerous programs that treat ~/.config like it was also cache and state.

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

* Re: Stateful system directories
  2019-10-18  7:35 Stateful system directories Efraim Flashner
  2019-10-18 10:05 ` Giovanni Biscuolo
@ 2019-10-18 14:17 ` Ricardo Wurmus
  2019-10-19 21:08 ` Ludovic Courtès
  2 siblings, 0 replies; 10+ messages in thread
From: Ricardo Wurmus @ 2019-10-18 14:17 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: guix-devel


Efraim Flashner <efraim@flashner.co.il> writes:

> On Fri, Oct 18, 2019 at 05:08:20AM +0200, Ricardo Wurmus wrote:
>>
>> Kei Kebreau <kkebreau@posteo.net> writes:
>>
>> > Ricardo Wurmus <rekado@elephly.net> writes:
>> >
>> >> Kei Kebreau <kkebreau@posteo.net> writes:
>> >>
> <snip>
>> >>
>> >> Have you tried removing /var/lib/gdm and the contents of your user
>> >> account’s .local/share/gnome* directories?
>> >
> <snip>
>>
>> ~/.local/share/gnome-shell/application_state is a common problem.  It
>> contains some state that different versions of GNOME seem to be choking
>> on.  There are some other files like ~/.cache/gnome* that might affect
>> GNOME and prevent starting after upgrades.  It’s frustrating.
>>
>> /var/lib/gdm is the home directory of the gdm account, and it too can
>> accumulate state.  In my opinion /var/lib/gdm should always be recreated
>> on every boot.
>>
>
> Ignoring the directories in users' home directories, /var/lib/gdm has
> been a source of pain on GNOME upgrades, and we still have some problems
> with /var/cache/fontconfig and I believe there is something else with
> permissions if you switch between ntp and openntpd. I actually have the
> following snippet in my OS-config:
>
> ;; This directory shouldn't exist
> (file-system
>   (device "none")
>   (mount-point "/var/cache/fontconfig")
>   (type "tmpfs")
>   (flags '(read-only))
>   (check? #f))

Ah, neat.  A bit heavy-handed, of course, but neat :)

> While we work on fixing these does it make sense to modify some of these
> services to unconditionally recreate their home directories on
> boot/activation?

I think there’s no compelling reason to keep /var/lib/gdm state across
reboots.  When this goes wrong it’s very painful, and that’s much more
significant than any savings (e.g. in startup times) that it might bring
us.  So here’s my vote for letting the gdm service recreate its home
directory unconditionally, perhaps with a toggle to disable this
behaviour (e.g. when someone wants to use a different directory and
somehow alter GDM behaviour this way).

--
Ricardo

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

* Re: Stateful system directories
  2019-10-18 10:05 ` Giovanni Biscuolo
  2019-10-18 11:01   ` P
@ 2019-10-18 17:11   ` Ricardo Wurmus
  2019-10-19 10:11     ` Giovanni Biscuolo
  1 sibling, 1 reply; 10+ messages in thread
From: Ricardo Wurmus @ 2019-10-18 17:11 UTC (permalink / raw)
  To: Giovanni Biscuolo; +Cc: guix-devel


Giovanni Biscuolo <g@xelera.eu> writes:

> Hi Efraim,
>
> Efraim Flashner <efraim@flashner.co.il> writes:
>
> [...]
>
>> I actually have the following snippet in my OS-config:
>>
>> ;; This directory shouldn't exist
>> (file-system
>>   (device "none")
>>   (mount-point "/var/cache/fontconfig")
>>   (type "tmpfs")
>>   (flags '(read-only))
>>   (check? #f))
>
> yes! now that I read this I see how to workaround this class of
> problems, thanks! 
>
> This snippet IMHO deserves a section in the Cookbook: would you please
> like to expand this in a proper section/subsection and submit a patch?

I prefer to keep workarounds for real bugs out of the Cookbook.  For
both fontconfig and the gdm user account’s home directory we should push
a workaround very soon.

>> While we work on fixing these
>
> we in Guix you mean? shouldn't it be fixed upstream?

These problems don’t seem to happen on any distribution.  We still have
to diagnose why that is.

-- 
Ricardo

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

* Re: Stateful system directories
  2019-10-18 17:11   ` Ricardo Wurmus
@ 2019-10-19 10:11     ` Giovanni Biscuolo
  0 siblings, 0 replies; 10+ messages in thread
From: Giovanni Biscuolo @ 2019-10-19 10:11 UTC (permalink / raw)
  To: Ricardo Wurmus; +Cc: guix-devel

Ricardo Wurmus <rekado@elephly.net> writes:

[...]

> I prefer to keep workarounds for real bugs out of the Cookbook.

Even in a specific section called "Workarounds" and with a clear warning
they are just _temporary_ workarounds users could decide to use, while
waiting for upstream to fix that specific issue?

We should not cover every single workaround in the Cookbook, but IMHO
giving context (i.e. explaining the stateful nature of some system
directories giving some example to better understand) and the techniques
used are useful information for Guix System users.

...but I still don't have any useful patch to submit, so I'm just still
speculating

> For both fontconfig and the gdm user account’s home directory we
> should push a workaround very soon.

Fine, I also think we should (this should also be well documented in
comments for each service)

Anyway this thread is not specific to any particurar service or package,
or at least I interpreted it as: "how can Guix System users overcome
occasional configuration statefulness in their systems?", this is the
reason why I gave the other example of Nextcloud and how that issue is
managed in Nix (and IMHO it is far from an ideal solution)

[...]

Thanks! Gio'


-- 
Giovanni Biscuolo

Xelera IT Infrastructures

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

* Re: Stateful system directories
  2019-10-18  7:35 Stateful system directories Efraim Flashner
  2019-10-18 10:05 ` Giovanni Biscuolo
  2019-10-18 14:17 ` Ricardo Wurmus
@ 2019-10-19 21:08 ` Ludovic Courtès
  2019-10-20  9:03   ` Efraim Flashner
  2 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2019-10-19 21:08 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: guix-devel

Hello Efraim,

Efraim Flashner <efraim@flashner.co.il> skribis:

> Ignoring the directories in users' home directories, /var/lib/gdm has
> been a source of pain on GNOME upgrades, and we still have some problems
> with /var/cache/fontconfig and I believe there is something else with
> permissions if you switch between ntp and openntpd. I actually have the
> following snippet in my OS-config:
>
> ;; This directory shouldn't exist
> (file-system
>   (device "none")
>   (mount-point "/var/cache/fontconfig")
>   (type "tmpfs")
>   (flags '(read-only))
>   (check? #f))

I think that would work, or we could even make it a writable tmpfs?

(Somehow, I do have /var/cache/fontconfig, but never hard any problems
with it.  It hasn’t been written to in months, and it’s only writable by
root anyway.  Does that mean that people run into problem when they run
GUIs as root?)

> While we work on fixing these does it make sense to modify some of these
> services to unconditionally recreate their home directories on
> boot/activation?

Like /var/lib/gdm?  Maybe.  Or maybe ‘gdm-service-type’ could extend
‘file-system-service-type’ with a tmpfs for /var/lib/gdm?

I suppose that might increase startup time a bit since it’d be
rebuilding its cache every time.  Perhaps we’d also lose bits of state,
no?

Thanks,
Ludo’.

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

* Re: Stateful system directories
  2019-10-19 21:08 ` Ludovic Courtès
@ 2019-10-20  9:03   ` Efraim Flashner
  2019-10-22 13:27     ` Ludovic Courtès
  0 siblings, 1 reply; 10+ messages in thread
From: Efraim Flashner @ 2019-10-20  9:03 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

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

On Sat, Oct 19, 2019 at 11:08:57PM +0200, Ludovic Courtès wrote:
> Hello Efraim,
> 
> Efraim Flashner <efraim@flashner.co.il> skribis:
> 
> > Ignoring the directories in users' home directories, /var/lib/gdm has
> > been a source of pain on GNOME upgrades, and we still have some problems
> > with /var/cache/fontconfig and I believe there is something else with
> > permissions if you switch between ntp and openntpd. I actually have the
> > following snippet in my OS-config:
> >
> > ;; This directory shouldn't exist
> > (file-system
> >   (device "none")
> >   (mount-point "/var/cache/fontconfig")
> >   (type "tmpfs")
> >   (flags '(read-only))
> >   (check? #f))
> 
> I think that would work, or we could even make it a writable tmpfs?

I got angry with it and wanted to see if I could generate any error
messages. :) So far nothing. Of course there isn't a compelling reason
to really make it read-only if we recreate it each time, and it should
cut down on bugs for other directories.

> 
> (Somehow, I do have /var/cache/fontconfig, but never hard any problems
> with it.  It hasn’t been written to in months, and it’s only writable by
> root anyway.  Does that mean that people run into problem when they run
> GUIs as root?)

I have it too, not sure from what. I'm guessing some of the packages
which have fontconfig as an input get a dbus-something to create the
directory if it's missing.

> 
> > While we work on fixing these does it make sense to modify some of these
> > services to unconditionally recreate their home directories on
> > boot/activation?
> 
> Like /var/lib/gdm?  Maybe.  Or maybe ‘gdm-service-type’ could extend
> ‘file-system-service-type’ with a tmpfs for /var/lib/gdm?
> 

Sounds like a good idea. Would that also cause the directory to be
removed if gdm is removed? It should create a tmpfs and mount it over an
existing /var/lib/gdm, right?

> I suppose that might increase startup time a bit since it’d be
> rebuilding its cache every time.  Perhaps we’d also lose bits of state,
> no?

The increase in startup time should be negligible, and according to
rekado, who seems to run into GDM issues the most, removing /var/lib/gdm
is one of the first steps when upgrading gnome or debugging gdm issues.

> 
> Thanks,
> Ludo’.

-- 
Efraim Flashner   <efraim@flashner.co.il>   אפרים פלשנר
GPG key = A28B F40C 3E55 1372 662D  14F7 41AA E7DC CA3D 8351
Confidentiality cannot be guaranteed on emails sent or received unencrypted

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

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

* Re: Stateful system directories
  2019-10-20  9:03   ` Efraim Flashner
@ 2019-10-22 13:27     ` Ludovic Courtès
  2019-10-22 19:57       ` Jack Hill
  0 siblings, 1 reply; 10+ messages in thread
From: Ludovic Courtès @ 2019-10-22 13:27 UTC (permalink / raw)
  To: Efraim Flashner; +Cc: guix-devel

Howdy!

Efraim Flashner <efraim@flashner.co.il> skribis:

> On Sat, Oct 19, 2019 at 11:08:57PM +0200, Ludovic Courtès wrote:
>> Hello Efraim,
>> 
>> Efraim Flashner <efraim@flashner.co.il> skribis:
>> 
>> > Ignoring the directories in users' home directories, /var/lib/gdm has
>> > been a source of pain on GNOME upgrades, and we still have some problems
>> > with /var/cache/fontconfig and I believe there is something else with
>> > permissions if you switch between ntp and openntpd. I actually have the
>> > following snippet in my OS-config:
>> >
>> > ;; This directory shouldn't exist
>> > (file-system
>> >   (device "none")
>> >   (mount-point "/var/cache/fontconfig")
>> >   (type "tmpfs")
>> >   (flags '(read-only))
>> >   (check? #f))
>> 
>> I think that would work, or we could even make it a writable tmpfs?
>
> I got angry with it and wanted to see if I could generate any error
> messages. :) So far nothing. Of course there isn't a compelling reason
> to really make it read-only if we recreate it each time, and it should
> cut down on bugs for other directories.

Yup, let’s do that.

>> (Somehow, I do have /var/cache/fontconfig, but never hard any problems
>> with it.  It hasn’t been written to in months, and it’s only writable by
>> root anyway.  Does that mean that people run into problem when they run
>> GUIs as root?)
>
> I have it too, not sure from what. I'm guessing some of the packages
> which have fontconfig as an input get a dbus-something to create the
> directory if it's missing.

Heh, these dbus things doing stuff behind our back.  :-)

>> > While we work on fixing these does it make sense to modify some of these
>> > services to unconditionally recreate their home directories on
>> > boot/activation?
>> 
>> Like /var/lib/gdm?  Maybe.  Or maybe ‘gdm-service-type’ could extend
>> ‘file-system-service-type’ with a tmpfs for /var/lib/gdm?
>> 
>
> Sounds like a good idea. Would that also cause the directory to be
> removed if gdm is removed? It should create a tmpfs and mount it over an
> existing /var/lib/gdm, right?

Yes.  So the directory won’t be removed if gdm is removed, but that’s
fine, it’ll just be an empty directory sitting there.

>> I suppose that might increase startup time a bit since it’d be
>> rebuilding its cache every time.  Perhaps we’d also lose bits of state,
>> no?
>
> The increase in startup time should be negligible, and according to
> rekado, who seems to run into GDM issues the most, removing /var/lib/gdm
> is one of the first steps when upgrading gnome or debugging gdm issues.

Yeah, it’s a tradeoff, but we should try it on the bare metal to get a
feel.  There’s quite a bit of data in there that we’d be recreating at
each boot:

--8<---------------cut here---------------start------------->8---
$ sudo ls -l /var/lib/gdm/.cache
totalo 16
drwxr-xr-x  2 gdm gdm 4096 Sep 19 08:45 fontconfig
drwxr-xr-x  3 gdm gdm 4096 Apr 11  2019 ibus
drwx------  2 gdm gdm 4096 Apr  1  2019 libgweather
drwxr-xr-x 97 gdm gdm 4096 Sep 19 08:45 mesa_shader_cache
--8<---------------cut here---------------end--------------->8---

If you give it a spin, let us know how it goes!

Ludo’.

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

* Re: Stateful system directories
  2019-10-22 13:27     ` Ludovic Courtès
@ 2019-10-22 19:57       ` Jack Hill
  0 siblings, 0 replies; 10+ messages in thread
From: Jack Hill @ 2019-10-22 19:57 UTC (permalink / raw)
  To: Ludovic Courtès; +Cc: guix-devel

Today I had an occasion to create a file in gdm's home directory that 
should persist across reboots. I needed to set a dconf setting to 
prevent gdm from putting the computer to sleep. Full details on guix-help 
[0]. Unfortunately, I don't believe there is yet a way to handle these 
setting in a declarative way.

[0] https://lists.gnu.org/archive/html/help-guix/2019-10/msg00213.html

Best,
Jack

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

end of thread, other threads:[~2019-10-22 19:57 UTC | newest]

Thread overview: 10+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-10-18  7:35 Stateful system directories Efraim Flashner
2019-10-18 10:05 ` Giovanni Biscuolo
2019-10-18 11:01   ` P
2019-10-18 17:11   ` Ricardo Wurmus
2019-10-19 10:11     ` Giovanni Biscuolo
2019-10-18 14:17 ` Ricardo Wurmus
2019-10-19 21:08 ` Ludovic Courtès
2019-10-20  9:03   ` Efraim Flashner
2019-10-22 13:27     ` Ludovic Courtès
2019-10-22 19:57       ` Jack Hill

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).