GNU Shepherd 1.0.0 released
Ludovic Courtès <[email protected]> Mon, 09 Dec 2024 17:25:15 +0100
| Newsgroups | gmane.lisp.guile.sources,gmane.comp.gnu.guix.devel,gmane.lisp.guile.user |
|---|---|
| Message-ID | <[email protected]> |
--=-=-=
Content-Type: text/plain; charset=utf-8
Content-Transfer-Encoding: quoted-printable
We are thrilled to announce version 1.0.0 of the Shepherd, no less than
twenty-one years after its initial alpha release! We believe Shepherd
has become a solid tool, meeting the kind of user experience one has
come to expect since systemd. Check out the web site to learn more:
https://gnu.org/software/shepherd/news/2024/12/the-shepherd-1.0.0-release=
d/
=E2=80=A2 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
=E2=80=9Cinit=E2=80=9D system (PID 1) and also by unprivileged users to m=
anage
per-user daemons=E2=80=94e.g., gpg-agent, tor, privoxy. It supports seve=
ral
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 GNU Guix project; it is
used as the init system of Guix System and service manager of
Guix Home.
https://www.gnu.org/software/shepherd/
=E2=80=A2 Download
Here are the compressed sources and a GPG detached signature:
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.0.tar.gz
https://ftp.gnu.org/gnu/shepherd/shepherd-1.0.0.tar.gz.sig
Here are the SHA1 and SHA256 checksums:
bc9dc75b3b79e8a9dc26e50c02479ae7f59ebd3d shepherd-1.0.0.tar.gz
e8e6af33b02790cc0a5480d759a4211a86d141d073acd3c9346b4cf010ed9e7c sheph=
erd-1.0.0.tar.gz
Verify the integrity of the tarball with =E2=80=98cksum -a sha256 --check=
=E2=80=99.
Authenticate the code by downloading the corresponding .sig file:
gpg --verify shepherd-0.10.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-0.10.5.tar.gz.sig
This tarball was bootstrapped with the following tools:
Autoconf 2.71
Automake 1.16.5
Gettext 0.21
Makeinfo 7.1.1
It is bit-for-bit reproducible from a checkout of the =E2=80=98v1.0.0=E2=
=80=99 tag of
the Git repository.
=E2=80=A2 Changes since version 0.10.5
** =E2=80=98herd status SERVICE=E2=80=99 shows high-level info about serv=
ices
In previous version, =E2=80=98herd status SERVICE=E2=80=99 would print th=
e =E2=80=9Crunning value=E2=80=9D of
SERVICE: an integer denoting the PID of its main process, or a socket for
inetd or systemd services.
The output is now clearer, showing the =E2=80=9Cmain PID=E2=80=9D, listen=
ing endpoints, and so
on.
** =E2=80=98herd status SERVICE=E2=80=99 shows recently logged messages a=
nd log files
The command now lists recently-logged messages (choose the number of mess=
ages
shown with the =E2=80=98-n=E2=80=99 option) as well as the file(s) it is =
logged to, if any.
** =E2=80=98herd status SERVICE=E2=80=99 shows custom actions
When a service defines custom actions, these actions are now shown direct=
ly in
=E2=80=98herd status SERVICE=E2=80=99, making it easier to discover them.
** =E2=80=98herd status SERVICE=E2=80=99 shows whether a replacement is a=
vailable
When a replacement is available for a service, this is now shown in the o=
utput
of =E2=80=98herd status SERVICE=E2=80=99. Run =E2=80=98herd restart SERV=
ICE=E2=80=99 to upgrade it and
install the replacement in its stead.
** =E2=80=98herd status root=E2=80=99 shows information about the =E2=80=
=98root=E2=80=99 service itself
It used to be that =E2=80=98herd status=E2=80=99 was synonymous with =E2=
=80=98herd status root=E2=80=99 and
both would show the status of all registered services. This is no longer=
the
case: =E2=80=98herd status root=E2=80=99 now shows information about the =
=E2=80=98root=E2=80=99 service
itself, including recently-logged messages.
** Support for timed services
The new =E2=80=98make-timer-constructor=E2=80=99 procedure lets you defin=
e a service that runs
periodically=E2=80=94e.g., every day at noon, every Sunday at 10PM. The =
resulting
service can be started, stopped, and triggered; it has its output logged =
like
any other service. It is comparable to the venerable cron and its varian=
ts
but hopefully much more convenient to use. See =E2=80=9CTimers=E2=80=9D =
in the manual.
** New log rotation service
The =E2=80=98log-rotation=E2=80=99 service defined in (shepherd service l=
og-rotation) defines
a simple log rotation service, similar to the venerable rottlog and logro=
tate
programs, which periodically compresses, moves around, and eventually del=
etes
old log files. See =E2=80=9CLog Rotation Service=E2=80=9D in the manual =
for details.
** New system log service
The =E2=80=98system-log=E2=80=99 service is a substitute for good=E2=80=
=99ol =E2=80=98syslogd=E2=80=99: it listens for
messages written by applications on the /dev/log Unix-domain socket and
dispatches them to log files according to administrator-provided rules.
See =E2=80=9CSystem Log=E2=80=9D in the manual.
** New timer service
The venerable =E2=80=98at=E2=80=99 command, to request the delayed execut=
ion of a command,
also got a replacement in the form of the =E2=80=98timer=E2=80=99 service=
. See =E2=80=9CTimers=E2=80=9D in
the manual.
** New transient service maker
The new service called =E2=80=98transient=E2=80=99 lets you run commands =
in the background,
and it does so by wrapping them in transient services. It is similar in
spirit to =E2=80=98systemd-run=E2=80=99. See =E2=80=9CTransient Service =
Maker=E2=80=9D in the manual.
** Linux kexec support
On GNU/Linux, the =E2=80=98root=E2=80=99 service has a new =E2=80=98kexec=
=E2=80=99 action that can be invoked
with the =E2=80=98reboot -k=E2=80=99 command; it reboots straight into a =
new kernel previously
loaded with the =E2=80=98kexec -l IMAGE=E2=80=99 command. See =E2=80=9CI=
nvoking reboot=E2=80=9D in the
manual.
** =E2=80=98shepherd=E2=80=99 honors =E2=80=98--silent=E2=80=99
Previously the =E2=80=98--silent=E2=80=99 option of =E2=80=98shepherd=E2=
=80=99 was, well, silently ignored.
This is no longer the case.
** =E2=80=98shepherd=E2=80=99 now logs deprecation warnings
Using deprecated interfaces leads to warnings that are now logged by shep=
herd
and visible in its log file.
** GOOPS
The GOOPS programming interface of shepherd, which was deprecated in 0.10=
.x,
is now gone. See =E2=80=9CLegacy GOOPS Interface=E2=80=9D for more infor=
mation.
** Reproducible source tarball
The =E2=80=98shepherd-1.0.0.tar.gz=E2=80=99 file distributed at ftp.gnu.o=
rg is now bit-for-bit
reproducible from the corresponding Git tag. This was prompted by
vulnerabilities that propped up in the XZ package in April 2024
(CVE-2024-3094); code itself borrows from what Janneke Nieuwenhuizen did =
for
Guix.
** Updated requirements: Guile, gzip, zstd
Guile 2.2 is no longer supported; Guile 3.0.x is required.
The log rotation service can use the =E2=80=98gzip=E2=80=99 and =E2=80=98=
zstd=E2=80=99 commands. Use the
=E2=80=98--with-gzip=E2=80=99 and =E2=80=98--with-zstd=E2=80=99 configure=
options to specify the file name of
the commands to use.
** Translations
This version is fully translated in German, Romanian, Swedish, and Ukrani=
an;
it is partially translated in eight 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.
Ludovic, on behalf of the Shepherd herd.
--=-=-=
Content-Type: application/pgp-signature; name="signature.asc"
-----BEGIN PGP SIGNATURE-----
iQJBBAEBCgArFiEEPORkVYqE/cadtAz7CQsRmT2a67UFAmdXGesNHGx1ZG9AZ251
Lm9yZwAKCRAJCxGZPZrrtaFAD/9zUiDWaR8D14oF7wMbC6qKzka/I5HSdtdzFi+e
Z/8Q+FwtPLNg8/glYtG6HI/IMEiR1vPzqT8UiG1U2ioQF2QXFvmme/Btodk2tqSK
n2vEJtwe1RoEXIsOdPq2uJkuBnd9NZh+3A8K9jeLK8Pg1qk0zhKTEc9fo8yHgJ1l
KEHOqDjUr7hKgcW2ic4HaLiPF8c9iewbaw17apSmS/WdMRUndMosnZRDnPKIVw9i
MeLgmkXAE3K4NWu5qUyMaiievnzU5rY+Ty0SdSmahckLAL3Aun78OTQ6HsiqC5zp
1PZkYA3/G4Bcy8j/bJTW2STeu/8r271kmk/HjWikd1J4fhIgeRWodFj9BsWSWR7a
d41QJsi+NwafE5HHMYHpmHaNYTdiHt7S0xhmm9znymG7HwxlWBwrchnzlUKT1XOf
WNXloVREtOZT93XRkGeTlyDigIz69yObpuwSrGY+e/Fi64gvg0s9Sx66cYzuF3X4
ZM2JRs1urBWZ8A70SHM2PjLI789i8wRuksydwP1ZhpZ3Z7Wvj4dErUhP3va+Nubq
Qp3o28+cIQBYTPjsYeEzLytSfug3CAZ0ku1BXQTSAJPS2qSTvXsI0wnk58WxTmE3
34fCWQTk0zJuvk1XBvYHX8e2l5pvfPKmfgBtpbq7LEXNTfjDyWp8909h03W6zfo6
5lma6w==
=Jb0l
-----END PGP SIGNATURE-----
--=-=-=--