To år efter dannelsen af det forrige væsentlige udgivelse er servicehåndtereren GNU Shepherd 0.9 (tidligere dmd) blevet offentliggjort. Den udvikles af udviklerne af distributionen GNU Guix System som et alternativ til init-systemet SysV-init, der understøtter afhængigheder. Hoveddaemonen og værktøjerne til Shepherd er skrevet i Guile (en af implementeringerne af sprog Schemes), som også bruges til at definere indstillingerne og opstartskonfigurationerne for tjenester. Shepherd anvendes allerede i distributionen GuixSD GNU/Linux og sigter også mod at blive anvendt i GNU/Hurd, men kan fungere på enhver POSIX-kompatibel OS, hvor Guile er tilgængeligt.
Shepherd udfører opgaver relateret til opstart og stop af tjenester, idet den tager hensyn til sammenhængen mellem dem, og dynamisk bestemmer og starter de tjenester, som den valgte tjeneste er afhængig af. Shepherd understøtter også identifikation af konflikter mellem tjenester og forhindrer deres samtidige udførelse. Projektet kan bruges som det primære init-system (init med PID 1), eller i en isoleret form til at styre baggrundsprocesser for enkeltbrugere (f.eks. til at starte tor, privoxy, mcron osv.) med de pågældende brugeres rettigheder.
Hovednyhederne:
- Konceptet med tidsbegrænsede tjenester (transient) er implementeret, som automatisk deaktiveres efter afslutningen af, når processen stopper eller metoden "stop" kaldes, hvilket kan være nødvendigt for syntetiserede tjenester, som ikke kan genstartes efter afslutning.
- En procedure "make-inetd-constructor" er tilføjet til oprettelse af inetd-lignende tjenester.
- En procedure "make-systemd-constructor" er tilføjet til at oprette tjenester, der aktiveres ved netværksaktivitet (i stil med systemd socket activation).
- En procedure til at starte en tjeneste i baggrunden - "start-in-the-background" - er tilføjet.
- Parametrene ":supplementary-groups", "#:create-session" og "#:resource-limits" er blevet tilføjet til proceduren "make-forkexec-constructor".
- Der er sikret drift uden blokering under ventetid på PID-filer.
- For tjenester uden parameteren "#:log-file" leveres output til syslog, mens for tjenester med parameteren "#:log-file" registreres loggen i en separat fil med tidsstempling. Logs fra den ikke-privilegerede proces shepherd gemmes i mappen $XDG_DATA_DIR.
- Støtten til byggemiljøet med Guile 2.0 er blevet ophævet. Problemer ved brug af versionerne Guile 3.0.5-3.0.7 er blevet løst.
- For functionality, the Fibers library version 1.1.0 or newer is now required.
Kilde: opennet.ru
