Nach zwei Jahren seit der Veröffentlichung der letzten bedeutenden Version wurde der GNU Shepherd 0.9 (ehemals dmd) veröffentlicht, ein Service-Manager, der von den Entwicklern des GNU Guix System als Alternative zum SysV-init-System mit AbhĂ€ngigkeitsunterstĂŒtzung entwickelt wird. Der Shepherd-Daemon und die Utilities sind in der Programmiersprache Guile (eine der Implementierungen der Sprache Scheme) geschrieben, die auch zur Definition von Konfigurationen und Startparameter fĂŒr Dienste verwendet wird. Shepherd wird bereits im GuixSD GNU/Linux-Distribution verwendet und ist auch fĂŒr die Verwendung in GNU/Hurd vorgesehen, kann jedoch in jedem POSIX-kompatiblen Betriebssystem eingesetzt werden, fĂŒr das die Sprache Guile verfĂŒgbar ist.
Shepherd verwaltet das Starten und Stoppen von Diensten, wobei die AbhĂ€ngigkeiten zwischen den Diensten berĂŒcksichtigt werden. Es identifiziert und startet dynamisch die Dienste, von denen der gewĂ€hlte Dienst abhĂ€ngt. Shepherd unterstĂŒtzt auch die Definition von Konflikten zwischen Diensten und verhindert deren gleichzeitige AusfĂŒhrung. Das Projekt kann sowohl als primĂ€res Init-System (init mit PID 1) als auch in isolierter Form zur Steuerung von Hintergrundprozessen einzelner Benutzer (z.B. zum Starten von tor, privoxy, mcron usw.) mit den Rechten dieser Benutzer verwendet werden.
Hauptneuheiten:
- Das Konzept von temporĂ€ren Diensten (transient) wurde implementiert, die automatisch deaktiviert werden, nachdem sie aufgrund des Endes des Prozesses oder des Aufrufs der Methode "stop" beendet wurden, was fĂŒr synthetisierte Dienste erforderlich sein kann, die nach dem Ende nicht erneut gestartet werden können.
- Zur Erstellung von inetd-Ă€hnlichen Diensten wurde das Verfahren "make-inetd-constructor" hinzugefĂŒgt.
- Zur Erstellung von Diensten, die bei NetzwerkaktivitĂ€t aktiviert werden (im Stil der systemd-Socket-Aktivierung), wurde das Verfahren "make-systemd-constructor" hinzugefĂŒgt.
- Ein Verfahren zum Starten eines Dienstes im Hintergrund wurde hinzugefĂŒgt â "start-in-the-background".
- Das Verfahren "make-forkexec-constructor" wurde um die Parameter ":supplementary-groups", "#:create-session" und "#:resource-limits" erweitert.
- Die AusfĂŒhrung ohne Blockierung wĂ€hrend der Wartung von PID-Dateien wurde sichergestellt.
- FĂŒr Dienste ohne den Parameter "#:log-file" wird die Ausgabe ins Syslog geleitet, wĂ€hrend fĂŒr Dienste mit dem Parameter "#:log-file" das Log in eine separate Datei mit Zeitstempeln geschrieben wird. Logs von nicht privilegierten Prozessen von shepherd werden im Verzeichnis $XDG_DATA_DIR gespeichert.
- Die UnterstĂŒtzung fĂŒr den Build mit Guile 2.0 wurde eingestellt. Probleme beim Einsatz von Guile-Versionen 3.0.5-3.0.7 wurden behoben.
- FĂŒr die Arbeit wird jetzt die Bibliothek Fibers 1.1.0 oder eine neuere Version benötigt.
Quelle: opennet.ru
