Finalmente Rilasciato Shepherd 1.0.0: Un Nuovo Standard per i Gestori di Servizi in Linux
Il 9 dicembre 2024 segna un momento storico per il mondo delle distribuzioni GNU/Linux, poiché viene finalmente rilasciata la versione stabile e finale Shepherd 1.0.0. Questo gestore di servizi ha richiesto ben 21 anni di lavoro e dedizione da parte degli sviluppatori del progetto GNU, un impegno che ha portato a un prodotto maturo e affidabile. Questo traguardo non rappresenta solo un’evoluzione significativa per il progetto, ma segna anche un passo importante nel panorama dei sistemi di inizializzazione e gestione dei servizi, specialmente alla luce dell’impatto che systemd ha avuto nel settore.
Introdotto nel 2003 con il suo vecchio nome, GNU dmd, Shepherd è in circolazione da 21 anni come demone di gestione dei servizi. È stato tra i primi sistemi init
ad allontanarsi dal tradizionale e storico stile System V.
La transizione dalla fase di sviluppo alla versione 1.0.0 è stata una vera e propria maratona, che ha visto il team affrontare sfide tecniche e miglioramenti continui. Con questa nuova versione, Shepherd si posiziona come uno strumento solido e innovativo, in grado di competere con altri gestori di servizi nel panorama GNU/Linux.
Cos’è Shepherd?
Shepherd è un gestore di servizi minimalista ma ricco di funzionalità. La sua funzione principale è quella di “radunare” i servizi, monitorando il loro stato e le loro dipendenze, e permettendo di avviarli, fermarli o riavviarli quando necessario. Si compone di 2 comandi principali: shepherd
, che funge da demone per la gestione dei servizi, e herd
, che consente agli utenti di interagire con il demone per controllare lo stato dei servizi.
Grazie all’attenzione rivolta alla semplicità e alla personalizzazione, Shepherd è particolarmente adatto e utilizzato principalmente per l’ecosistema GNU Guix. In un sistema GNU/Linux, il comando Shepherd può operare come primo processo (PID 1), fungendo così da sistema di inizializzazione, come avviene nel Guix System. Quest’ultima è una distribuzione GNU/Linux sviluppata sempre dal progetto GNU e progettata per fornire un ambiente altamente personalizzabile e riproducibile che usa il gestore di pacchetti Guix. Grazie a Guix, gli utenti possono installare e gestire software in modo dichiarativo, garantendo che le versioni dei pacchetti siano sempre coerenti e riproducibili. Questo approccio consente una gestione più semplice delle dipendenze e una maggiore stabilità del sistema.
La distribuzione GNU/Linux Guix System si distingue per la sua architettura innovativa, che utilizza un gestore di pacchetti avanzato basato su Guile Scheme, un linguaggio di programmazione funzionale. Questo consente agli utenti di definire la configurazione del sistema in modo programmatico, facilitando l’installazione e l’aggiornamento del software. Inoltre, il gestore di pacchetti Guix supporta la creazione di ambienti isolati, permettendo agli utenti di testare nuove applicazioni senza compromettere il sistema principale.
In alternativa, Shepherd può gestire i servizi per utenti non privilegiati, come nel caso di Guix Home. Questa funzionalità permette agli utenti di configurare e gestire i propri servizi personali senza necessità di privilegi di amministratore, rendendo l’esperienza più accessibile e sicura. Guix Home è una funzionalità di GNU Guix (gestore di pacchetti) che consente di installare e applicare configurazioni per gli strumenti utilizzati nel flusso di lavoro informatico quotidiano. Utilizza lo stesso modello di configurazione di Guix System (distribuzione GNU/Linux), ma applicato alla cartella $HOME
anziché all’intero sistema.
Funzionalità Principali di Shepherd
Una delle caratteristiche distintive di Shepherd è la sua capacità di fornire informazioni dettagliate sui servizi in esecuzione. Ad esempio, eseguendo il comando herd status ntpd
come utente root
, è possibile ottenere informazioni sul demone del Network Time Protocol (NTP):
$ sudo herd status ntpd
● Status of ntpd: It is running since Fri 06 Dec 2024 02:08:08 PM CET (2 days ago).
Main PID: 11359
Command: /gnu/store/s4ra0g0ym1q1wh5jrqs60092x1nrb8h9-ntp-4.2.8p18/bin/ntpd -n -c /gnu/store/7ac2i2c6dp2f9006llg3m5vkrna7pjbf-ntpd.conf -u ntpd -g
It is enabled.
Provides: ntpd
Requires: user-processes networking
Custom action: configuration
Will be respawned.
Log file: /var/log/ntpd.log
Questo output fornisce una panoramica completa dello stato del servizio NTP, inclusi PID principale, comando in esecuzione e file di log associati.
Grafico delle Dipendenze dei Servizi
Un’altra funzionalità utile è la possibilità di visualizzare le dipendenze tra i servizi tramite il comando herd graph
. Questo comando genera un grafo che rappresenta le relazioni tra i vari servizi attivi nel sistema. Ogni nodo del grafo rappresenta un servizio; i rettangoli indicano i servizi “regolari” (tipicamente demoni come ntpd), mentre i nodi rotondi corrispondono a servizi “one-shot” e i rombi a servizi temporizzati.
Configurazione in Guile Scheme
Un aspetto innovativo di Shepherd è la sua capacità di essere configurato ed esteso utilizzando il linguaggio Guile Scheme. Non è necessario essere esperti in questo linguaggio per iniziare; il progetto è stato creato affinché anche i principianti possano scrivere semplici file di configurazione e apprendere gradualmente concetti più complessi.
Un esempio di file di configurazione potrebbe apparire così:
(register-services (list (service '(ntpd) …) …))
(start-in-the-background '(ntpd …))
In questo frammento di codice in Scheme, viene definito il servizio NTP e avviato automaticamente una volta che Shepherd ha letto il file di configurazione.
Novità in Shepherd 1.0.0
Rispetto alla serie precedente 0.10.x, la versione 1.0.0 introduce diverse novità:
- Supporto per Servizi Temporizzati: I nuovi servizi temporizzati possono eseguire comandi o codice Scheme secondo un calendario predefinito.
- Informazioni Dettagliate con
herd status
: Questo comando ora mostra informazioni ad alto livello sui servizi, inclusi PID principali e indirizzi a cui stanno ascoltando. - Nuovi Servizi Aggiunti: Tra i nuovi strumenti ci sono un servizio per la rotazione dei log e un servizio di log del sistema integrato direttamente in Shepherd.
Prospettive Future
Il team dietro Shepherd ha in programma numerosi miglioramenti futuri, tra cui l’aggiunta del supporto per servizi riconfigurabili dinamicamente (con la possibilità di riavviare un servizio ma con opzioni diverse) e l’integrazione con i gruppi di controllo (cgroups) su Linux. Inoltre, si prevede una transizione verso un modello distribuito che utilizzi framework avanzati come Spritely Goblins, mirato a migliorare ulteriormente le capacità del gestore.
Per celebrare questa uscita, lo straordinario Luis Felipe López Acevedo ha progettato un nuovo logo, disponibile con licenza CC-BY-SA, e il progetto ha ottenuto un vero e proprio sito web!
Tutti i dettagli di Shepherd 1.0.0 li potete leggere nell’annuncio ufficiale rilasciato.
Fonte: https://www.gnu.org/software/shepherd/news/2024/12/the-shepherd-1.0.0-released/
Se vuoi sostenerci, puoi farlo acquistando qualsiasi cosa dai diversi link di affiliazione che abbiamo nel nostro sito o partendo da qui oppure alcune di queste distribuzioni GNU/Linux che sono disponibili sul nostro negozio online, quelle mancanti possono essere comunque richieste, e su cui trovi anche PC, NAS e il ns ServerOne. Se ti senti generoso, puoi anche donarmi solo 1€ o più se vuoi con PayPal e aiutarmi a continuare a pubblicare più contenuti come questo. Grazie!
Hai dubbi o problemi? Ti aiutiamo noi!
Se vuoi rimanere sempre aggiornato, iscriviti al nostro canale Telegram.Se vuoi ricevere supporto per qualsiasi dubbio o problema, iscriviti alla nostra community Facebook o gruppo Telegram.
Cosa ne pensi? Fateci sapere i vostri pensieri nei commenti qui sotto.
Ti piace quello che leggi? Per favore condividilo con gli altri.