Veröffentlichung des Initialisierungssystems GNU Shepherd 0.9

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

60GB SSD 8Gb DDR4