È stato pubblicato il rilascio del gestore di servizi s6-rc 0.7.0.0, destinato alla gestione dell'avvio di script di inizializzazione e servizi. È supportato il monitoraggio dell'albero delle dipendenze e l'avvio o l'arresto automatico dei servizi per raggiungere uno stato specificato. Lo strumento s6-rc può essere utilizzato sia nei sistemi di inizializzazione, sia per organizzare l'avvio di servizi arbitrari in risposta ad 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 e viene distribuito con licenza ISC.
Il gestore di servizi s6-rc include un insieme di utility per avviare e fermare processi a lungo termine (demoni) o script di inizializzazione che si chiudono immediatamente. Durante l'operazione si garantisce l'avvio parallelo di servizi che non si sovrappongono e viene garantita una sequenza di esecuzione degli script che si ripete in diversi avvii. Tutti i cambiamenti di stato vengono gestiti tenendo conto delle dipendenze, ad esempio, quando viene avviato un servizio, verranno automaticamente avviate le dipendenze necessarie al suo funzionamento, 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 l'insieme di servizi esistente, che consente di eseguire un'analisi delle dipendenze ad alta intensità di risorse separatamente, anziché durante l'avvio o il cambiamento di stato. Inoltre, il sistema non è monolitico ed è suddiviso in una serie di moduli separati e sostituibili, ciascuno dei quali, secondo la filosofia Unix, si occupa solo di un compito specifico. Il progetto s6-rc segue una filosofia di 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, consentendo di raggruppare i servizi in base a criteri arbitrari e compiti da risolvere. Per migliorare l'efficienza operativa viene utilizzato un database di dipendenze compilato, creato dall'utilità s6-rc-compile sulla base del contenuto delle directory contenenti i file per l'avvio/arresto dei servizi. Per analizzare e manipolare il database sono disponibili le utilità s6-rc-db e s6-rc-update. Lo strumento s6 è utilizzato nelle distribuzioni Obarun, Adelie e Artix, e può essere utilizzato opzionalmente in Gentoo, Void e Alpine.
Il progetto sviluppa anche pacchetti ausiliari che completano s6-rc:
- s6 — strumenti per monitorare e gestire i processi (simile a daemontools e runit). Sono supportate funzionalità come il riavvio dei processi dopo la loro terminazione imprevista, l'avvio di un gestore (attivazione del servizio) al momento dell'accesso a una porta di rete, la registrazione degli eventi (sostituzione di syslogd) e la concessione controllata di privilegi aggiuntivi (simile a sudo).
- s6-linux-init — un'implementazione del processo init per sistemi operativi basati su kernel Linux, utilizzato per creare sistemi di inizializzazione in cui vengono impiegati pacchetti s6 e s6-rc per la gestione dei servizi e degli script.
- s6-networking — un insieme di strumenti per creare servizi di rete, simile a ucspi.
- s6-frontend — un'interface per ricreare la funzionalità di daemontools e runit sopra s6.
- s6-portable-utils — un insieme di utilità Unix standard, come cut, chmod, ls, sort e grep, ottimizzati per un consumo minimo di risorse e forniti sotto licenza ISC.
- s6-linux-utils — un insieme di utilità legate a Linux, come chroot, freeramdisk, logwatch, mount e swapon.
- mdevd — un gestore di eventi (simile a udevd), destinato a gestire il collegamento a caldo dei dispositivi. Secondo la configurazione, mdevd è compatibile con mdev fornito da Busybox.
- bcnm — un 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 — una raccolta di librerie client e strumenti che sostituiscono le tipiche utility DNS di BIND e djbdns.
- dnsfunnel — reindirizza le richieste DNS locali a quelle esterne. server (DNS forwarder).
- shibari — un semplice server DNS.
- tipidee — server HTTP con supporto per HTTP/1.1.
Nella nuova versione di s6-rc e delle utilità correlate:
- È stato implementato il comando «s6-rc reload» per il riavvio dei servizi a lunga durata.
- È stato aggiunto un file di controllo reload-signal, che definisce il segnale inviato al processo per il riavvio (di default SIGHUP).
- È stata rimossa l'utilità s6-rc-bundle: la modifica dei bundle non è più supportata senza ricompilazione.
- È stato proposto un nuovo formato di database interno (per l'aggiornamento è necessaria la ricompilazione e l'esecuzione dell'utilità s6-rc-format-upgrade).
- È stata garantita una corretta gestione della situazione di riavvio dell'utilità s6-rc-init per l'inizializzazione dei servizi e migliorata la gestione dei guasti di sistema.
- Nell'utilità s6-rc-set-change sono state aggiunte opzioni: -I/-i per visualizzare un avviso o terminare con errore quando si rileva una dipendenza conflittuale; -P/-p per disabilitare/abilitare la risoluzione automatica dei conflitti di dipendenza durante il cambiamento dello stato dei servizi.
- È stata rimossa l'opzione obsoleta «-f».
- Nell'utilità s6 è stato aggiunto il comando s6-svscanboot per reindirizzare i log del supervisore s6-svscan a s6-log, quando non viene eseguito sotto PID 1.
- È stata implementata l'opzione «s6-svc -l» per inviare un segnale di riavvio.
- Nel'interfaccia utente s6-frontend è stata aggiunta la supporto per opzioni e comandi: «s6 —user» (per lavorare con i servizi utente), «s6 live reset», «s6 apply», «s6 enable|disable|start|stop|kill|apply», «s6 live stop —clean».
- Nel server http tipidee è stato implementato il supporto per FastCGI e aggiunta l'opzione cgi_pass_authorization.
Fonte: opennet.ru
