GNU bug report logs -
#66339
Gnome-team dbus socket in /var/run/dbus, not /run/dbus
Previous Next
Full log
View this message in rfc822 format
Am Mittwoch, dem 04.10.2023 um 12:47 +0200 schrieb Vivien Kraus:
> According to
> https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3101, glib
> now searches for the session bus socket in runstatedir. The dbus
> service must thus have its socket in /run/dbus.
>
> For interoperability with the dbus standard, /run/dbus is also
> symlinked to /var/run/dbus.
>
> * gnu/services/dbus.scm (dbus-activation): Symlink /run/dbus to
> /var/run/dbus.
> (%dbus-accounts): Run dbus in /run/dbus.
> (dbus-root-service-type): Save the pid file in /run/dbus.
> ---
>
> Le mercredi 04 octobre 2023 à 20:30 +0200, Liliana Marie Prikler a
> écrit :
> > Am Mittwoch, dem 04.10.2023 um 12:47 +0200 schrieb Vivien Kraus:
> > > * gnu/services/dbus.scm (dbus-activation): Symlink /var/run/dbus
> > > to
> > > /run/dbus.
> > > ---
> > > gnu/services/dbus.scm | 1 +
> > > 1 file changed, 1 insertion(+)
> > >
> > > diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
> > > index 5a0c634393..80968ac1a4 100644
> > > --- a/gnu/services/dbus.scm
> > > +++ b/gnu/services/dbus.scm
> > > @@ -187,6 +187,7 @@ (define (dbus-activation config)
> > > ;; This directory contains the daemon's socket so it
> > > must
> > > be
> > > ;; world-readable.
> > > (mkdir-p/perms "/var/run/dbus" user #o755))
> > > + (symlink "/var/run/dbus" "/run/dbus")
> > From [1]:
> > > As documented in the NEWS file in
> > > https://gitlab.freedesktop.org/dbus/dbus/-/merge_requests/209,
> > > it’s only valid to use /run – rather than /var/run – for D-Bus if
> > > the two paths are interoperable. i.e. /var/run should be a
> > > symlink to /run, and the D-Bus daemon should be configured to put
> > > its socket there.
> >
> > Thus, the order of the two ought to be reversed. Alternatively, we
> > could add '-Druntime_dir=/var/run' to glib. WDYT?
> >
> > [1]: https://gitlab.gnome.org/GNOME/glib/-/merge_requests/3101
>
> Thank you for finding this information. I think we should follow
> glib, and have the socket in /run/dbus, with the symlink for standard
> interoperability.
>
> I’m still concerned about doing a symlink in the activation function.
> What if we activate a new system from an existing one? Won’t the
> symlink fail? I think we should preemptively delete /var/run/dbus and
> make a new symlink every time. But I could be wrong, maybe this is
> not needed.
>
> What do you think?
If we go this route, I think we should first check whether
/var/run/dbus is indeed a symlink to /run/dbus and move the existing
files if not before deleting the directory and creating the symlink.
But before that, we should try to symlink, which will fail with EEXIST
if the file already exists, regardless of whether it's a symlink –
thereafter you can check the cause of this failure through lstat.
> Best regards,
>
> Vivien
>
> gnu/services/dbus.scm | 10 +++++++---
> 1 file changed, 7 insertions(+), 3 deletions(-)
>
> diff --git a/gnu/services/dbus.scm b/gnu/services/dbus.scm
> index 5a0c634393..53efa7adea 100644
> --- a/gnu/services/dbus.scm
> +++ b/gnu/services/dbus.scm
> @@ -163,7 +163,7 @@ (define %dbus-accounts
> (group "messagebus")
> (system? #t)
> (comment "D-Bus system bus user")
> - (home-directory "/var/run/dbus")
> + (home-directory "/run/dbus")
> (shell (file-append shadow "/sbin/nologin")))))
>
> (define dbus-setuid-programs
> @@ -186,7 +186,11 @@ (define (dbus-activation config)
> (let ((user (getpwnam "messagebus")))
> ;; This directory contains the daemon's socket so it must
> be
> ;; world-readable.
> - (mkdir-p/perms "/var/run/dbus" user #o755))
> + (mkdir-p/perms "/run/dbus" user #o755))
> +
> + (when (file-exists? "/var/run/dbus")
> + (delete-file "/var/run/dbus"))
This assumes "/var/run/dbus" to be a regular file or symlink, which
it's not on reconfiguration IIUC.
> + (symlink "/run/dbus" "/var/run/dbus")
>
> (unless (file-exists? "/etc/machine-id")
> (format #t "creating /etc/machine-id...~%")
> @@ -210,7 +214,7 @@ (define dbus-shepherd-service
> '(#:environment-variables
> '("DBUS_VERBOSE=1")
> #:log-file "/var/log/dbus-
> daemon.log")
> '())
> - #:pid-file "/var/run/dbus/pid"))
> + #:pid-file "/run/dbus/pid"))
> (stop #~(make-kill-destructor)))))))
>
> (define dbus-root-service-type
>
> base-commit: b18b2d13488f2a92331ccad2dc8cbb54ee15582f
Cheers
This bug report was last modified 1 year and 284 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.