GNU Shepherd 1.0.5 released
Ludovic Courtès <[email protected]> Sat, 24 May 2025 11:18:46 +0200
| Newsgroups | gmane.org.fsf.announce |
|---|---|
| Message-ID | <[email protected]> |
We are glad to announce version 1.0.5 of the Shepherd, the next
bug-fix release in the 1.0.x series.
Check out the web site to learn more about the Shepherd 1.0.x series:
https://gnu.org/software/shepherd/news/2024/12/the-shepherd-1.0.0-released/
It is also the first release made from its new home at Codeberg:
https://codeberg.org/shepherd/shepherd/
• About
The Shepherd is a service manager written in Guile that looks after
the herd of daemons running on the system. It can be used as an
“init” system (PID 1) and also by unprivileged users to manage
per-user daemons—e.g., gpg-agent, tor, privoxy. It supports several
daemon startup mechanisms, including inetd, systemd-style socket
activation, and timers. The Shepherd is configured in Guile Scheme
and can be extended in the same language. It builds on a simple
memory-safe and callback-free programming model.
The Shepherd is developed jointly with the Guix project; it is used as
the init system of Guix System and service manager of Guix Home.
https://www.gnu.org/software/shepherd/
• Download
Here are the compressed sources and a GPG detached signature:
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.5.tar.gz
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.5.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
2b222be41b143fe77b9cbccc9dd8062717938d47 shepherd-1.0.5.tar.gz
3c475069a02b49018491e5a5bbab5b7a424d76c7a06bdbf47afd005dc86805f8 shepherd-1.0.5.tar.gz
Authenticate the code by downloading the corresponding .sig file:
gpg --verify shepherd-1.0.5.tar.gz.sig
The signing key can be retrieved with:
gpg --recv-keys 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
As a last resort to find the key, you can try the official GNU
keyring:
wget -q https://ftp.gnu.org/gnu/gnu-keyring.gpg
gpg --keyring gnu-keyring.gpg --verify shepherd-1.0.5.tar.gz.sig
It is bit-for-bit reproducible from a checkout of the ‘v1.0.5’ tag of
the Git repository.
• Changes since version 1.0.4
** ‘herd status system-log’ now displays the socket and kernel log file
When using the ‘system-log’ service, ‘herd status system-log’ now shows the
socket(s) it is listening to and the kernel log file it is reading (if any).
** ‘system-log’ starts even if #:kernel-log-file is inaccessible
(<https://issues.guix.gnu.org/77578>)
It used to be that ‘system-log’ would fail to start if the file specified as
#:kernel-log-file was inaccessible. This was unwise because that would then
typically prevent most system services from starting; also, on Linux, the
default #:kernel-log-file is /proc/kmsg, and that is inaccessible within
containers.
Failure to open #:kernel-log-file is now logged but is non-fatal.
** ‘system-log’ service reads /dev/klog on the Hurd
(<https://issues.guix.gnu.org/77634>)
The ‘system-log’ service would unconditionally read kernel messages from
/proc/kmsg, which is Linux-specific and nonexistent on the Hurd. It now reads
from /dev/klog on the Hurd.
** Fix bug that would cause a system-log test failure on the Hurd
(<https://issues.guix.gnu.org/77634>)
A bug would cause ‘system-log’ to keep polling the file passed as
#:kernel-log-file after it has reached end-of-file; this would significantly
slow down ‘shepherd’ on the Hurd, leading ‘tests/service/system-log.sh’ to
fail. This bug had no impact in real use where #:kernel-log-file points to an
“endless” file such as /proc/kmsg.
** Fix possible deadlock with timers hitting #:max-duration
(<https://codeberg.org/shepherd/shepherd/issues/2>)
A deadlock could occur when using a timer with #:max-duration that would
result in shepherd being unable to handle process creation and termination.
The bug could happen only when #:max-duration is specified for the timer, the
timer’s process exceeds #:max-duration, and the timer’s process does not
terminate within 5 seconds after being sent SIGTERM by shepherd.
** Adjust ‘tests/pid-file.sh’ for systems where unlink(2) returns EROFS on /
(<https://issues.guix.gnu.org/77548>)
This test used to assume that removing a nonexistent file on the root file
system would return ENOENT, which is not the case on Linux when it is mounted
read-only. Adjust to cope with that.
** Translations
This version is fully translated in French, German, Romanian, Serbian, Slovak,
Swedish, and Ukrainian; it is partially translated in several other languages.
Check out https://translationproject.org/domain/shepherd.html to help
translate it into your language!
Please report bugs to [email protected].
Join [email protected] for discussions.
Many thanks to everyone who reported bugs or contributed patches!
Ludovic, on behalf of the Shepherd herd.
signature.asc
(application/pgp-signature, 853 B)
-----BEGIN PGP SIGNATURE----- iQJBBAEBCgArFiEEPORkVYqE/cadtAz7CQsRmT2a67UFAmgxjvYNHGx1ZG9AZ251 Lm9yZwAKCRAJCxGZPZrrtb8oD/0fFtJnUGPfr4MyUjZ+nA7aSv4hayTuzbqz/kgx t3ok2OQ6GmseaDubmv/2pxTaMGUZo1rE5xroQakyZQfWHFYAUxxHILFJmm/WNBtt T+v5NYCCYRL7g0at/6SIBqWwumNjjOEAjHhzjL7NvenpjQreiDnbdJGJ3oebPKs8 HvT7wrJeEJcV3GFZp/0G2AwlWdAW9ZARxg9scDutAwx8xKhovA3OnC6ocj29UTOi gJvwhsrO8fHY7U2ErAvgtGsemDmxSAcxB5JGuVa+0cOfoR+URw+lzHtxwPiqC8aw lfuk5rGvDU7mzrFXtvKMi1G2FR4DFW9X4HkeweeeD0CYtDUVFSZVxePc83392YJf TNANQNF+0Wwg7VYKBrxH7tqOvA4mAfKBZcXJyWpVL1F9axYfrYFJmO1qXHOEw7o5 pZhQXeOLLEStmQ778skYKYxDOfTA92tLaGjOCfSZywiX+5cjjlBMp9PFyXf5FDoW qzx7kuBRzSZqr2Fa6VjmEfCB0C/7JqVTGg4EWuomw50S0484OggYu26WiM8HOAu/ VYMb0ck4bNH4vJzLwqzYHHXNpG6fC9XWWid4zOtVtWW08RmK3/6pfE4BPhnbuwXR 33y6Bgcc+YuGtlagPaCpDnmAfCZY4zEh44jBLwLdi8cRVKkj6fyWOxiXvgD/Xfmv /s5A1A== =N2VI -----END PGP SIGNATURE-----