GNU Shepherd, un gestore di servizi sviluppato da Guix

A due anni dalla creazione dell'ultima versione principale, è stata annunciata al pubblico la nuova versione del gestore di servizi GNU Shepherd 0.9 (precedentemente noto come dmd) . È in fase di sviluppo da parte degli sviluppatori della distribuzione GNU Guix come alternativa all'inizializzazione SysV-init, che tiene conto delle dipendenze di sistema.

Shepherd fornisce funzionalità in spazio utente in modo asincrono sotto forma di servizi , che in Shepherd sono funzioni generiche e tipi di dati oggetto esportati affinché Shepherd li utilizzi per estendere il sistema operativo di base in un modo definito. A differenza di systemd, un processo di monitoraggio in spazio utente viene eseguito con i privilegi di quell'utente.

A proposito di Pastore

Il nucleo del modello di inizializzazione dello spazio utente di Shepherd è il concetto di estensione, una forma di componibilità in cui i servizi sono progettati per sovrapporsi ad altri servizi, arricchendoli con comportamenti più elaborati o specializzati a seconda delle necessità. Questo esprime le relazioni di dipendenza basate sull'istanza che si trovano in molti moderni sistemi di init, rendendo il sistema modulare, ma consentendo anche ai servizi di interagire in modo variabile e arbitrario tra loro.

Shepherd offre anche i cosiddetti servizi virtuali che consentono la distribuzione dinamica di una classe di oggetti di servizio correlati, come ad esempio tutti quelli che creano istanze di un agente di trasferimento della posta (MTA) per il sistema.

Un sistema governato dal demone Shepherd può rappresentare il proprio spazio utente come un grafo aciclico orientato, con il "servizio di sistema" (responsabile delle prime fasi di avvio e avvio) come root e tutti i successivi servizi inizializzati come estensioni delle funzionalità del servizio di sistema , direttamente o transitivamente su altri servizi.

Essendo scritto e configurato in Guile Scheme, GNU Shepherd è progettato per essere altamente programmabile dall'amministratore di sistema, ma può anche essere utilizzato per gestire profili utente di demoni e servizi non privilegiati.

I suoi servizi e la sua configurazione sono memorizzati in modo uniforme come codice Scheme orientato agli oggetti e, sebbene un set di servizi di base sia fornito con il sistema Guix, è possibile dichiarare in modo flessibile nuovi servizi arbitrari e, tramite il sistema a oggetti di Guile, GOOPS, i servizi esistenti possono essere ridefiniti a discrezione dell'utente chiedendo a Shepherd di riscrivere dinamicamente i servizi in modi specifici al momento dell'istanza.

GNU Shepherd è stato originariamente progettato per funzionare con GNU Hurd ed è stato successivamente adottato dal sistema Guix.

Principali novità di GNU Shepherd 0.9

Questa nuova versione evidenzia l' implementazione del concetto di servizi temporanei (transitori), che vengono disconnessi automaticamente al termine dell'esecuzione a causa della terminazione del processo o di una chiamata al metodo "stop", che può essere necessario per i servizi sintetizzati che non possono essere riavviati dopo la terminazione.

Un altro cambiamento degno di nota è che per i servizi senza il parametro "#:log-file" , l'output viene fornito a syslog , mentre per i servizi con il parametro "#:log-file", il log viene scritto in un file separato che indica l'ora dei log nel processo Shepherd non privilegiato, che viene memorizzato nella directory $XDG_DATA_DIR.

Inoltre, è da notare che è stata aggiunta la procedura "make-inetd-constructor" per creare servizi simili a inetd e che è stata aggiunta la procedura "make-systemd-constructor" per creare servizi che si attivano in attività di rete (stile systemd socket Attivazione).

Tra le altre modifiche degne di nota in questa nuova versione si segnalano:

  • Aggiunta una procedura per avviare il servizio in background:
  • Aggiunti i parametri “:supplementary-groups”, “#:create-session” e “#:resource-limits” alla procedura “make-forkexec-constructor”.
  • Garantito il funzionamento senza blocco durante l'attesa dei file PID.
  • Rimosso il supporto per la compilazione con Guile 2.0. Risolti problemi durante l'utilizzo di Guile versioni 3.0.5-3.0.7.
  • Per funzionare è ora necessaria la libreria Fibers 1.1.0 o successiva.
  • Documentazione ed esempi migliorati
  • Shepherd non può più essere creato con Guile 2.0
  • Risolto bug del compilatore Guile 3.0.[5-7]
  • Traduzioni aggiornate

Infine, se siete interessati ad approfondire l'argomento o desiderate ottenere questa nuova versione, potete consultare i dettagli, la documentazione e scaricarla dal seguente link.


Aggiungi come fonte preferita in Google