La version du gestionnaire de services s6-rc 0.7.0.0 a été publiée, destinée à gérer le démarrage des scripts d'initialisation et des services. Elle prend en charge le suivi de l'arbre des dépendances et le démarrage ou l'arrêt automatique des services pour atteindre un état spécifié. L'outil s6-rc peut être utilisé tant dans les systèmes d'initialisation que pour organiser le démarrage de services arbitraires en lien avec des événements reflétant un changement d'état du système. Le système prend en charge les scripts d'initialisation compatibles avec sysv-init et peut importer des informations de dépendances depuis sysv-rc ou OpenRC. Le code est écrit en langage C et distribué sous licence ISC.
Le gestionnaire de services s6-rc comprend un ensemble d'outils pour démarrer et arrêter des processus de longue durée (démons) ou des scripts d'initialisation qui se terminent immédiatement. Pendant son fonctionnement, il permet le démarrage parallèle de services non intrusifs et garantit une séquence d'exécution des scripts qui se répète à chaque démarrage. Tous les changements d'état sont traités en tenant compte des dépendances ; par exemple, lors du démarrage d'un service, les dépendances nécessaires à son bon fonctionnement seront automatiquement lancées, et lors de l'arrêt, les services dépendants seront également arrêtés.
Contrairement à d'autres gestionnaires de services, s6-rc prend en charge la construction anticipée (en mode hors ligne) du graphe de dépendances pour l'ensemble des services existants, ce qui permet d'effectuer une analyse des dépendances gourmande en ressources séparément, plutôt qu'au moment du démarrage ou du changement d'état. Le système n'est pas monolithique et est divisé en une série de modules séparés et remplaçables, chacun résolvant une tâche spécifique conformément à la philosophie Unix. Le projet s6-rc adhère à la philosophie du minimalisme (ne contient rien de superflu) et consomme un minimum de ressources.
Au lieu des niveaux de démarrage (runlevel), s6-rc propose le concept de ensembles (bundles), permettant de regrouper les services selon des critères et tâches arbitraires. Pour améliorer l'efficacité, une base de données de dépendances précompilée est créée par l'utilitaire s6-rc-compile à partir du contenu des répertoires contenant des fichiers pour le démarrage/l'arrêt des services. Des utilitaires comme s6-rc-db et s6-rc-update sont proposés pour analyser et manipuler la base de données. L'outil s6 est utilisé dans les distributions Obarun, Adelie et Artix, et peut également être utilisé en option dans Gentoo, Void et Alpine.
Le projet développe également des paquets complémentaires qui enrichissent s6-rc :
- s6 — utilitaires pour surveiller et gérer les processus (analogue de daemontools et runit). Des fonctionnalités telles que le redémarrage des processus après une terminaison inattendue, le lancement d'un gestionnaire (activation de service) lors d'une requête sur un port réseau, la journalisation des événements (remplacement de syslogd) et la fourniture contrôlée de privilèges supplémentaires (analogue de sudo) sont prises en charge.
- s6-linux-init — réalisation du processus init pour les systèmes d'exploitation basés sur le noyau Linux, utilisée pour créer des systèmes d'initialisation dans lesquels les paquets s6 et s6-rc sont employés pour gérer des services et des scripts.
- s6-networking — ensemble d'utilitaires pour créer des services réseau, similaire à ucspi.
- s6-frontend - une couche pour recréer la fonctionnalité de daemontools et runit sur s6.
- s6-portable-utils — ensemble d'outils Unix typiques, tels que cut, chmod, ls, sort et grep, optimisés pour une consommation minimale de ressources et fournis sous licence ISC.
- s6-linux-utils — ensemble d'outils liés à Linux, tels que chroot, freeramdisk, logwatch, mount et swapon.
- mdevd — gestionnaire d'événements (similaire à udevd) conçu pour gérer la connexion à chaud des périphériques. En configuration, mdevd est compatible avec mdev de Busybox.
- bcnm — configurateur réseau offrant des capacités de configuration du Wi-Fi du côté client.
- execline — langage de script.
- skalibs — bibliothèque pour créer des applications système sécurisées en C.
- s6-dns — ensemble de bibliothèques et d'outils clients remplaçant les utilitaires DNS classiques de BIND et djbdns.
- dnsfunnel — redirige les requêtes DNS locales vers l'extérieur. serveur (DNS forwarder).
- shibari — serveur DNS simple.
- tipidee — serveur HTTP prenant en charge HTTP/1.1.
Dans la nouvelle version de s6-rc et des outils associés :
- La commande « s6-rc reload » a été implémentée pour redémarrer les services à long terme.
- Un fichier de contrôle reload-signal a été ajouté, définissant le signal envoyé au processus pour le redémarrage (par défaut SIGHUP).
- L'outil s6-rc-bundle a été supprimé — la modification des ensembles de bundles sans recompilation n'est plus supportée.
- Un nouveau format de base de données interne a été proposé (une recompilation et l'exécution de l'outil s6-rc-format-upgrade sont nécessaires pour la mise à jour).
- Une gestion correcte de la situation de redémarrage de l'outil s6-rc-init pour l'initiation des services a été assurée et l'amélioration du traitement des pannes système a été réalisée.
- Des options ont été ajoutées à l'outil s6-rc-set-change : -I/-i pour afficher un avertissement ou échouer en cas de dépendance conflictuelle détectée ; -P/-p pour désactiver/activer la résolution automatique des conflits de dépendances lors du changement d'état des services.
- L'option obsolète « -f » a été supprimée.
- La commande s6-svscanboot a été ajoutée à l'outil s6 pour rediriger les journaux du superviseur s6-svscan vers s6-log, lorsque ce dernier n'est pas exécuté sous PID 1.
- L'option « s6-svc -l » a été mise en œuvre pour envoyer un signal pour le redémarrage.
- Le frontend utilisateur s6 a ajouté la prise en charge des options et commandes : « s6 —user » (pour travailler avec des services utilisateur), « s6 live reset », « s6 apply », « s6 enable|disable|start|stop|kill|apply », « s6 live stop —clean ».
- Le serveur http tipidee a été mis à jour pour prendre en charge FastCGI et une option cgi_pass_authorization a été ajoutée.
Source : opennet.ru
