Två år efter lanseringen av den föregående stora versionen har GNU Shepherd 0.9 (tidigare dmd) släppts, som utvecklats av utvecklarna av GNU Guix System som ett alternativ till SysV-init-systemet som stöder beroenden. Shepherds daemon och verktyg är skrivna i Guile (en implementation av Scheme-språket), vilket också används för att definiera inställningar och startparametrar för tjänster. Shepherd används redan i GuixSD GNU/Linux-distributionen och är även avsett för användning i GNU/Hurd, men kan fungera på alla POSIX-kompatibla operativsystem där Guile är tillgängligt.
Shepherd ansvarar för att starta och stoppa tjänster med hänsyn till de inbördes relationerna mellan dem, dynamiskt identifiera och starta tjänster som den valda tjänsten beror på. Shepherd stöder också identifiering av konflikter mellan tjänster och förhindrar att de körs samtidigt. Projektet kan användas som huvudinit-system (init c PID 1) eller i ett fristående läge för att hantera bakgrundsprocesser för individuella användare (t.ex. för att starta tor, privoxy, mcron etc.) med användarens rättigheter.
Huvudsakliga nyheter:
- Konceptet av temporära tjänster (transient) har implementerats, som automatiskt stängs av efter avslutandet på grund av att processen har stoppats eller metoden "stop" har anropats, vilket kan vara nödvändigt för syntetiserade tjänster som inte kan startas om efter ett avslut.
- För att skapa inetd-liknande tjänster har prototypen "make-inetd-constructor" lagts till.
- För att skapa tjänster som aktiveras vid nätverksaktivitet (i stil med systemd socket-aktivering) har prototypen "make-systemd-constructor" lagts till.
- En procedur för att starta en tjänst i bakgrunden – "start-in-the-background" – har lagts till.
- Parametrar "supplementary-groups", "#:create-session" och "#:resource-limits" har lagts till i proceduren "make-forkexec-constructor".
- Ingen blockering säkerställs under väntan på PID-filer.
- För tjänster utan parametern "#:log-file" säkerställs utdata till syslog, och för tjänster med parametern "#:log-file" skrivas loggar till en separat fil med tidsstämpel. Loggar från den icke-privilegierade processen shepherd sparas i katalogen $XDG_DATA_DIR.
- Stödet för byggnation med Guile 2.0 har avbrutits. Problem med att använda versioner av Guile 3.0.5-3.0.7 har åtgärdats.
- För arbetet krävs nu Fiber-biblioteket version 1.1.0 eller en nyare version.
Källa: opennet.ru
