doc: Upgrading Guix: Add instructions for distro packages.

This makes sure that, prior to the upgrade commands, the guix-daemon is run
from /var/guix/profiles/per-user/root/current-guix/bin/guix-daemon instead of
/usr/bin/guix-daemon.

* doc/guix.texi (Upgrading Guix): Add instructions for distro packages.

Change-Id: I71df3603cffc5d20b6a77241b0c384872b54ec83
Signed-off-by: Maxim Cournoyer <maxim@guixotic.coop>
This commit is contained in:
Denis 'GNUtoo' Carikli 2025-06-29 21:55:11 +02:00 committed by Maxim Cournoyer
parent 96b0d77231
commit d5cf3b5def
No known key found for this signature in database
GPG key ID: 1260E46482E63562

View file

@ -2123,6 +2123,67 @@ tool):
systemctl restart guix-daemon.service
@end example
While this works for @file{guix-install.sh}, it will most likely not
work if you installed Guix through the package manager of another
distribution (for instance with sudo apt install guix, pacman -S guix,
etc) because on many distributions @file{guix-daemon.service} will only
run the Guix daemon provided by the distribution.
Waiting for your distribution to provide security fixes sometimes work,
but fixing security issues in the Guix package takes times for
distributions because Guix doesn't backport the security fixes to the
releases used by the distributions. On some distribution versions, the
Guix package is never fixed.
However since Guix updates also comes with a new daemon, so you can
simply configure your distribution to use the guix-daemon provided by
Guix instead. The following will assume that your distribution uses
systemd.
You first need to override @file{guix-daemon.service} with the following
command:
@example
sudo install -m 644 \
/lib/systemd/system/guix-daemon.service \
/etc/systemd/system/guix-daemon.service
@end example
You will then need to edit @file{/etc/systemd/system/guix-daemon.service}. To do
that open this file with a text editor that has root permissions:
@example
sudo $EDITOR /etc/systemd/system/guix-daemon.service
@end example
Then try to find a line with @emph{ExecStart=}, it should look a bit
like that:
@example
...
[Service]
ExecStart=/usr/bin/guix-daemon --build-users-group=_guixbuild
...
@end example
Then change @emph{/usr/bin/guix-daemon} into
@emph{/var/guix/profiles/per-user/root/current-guix/bin/guix-daemon} and
save the changes.
Once done you need to tell systemd that @emph{guix-daemon.service} was
overriden:
@example
sudo systemctl daemon-reload
@end example
Once done you can then update the Guix daemon in the same way than if
you installed Guix with @file{guix-install.sh}:
@example
sudo -i guix pull
sudo systemctl restart guix-daemon.service
@end example
On Guix System, upgrading the daemon is achieved by reconfiguring the
system (@pxref{Invoking guix system, @code{guix system reconfigure}}).