È stata preparata un'importante release del gestore di servizi s6-rc 0.5.3.0, progettato per gestire l'avvio degli script di inizializzazione e dei servizi tenendo conto delle dipendenze. Il toolkit s6-rc può essere utilizzato sia nei sistemi di inizializzazione che per organizzare l'avvio di servizi arbitrari in risposta ad eventi che riflettono il cambiamento dello stato del sistema. Viene fornito un completo tracciamento dell'albero delle dipendenze e l'avvio o la cessazione automatica dei servizi per raggiungere lo stato desiderato. Il codice è scritto in linguaggio C ed è distribuito sotto licenza ISC.
Il gestore di servizi s6-rc, che può essere considerato l'equivalente di sysv-rc o OpenRC, include un insieme di utility per avviare e fermare processi di lunga durata (daemon) o script di inizializzazione che si completano rapidamente. Durante il funzionamento, vengono considerate le dipendenze tra i componenti, garantendo l'avvio parallelo di script e servizi che non si sovrappongono e assicurando che la sequenza di esecuzione degli script sia ripetibile in diverse esecuzioni. Tutti i cambiamenti di stato vengono gestiti tenendo conto delle dipendenze, assicurandosi che queste non vengano violate (ad esempio, durante l'avvio di un servizio, verranno automaticamente avviati i servizi di dipendenza necessari, mentre durante l'arresto, verranno fermati anche i servizi dipendenti).
Invece dei livelli di avvio (runlevel), s6-rc propone un concetto più universale di bundle, che consente di raggruppare i servizi in base a criteri e compiti arbitrari. Per migliorare l'efficienza operativa, viene utilizzato un database di dipendenze compilato, creato dallo strumento s6-rc-compile in base al contenuto delle directory contenenti i file per avviare/fermare i servizi. Per l'analisi e le manipolazioni del database, sono disponibili gli strumenti s6-rc-db e s6-rc-update. Il sistema supporta gli script di inizializzazione compatibili con sysv-init e può importare informazioni sulle dipendenze da sysv-rc o OpenRC.
Tra i vantaggi di s6-rc, si evidenzia una realizzazione compatta, priva di elementi superflui, che include solo i componenti necessari per risolvere compiti specifici, consumando il minimo di risorse. A differenza di altri gestori di servizi, s6-rc supporta la costruzione proattiva (in modalità offline) del grafo delle dipendenze per il set di servizi esistente, permettendo di effettuare un'analisi delle dipendenze ad alto consumo di risorse separatamente, piuttosto che durante il caricamento o il cambiamento di stato. Inoltre, il sistema non è monolitico, ma è suddiviso in una serie di moduli distinti e sostituibili, ognuno dei quali, secondo la filosofia Unix, si occupa solo di una specifica funzione.
Insieme agli strumenti s6, che monitorano l'esecuzione dei processi (simili a daemontools e runit), l'insieme di strumenti consente di controllare simultaneamente l'operatività dei servizi a lungo termine, ad esempio riavviandoli in caso di arresti anomali, e di garantire l'esecuzione di sequenze di comandi in modo riproducibile, con ripetizioni in esecuzioni diverse. Supporta anche funzionalità come l'attivazione del servizio all'accesso del socket (attivazione del gestore all'accesso a una porta di rete), la registrazione degli eventi di processo (sostituzione di syslogd) e la fornitura controllata di privilegi aggiuntivi (simile a sudo).
Contemporaneamente è disponibile il rilascio del pacchetto s6-linux-init 1.0.7.0, che offre un'implementazione del processo init per costruire sistemi di inizializzazione pronti per i sistemi operativi basati sul kernel Linux, nei quali vengono utilizzati gli strumenti s6 e s6-rc per gestire i servizi e gli script di inizializzazione. Gli strumenti s6 e s6-rc, tuttavia, non sono legati a s6-linux-init e possono essere utilizzati con qualsiasi sistema di inizializzazione a piacere.
Inoltre, il progetto offre:
- s6-networking è un insieme di strumenti per creare servizi di rete, simile a ucspi.
- s6-frontend è un wrapper per ricreare le funzionalità di daemontools e runit sopra s6.
- s6-portable-utils è un insieme di strumenti Unix standard, come cut, chmod, ls, sort e grep, ottimizzati per un consumo minimo di risorse e forniti con licenza ISC.
- s6-linux-utils è un insieme di strumenti legati a Linux, come chroot, freeramdisk, logwatch, mount e swapon.
- s6-dns — un insieme di librerie client e utility che sostituiscono le tradizionali utility DNS di BIND e djbdns.
Nella nuova versione di s6-rc, l'utility s6-rc-compile implementa la lettura dei dati sulle dipendenze e sui set di servizi dalle directory anziché dai file. L'uso delle directory semplifica l'aggiunta di servizi nel database con informazioni sulle dipendenze durante l'installazione dei programmi tramite il gestore pacchetti, poiché consente di evitare modifiche ai file. Il supporto per il vecchio formato basato su file è mantenuto per garantire la compatibilità. Nella nuova versione di s6-linux-init, nell'utility s6-linux-init-maker è stata aggiunta l'opzione '-S' per la sincronizzazione dei dati nei container.
Fonte: opennet.ru
