La doi ani de la ultima sa lansare semnificativă, a fost lansată versiunea GNU Shepherd 0.9 (fosta dmd). Aceasta este dezvoltată de dezvoltatorii distribuției GNU Guix System ca o alternativă la sistemul de inițializare SysV-init care gestionează dependențele. Daemonul de control și utilitarele lui Shepherd sunt scrise în Guile (o implementare a limbajului Scheme), care este folosit și pentru a defini configurația serviciilor și parametrii de pornire. Shepherd este deja utilizat în distribuția GNU GuixSD.Linux și este destinat și utilizării pe GNU/Hurd, dar poate rula pe orice sistem de operare compatibil POSIX pentru care este disponibil limbajul Guile.
Shepherd face munca de pornire și oprire a serviciilor ținând cont de relațiile dintre servicii, identificând și pornind dinamic serviciile de care depinde serviciul selectat. Shepherd acceptă, de asemenea, detectarea conflictelor între servicii și prevenirea rulării lor simultane. Proiectul poate fi folosit atât ca sistem principal de inițializare (init cu PID 1), cât și într-o formă separată pentru a gestiona procesele de fundal ale utilizatorilor individuali (de exemplu, pentru a rula tor, privoxy, mcron etc.) cu execuție cu drepturi dintre acești utilizatori.
Principalele inovații:
- Este implementat conceptul de servicii temporare (tranzitorii), dezactivat automat după finalizare din cauza încetării procesului sau apelului metodei „stop”, care poate fi necesar pentru serviciile sintetizate care nu pot fi repornite după oprire.
- Pentru a crea servicii asemănătoare inetd, a fost adăugată procedura „make-inetd-constructor”.
- Pentru a crea servicii care sunt activate în timpul activității în rețea (în stilul de activare a soclului systemd), a fost adăugată procedura „make-systemd-constructor”.
- S-a adăugat o procedură pentru pornirea unui serviciu în fundal - „start-in-the-background”.
- S-au adăugat parametrii „:supplementary-groups”, „#:create-session” și „#:resource-limits” la procedura „make-forkexec-constructor”.
- Funcționare activată fără blocare în așteptarea fișierelor PID.
- Pentru serviciile fără parametrul „#:log-file”, ieșirea către syslog este furnizată, iar pentru serviciile cu parametrul #:log-file, jurnalul este scris într-un fișier separat care indică ora înregistrărilor. Jurnalele din procesul neprivilegiat Shepherd sunt stocate în directorul $XDG_DATA_DIR.
- Suportul pentru construirea cu Guile 2.0 a fost întrerupt. Problemele la utilizarea versiunilor Guile 3.0.5-3.0.7 au fost rezolvate.
- Biblioteca Fibres 1.1.0 sau mai recentă este acum necesară pentru a funcționa.
Sursa: opennet.ru
