Deux ans après la sortie de la dernière version majeure, la nouvelle version 0.9 du gestionnaire de services GNU Shepherd (anciennement dmd) a été annoncée . Développée par l'équipe de la distribution GNU Guix, elle se veut une alternative à l'initialisation SysV-init, qui prend en compte les dépendances système.
Shepherd fournit des fonctionnalités en espace utilisateur de manière asynchrone sous forme de services . Dans Shepherd, ces services sont des fonctions génériques et des types de données objets exportés pour permettre à Shepherd d'étendre le système d'exploitation de base selon une méthode définie. Contrairement à systemd, un processus de surveillance en espace utilisateur s'exécute avec les privilèges de cet utilisateur.
Ă€ propos de Berger
Au cœur du modèle d'initialisation de l'espace utilisateur de Shepherd se trouve le concept d'extension, une forme de composabilité où les services sont conçus pour se chevaucher, s'enrichissant de comportements plus élaborés ou spécialisés selon les besoins. Ceci traduit les relations de dépendance basées sur l'instanciation que l'on retrouve dans de nombreux systèmes d'initialisation modernes, rendant le système modulaire tout en permettant aux services d'interagir de manière variable et arbitraire entre eux.
Shepherd fournit également des services dits virtuels qui permettent une distribution dynamique via une classe d'objets de service associés, tels que tous ceux qui créent des instances d'un agent de transfert de courrier (MTA) pour le système.
Un système gouverné par le démon Shepherd peut représenter son espace utilisateur sous la forme d'un graphe acyclique dirigé, avec le "service système" (responsable des premières phases de démarrage et de démarrage) en tant que root et tous les services initialisés ultérieurs en tant qu'extensions de la fonctionnalité du service système. , directement ou transitivement sur d'autres services.
Étant donné qu'il est écrit et configuré en Guile Scheme, GNU Shepherd est conçu pour être hautement programmable par l'administrateur système, mais il peut également être utilisé pour gérer les profils par utilisateur des démons et services non privilégiés.
Ses services et sa configuration sont stockés de manière uniforme sous forme de code Scheme orienté objet, et bien qu'un ensemble de services de base soit fourni avec le système Guix de base, de nouveaux services arbitraires peuvent être déclarés de manière flexible, et grâce au système d'objets de Guile, GOOPS, les services existants peuvent être redéfinis à la discrétion de l'utilisateur en demandant à Shepherd de réécrire dynamiquement les services de manière spécifique lors de l'instanciation.
GNU Shepherd a été conçu à l'origine pour fonctionner avec GNU Hurd et a ensuite été adopté par le système Guix.
Principales nouveautés de GNU Shepherd 0.9
Cette nouvelle version met en évidence la mise en œuvre du concept de services temporaires (transitoires), qui sont automatiquement déconnectés après leur arrêt, que ce soit en raison de la fin du processus ou d'un appel à la méthode « stop », ce qui peut être nécessaire pour les services synthétisés qui ne peuvent pas être redémarrés après leur arrêt.
Autre changement notable : pour les services sans le paramètre « #:log-file » , la sortie est fournie à syslog , et pour les services avec le paramètre « #:log-file », le journal est écrit dans un fichier séparé indiquant l’heure des journaux dans le processus Shepherd non privilégié, qui est stocké dans le répertoire $XDG_DATA_DIR.
De plus, il est à noter que la procédure "make-inetd-constructor" a été ajoutée pour créer des services similaires à inetd et que la procédure "make-systemd-constructor" a été ajoutée pour créer des services qui sont activés dans l'activité réseau (style systemd socket Activation).
Parmi les autres changements notables de cette nouvelle version, on peut citer :
- Ajout d'une procédure pour démarrer le service en arrière-plan :
- Ajout des paramètres ":supplementary-groups", "#:create-session" et "#:resource-limits" à la procédure "make-forkexec-constructor".
- Fonctionnement sans verrouillage garanti en attendant les fichiers PID.
- Suppression de la prise en charge de la compilation avec Guile 2.0. Correction de problèmes lors de l'utilisation des versions 3.0.5-3.0.7 de Guile.
- La bibliothèque de fibres 1.1.0 ou ultérieure est désormais requise pour fonctionner.
- Documentation et exemples améliorés
- Shepherd ne peut plus ĂŞtre construit avec Guile 2.0
- Correction du bogue du compilateur Guile 3.0.[5-7]
- Traductions mises Ă jour
Enfin, si vous souhaitez en savoir plus ou obtenir cette nouvelle version, vous pouvez consulter les détails, la documentation et la télécharger à partir du lien suivant.