Un important lancement du gestionnaire de services s6-rc 0.5.3.0 a été préparé, destiné à gérer le démarrage des scripts d'initialisation et des services en tenant compte des dépendances. L'outil s6-rc peut être utilisé à la fois dans les systèmes d'initialisation et pour organiser le démarrage de services arbitraires en fonction d'événements reflétant le changement d'état du système. Un suivi complet de l'arbre des dépendances est fourni, ainsi qu'un démarrage ou un arrêt automatique des services pour atteindre l'état spécifié. Le code est écrit en langage C et est distribué sous licence ISC.
Le gestionnaire de services s6-rc, qui peut être considéré comme l'analogue de sysv-rc ou OpenRC, inclut un ensemble d'utilitaires pour démarrer et arrêter des processus (démons) fonctionnant de manière prolongée ou des scripts d'initialisation qui se terminent immédiatement. Pendant son fonctionnement, il prend en compte les dépendances entre les composants, assure le démarrage parallèle de scripts et de services qui ne se chevauchent pas, et garantit une séquence d'exécution récurrente lors de différents démarrages des scripts. Tous les changements d'état sont gérés en tenant compte des dépendances, veillant à ce que celles-ci ne soient pas rompues (par exemple, lorsque vous démarrez un service, les dépendances nécessaires à son fonctionnement seront automatiquement lancées, et lors de l'arrêt, les services dépendants seront également arrêtés).
Au lieu des niveaux de démarrage (runlevel), s6-rc propose une conception plus universelle de ensembles (bundles), permettant de regrouper les services par caractéristiques arbitraires et tâches à accomplir. Pour améliorer l'efficacité, une base de données de dépendances compilée est utilisée, créée par l'outil s6-rc-compile à partir du contenu des répertoires avec des fichiers pour démarrer/arrêter des services. Pour l'analyse et les manipulations avec la base de données, des utilitaires s6-rc-db et s6-rc-update sont proposés. Le système prend en charge des scripts d'initialisation compatibles avec sysv-init et peut importer des informations sur les dépendances à partir de sysv-rc ou OpenRC.
Parmi les avantages de s6-rc, on trouve une mise en œuvre compacte, ne contenant rien de superflu, sauf les composants nécessaires pour résoudre des tâches immédiates et consommant un minimum de ressources. Contrairement à d'autres gestionnaires de services, s6-rc prend en charge la réalisation proactive (en mode hors ligne) d'un 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 que pendant le chargement ou le changement d'état. De plus, le système n'est pas monolithique et est divisé en une série de modules distincts et remplaçables, chacun d'eux résolvant uniquement une tâche spécifique selon la philosophie Unix.
En combinaison avec les outils s6, qui suivent le fonctionnement des processus (analogues à daemontools et runit), l'ensemble d'outils permet de contrôler simultanément le fonctionnement des services à long terme, par exemple en les redémarrant en cas de fermeture inattendue, et d'assurer l'exécution d'une séquence de commandes de manière reproductible, se répétant lors de différents lancements. Il prend également en charge des fonctionnalités telles que l'activation d'un service lors de l'accès à un socket (lancement d'un gestionnaire lors d'une requête sur un port réseau), la journalisation des événements de processus (remplaçant syslogd) et l'octroi contrôlé de privilèges supplémentaires (analogues à sudo).
Une version du paquet s6-linux-init 1.0.7.0 est également disponible, offrant une implémentation du processus init pour construire des systèmes d'initialisation prêts pour les systèmes d'exploitation basés sur le noyau Linux, où les outils s6 et s6-rc sont utilisés pour gérer les services et les scripts d'initialisation. Notez que s6 et s6-rc ne sont pas liés à s6-linux-init et peuvent être utilisés avec n'importe quel système d'initialisation si nécessaire.
De plus, le projet propose :
- 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.
- s6-dns — ensemble de bibliothèques et d'outils clients remplaçant les utilitaires DNS classiques de BIND et djbdns.
Dans la nouvelle version de s6-rc, l'outil s6-rc-compile implémente la lecture des données de dépendances et des ensembles de services à partir de répertoires, au lieu de fichiers. L'utilisation de répertoires facilite l'ajout de services à la base de données d'informations sur les dépendances lors de l'installation de programmes via un gestionnaire de paquets, car elle permet d'éviter de modifier des fichiers. La prise en charge de l'ancien format basé sur des fichiers est maintenue pour assurer la compatibilité. Dans la nouvelle version de s6-linux-init, une option « -S » a été ajoutée à l'outil s6-linux-init-maker pour synchroniser les données dans les conteneurs.
Source : opennet.ru
