È stato pubblicato il rilascio del manager di servizio s6-rc 0.7.0.0, progettato per gestire l'avvio di script di inizializzazione e servizi. Supporta il tracciamento dell'albero delle dipendenze e l'avvio o l'arresto automatico dei servizi per raggiungere uno stato specificato. L'utility s6-rc può essere utilizzata sia nelle sistemi di inizializzazione che per organizzare l'avvio di servizi arbitrari in base a eventi che riflettono il cambiamento dello stato del sistema. Il sistema supporta script di inizializzazione compatibili con sysv-init e può importare informazioni sulle dipendenze da sysv-rc o OpenRC. Il codice è scritto in C ed è distribuito sotto licenza ISC.
Il gestore dei servizi s6-rc include un insieme di strumenti per avviare e fermare processi a lungo termine (demon) o script di inizializzazione che terminano immediatamente. Durante il funzionamento, garantisce l'esecuzione parallela di servizi non confliggenti e assicura un ordine di esecuzione dei script ripetuto in diversi avvii. Tutti i cambiamenti di stato vengono gestiti tenendo conto delle dipendenze: ad esempio, avviando un servizio specifico, le dipendenze necessarie per il suo funzionamento verranno automaticamente avviate, mentre durante l'arresto verranno fermati anche i servizi dipendenti.
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 esistenti, consentendo di eseguire un'analisi delle dipendenze ad alta intensità di risorse separatamente, invece di farlo durante il caricamento o il cambiamento di stato. Il sistema non è monolitico, ma suddiviso in una serie di moduli separati e sostituibili, ognuno dei quali, in linea con la filosofia Unix, affronta solo compiti specifici. Il progetto s6-rc segue la filosofia del minimalismo (non contiene nulla di superfluo) e consuma il minimo di risorse.
Invece dei livelli di esecuzione (runlevel), s6-rc propone il concetto di bundle, che consente di raggruppare i servizi in base a criteri e compiti arbitrari. Per migliorare l'efficienza operativa, viene utilizzato un database delle dipendenze precompilato, creato dall'utility s6-rc-compile sulla base del contenuto delle directory contenenti file per l'avvio/arresto dei servizi. Per l'analisi e la manipolazione del database sono disponibili le utility s6-rc-db e s6-rc-update. Gli strumenti s6 sono utilizzati nelle distribuzioni Obarun, Adelie e Artix, e possono essere utilizzati opzionalmente anche in Gentoo, Void e Alpine.
Il progetto include anche pacchetti ausiliari che completano s6-rc:
- s6 è un insieme di strumenti per monitorare e gestire i processi (simile a daemontools e runit). Supporta funzionalità come il riavvio dei processi dopo il loro termine anomalo, l'avvio di un gestore (attivazione del servizio) quando si accede a una porta di rete, il logging degli eventi (sostituzione di syslogd) e la concessione controllata di privilegi aggiuntivi (simile a sudo).
- s6-linux-init è l'implementazione del processo init per i sistemi operativi basati su kernel Linux, utilizzata per creare sistemi di inizializzazione in cui i pacchetti s6 e s6-rc gestiscono i servizi e gli script.
- 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.
- mdevd — un gestore di eventi (simile a udevd), progettato per gestire il collegamento hotplug dei dispositivi. Per configurazione, mdevd è compatibile con mdev di Busybox.
- bcnm — configuratore di rete con funzionalità per la configurazione del Wi-Fi lato client.
- execline — un linguaggio per la scrittura di script.
- skalibs — una libreria per la creazione di applicazioni di sistema sicure in C.
- s6-dns — un insieme di librerie client e utility che sostituiscono le tradizionali utility DNS di BIND e djbdns.
- dnsfunnel — reindirizza le richieste DNS locali verso un esterno un server (DNS forwarder).
- shibari — un server DNS semplice.
- tipidee — server HTTP con supporto per HTTP/1.1.
Nella nuova versione di s6-rc e delle utility associate:
- È stato implementato il comando «s6-rc reload» per riavviare i servizi a lungo termine.
- Aggiunto un file di controllo reload-signal, che definisce il segnale inviato al processo per il riavvio (predefinito SIGHUP).
- Rimossa l'utility s6-rc-bundle — la modifica dei bundle senza ricompilazione non è più supportata.
- Proposto un nuovo formato per il database interno (l'aggiornamento richiede ricompilazione e l'esecuzione dell'utility s6-rc-format-upgrade.
- È stata garantita una corretta elaborazione della situazione di riavvio della utility s6-rc-init per l'inizializzazione dei servizi e migliorata la gestione dei guasti di sistema.
- Nella utility s6-rc-set-change sono state aggiunte le opzioni: -I/-i per l'output di un avviso o per terminare con errore in caso di rilevamento di una dipendenza in conflitto; -P/-p per disattivare/attivare la risoluzione automatica dei conflitti di dipendenza durante la modifica dello stato dei servizi.
- Rimossa l'opzione obsoleta «-f».
- Nella utility s6 è stato aggiunto il comando s6-svscanboot per reindirizzare i log del supervisore s6-svscan in s6-log, quando non è in esecuzione sotto il PID 1.
- È stata implementata l'opzione «s6-svc -l» per inviare un segnale per il riavvio.
- Nell'interfaccia utente s6-frontend è stato aggiunto il supporto per le opzioni e i comandi: «s6 —user» (per lavorare con servizi utente), «s6 live reset», «s6 apply», «s6 enable|disable|start|stop|kill|apply», «s6 live stop —clean».
- Nel server http tipidee è stata implementata la supporto a FastCGI e aggiunta l'opzione cgi_pass_authorization.
Fonte: opennet.ru
