Po dvoch rokoch od vydania predchádzajúcej významnej verzie bol vydaný správca služieb GNU Shepherd 0.9 (bývalý dmd), ktorý sa vyvíja vývojármi distribúcie GNU Guix System ako alternatíva k inštalačnému systému SysV-init, ktorý podporuje závislosti. Správcu démonu a utilitky Shepherd sú napísané v jazyku Guile (jedna z implementácií jazyka Scheme), ktorý sa tiež používa na definovanie nastavení a parametrov spúšťania služieb. Shepherd sa už používa v distribúcii GuixSD GNU/Linux a je určený aj na použitie v GNU/Hurd, ale môže fungovať v akomkoľvek operačnom systéme kompatibilnom s POSIX, pre ktorý je dostupný jazyk Guile.
Shepherd vykonáva prácu pri spúšťaní a zastavovaní služieb, pričom zohľadňuje vzťahy medzi službami, dynamicky určuje a spúšťa služby, od ktorých závisí vybraná služba. Shepherd tiež podporuje definovanie konfliktov medzi službami a zabraňuje ich súčasnému vykonávaniu. Projekt sa môže používať ako základný systém inicializácie (init c PID 1), tak aj v izolovanej forme na spravovanie pozadových procesov jednotlivých používateľov (napríklad na spúšťanie tor, privoxy, mcron a pod.) s vykonávaním s právami týchto používateľov.
Hlavné novinky:
- Realizovaná koncept dočasných služieb (transient), ktoré sa automaticky vypínajú po ukončení činnosti z dôvodu skončenia procesu alebo volania metódy „stop“, čo môže byť potrebné pre syntetizované služby, ktoré nemožno znova spustiť po ich ukončení.
- Pre vytvorenie inetd-podobných služieb bola pridaná procedúra „make-inetd-constructor“.
- Pre vytvorenie služieb, ktoré sa aktivujú pri sieťovej aktivite (v štýle systemd socket aktivácie), bola pridaná procedúra „make-systemd-constructor“.
- Pridaná procedúra na spustenie služby na pozadí — „start-in-the-background“.
- Do procedúry „make-forkexec-constructor“ boli pridané parametre „:supplementary-groups“, „#:create-session“ a „#:resource-limits“.
- Zabezpečená činnosť bez blokovania počas čakania na PID súbory.
- Pre služby bez parametra „#:log-file“ je zabezpečené výstup do syslog, a pre služby s parametrom „#:log-file“ — zápis logu do samostatného súboru s uvedením času záznamov. Logy z neprivilegovaného procesu shepherd sa ukladajú do adresára $XDG_DATA_DIR.
- Podpora zostavenia s Guile 2.0 bola ukončená. Riešené problémy pri používaní verzií Guile 3.0.5-3.0.7.
- Pre fungovanie je teraz potrebná knižnica Fibers 1.1.0 alebo novšia verzia.
Zdroj: opennet.ru
