Na afloop van twee jaar sinds de vorige significante release is de service manager GNU Shepherd 0.9 (vroeger dmd) uitgebracht, die wordt ontwikkeld door de ontwikkelaars van de GNU Guix System-distributie als alternatief voor het SysV-init-systeem, dat afhankelijkheden ondersteunt. De daemon en de hulpmiddelen van Shepherd zijn geschreven in Guile (een van de implementaties van de Scheme-taal), die ook wordt gebruikt voor het definiƫren van configuraties en opstartparameters voor services. Shepherd wordt momenteel al gebruikt in de GuixSD GNU/Linux-distributie en is ook gericht op gebruik in GNU/Hurd, maar kan werken op elke POSIX-conforme OS waarvoor Guile beschikbaar is.
Shepherd is verantwoordelijk voor het starten en stoppen van services, rekening houdend met de onderlinge afhankelijkheden tussen services, en bepaalt en start dynamisch de services waarvan de gekozen service afhankelijk is. Shepherd ondersteunt ook het definiƫren van conflicten tussen services en voorkomt hun gelijktijdige uitvoering. Het project kan zowel fungeren als het primaire init-systeem (init met PID 1) als in een afzonderlijke modus voor het beheren van achtergrondprocessen van afzonderlijke gebruikers (bijvoorbeeld voor het starten van tor, privoxy, mcron, enz.) met uitvoering onder de rechten van die gebruikers.
Belangrijkste vernieuwingen:
- Het concept van tijdelijke services (transient) is geïmplementeerd, die automatisch worden uitgeschakeld na voltooiing door het beëindigen van een proces of het aanroepen van de methode "stop", wat nodig kan zijn voor samengestelde services die niet kunnen worden herstart na beëindiging.
- Voor het maken van inetd-achtige services is de procedure "make-inetd-constructor" toegevoegd.
- Voor het maken van services die worden geactiveerd bij netwerkactiviteit (in de stijl van systemd socket activation) is de procedure "make-systemd-constructor" toegevoegd.
- Een procedure voor het starten van een service op de achtergrond ā "start-in-the-background" ā is toegevoegd.
- Er zijn parameters " :supplementary-groups", "#:create-session" en "#:resource-limits" toegevoegd aan de procedure "make-forkexec-constructor".
- Werking zonder blokkering tijdens het wachten op PID-bestanden is gegarandeerd.
- Voor services zonder de parameter "#:log-file" is syslog-output gegarandeerd, en voor services met de parameter "#:log-file" wordt een log in een apart bestand met tijdstempels opgeslagen. Logs van het niet-privilegierte proces shepherd worden opgeslagen in de directory $XDG_DATA_DIR.
- Ondersteuning voor compilatie met Guile 2.0 is gestopt. Problemen met de versies Guile 3.0.5-3.0.7 zijn opgelost.
- Nu is de bibliotheek Fibers 1.1.0 of een nieuwere versie vereist.
Bron: opennet.ru
