Dopo due anni dalla formazione dell'ultima significativa release, è stato pubblicato il gestore di servizi GNU Shepherd 0.9 (ex dmd), che è sviluppato dai programmatori della distribuzione GNU Guix System come alternativa al sistema di init SysV-init, con supporto per le dipendenze. Il demone gestore e gli strumenti Shepherd sono scritti nel linguaggio Guile (una delle implementazioni del linguaggio Scheme), che viene utilizzato anche per definire le impostazioni e i parametri di avvio dei servizi. Shepherd è già utilizzato nella distribuzione GuixSD GNU/Linux ed è previsto anche per l'uso in GNU/Hurd, ma può funzionare su qualsiasi sistema operativo compatibile con POSIX per cui è disponibile il linguaggio Guile.
Shepherd si occupa dell'avvio e dell'arresto dei servizi, tenendo conto delle interconnessioni tra i servizi, determinando dinamicamente e avviando i servizi da cui dipende il servizio selezionato. Shepherd supporta anche la definizione di conflitti tra servizi e previene la loro esecuzione simultanea. Il progetto può essere utilizzato sia come sistema di init principale (init con PID 1), sia in modo isolato per gestire i processi in background di singoli utenti (ad esempio, per avviare tor, privoxy, mcron, ecc.) con esecuzione con i diritti di tali utenti.
Novità principali:
- È stata implementata la concezione dei servizi transitori (transient), disattivati automaticamente dopo il completamento a causa della fine del processo o della chiamata del metodo "stop", che potrebbe essere necessario per i servizi sintetizzabili che non possono essere riavviati dopo la conclusione.
- Per la creazione di servizi simili a inetd è stata aggiunta la procedura "make-inetd-constructor".
- Per la creazione di servizi attivati da attività di rete (nel modo dell'attivazione delle socket di systemd) è stata aggiunta la procedura "make-systemd-constructor".
- È stata aggiunta la procedura per avviare un servizio in background — "start-in-the-background".
- Sono stati aggiunti alla procedura "make-forkexec-constructor" i parametri ":supplementary-groups", "#:create-session" e "#:resource-limits".
- È garantito il funzionamento senza blocco durante l'attesa dei file PID.
- Per i servizi senza il parametro "#:log-file" è garantita l'uscita nel syslog, mentre per quelli con il parametro "#:log-file" — la registrazione del log in un file separato con l'indicazione dell'ora delle registrazioni. I log da un processo non privilegiato di shepherd vengono salvati nella directory $XDG_DATA_DIR.
- È stata interrotta la supporto per la compilazione con Guile 2.0. I problemi sono stati risolti nell'uso delle versioni Guile 3.0.5-3.0.7.
- Ora è richiesta la libreria Fibers 1.1.0 o una versione successiva per il funzionamento.
Fonte: opennet.ru
