Dwa lata po wcześniejszym wydaniu opublikowano menedżera usług GNU Shepherd 0.9 (wcześniej dmd), który rozwijany jest przez twórców dystrybucji GNU Guix System jako alternatywa dla systemu inicjalizacji SysV-init, wspierającego zależności. Demony zarządzające i narzędzia Shepherd są napisane w języku Guile (jedna z implementacji języka Scheme), który jest również wykorzystywany do definiowania ustawień i parametrów uruchamiania usług. Shepherd jest już używany w dystrybucji GuixSD GNU/Linux i ma na celu również wykorzystanie w GNU/Hurd, ale może działać w każdej zgodnej z POSIX-os, dla której dostępny jest język Guile.
Shepherd wykonuje pracę polegającą na uruchamianiu i zatrzymywaniu usług, uwzględniając wzajemne powiązania między usługami, dynamicznie określając i uruchamiając usługi, od których zależy wybrana usługa. Shepherd wspiera również definiowanie konfliktów między usługami i zapobiega ich jednoczesnemu uruchamianiu. Projekt może być używany zarówno jako główny system inicjalizacji (init z PID 1), jak i w wydzielonym trybie do zarządzania procesami w tle pojedynczych użytkowników (na przykład do uruchamiania tor, privoxy, mcron itp.) z uprawnieniami danych użytkowników.
Główne nowości:
- Zaimplementowano koncepcję usług tymczasowych (transient), które automatycznie wyłączają się po zakończeniu działania z powodu zakończenia procesu lub wywołania metody „stop”, co może być konieczne dla usług syntetyzowanych, które nie mogą być ponownie uruchomione po zakończeniu działania.
- Dodano procedurę „make-inetd-constructor” do tworzenia usług podobnych do inetd.
- Wprowadzono procedurę „make-systemd-constructor” do tworzenia usług aktywowanych przy aktywności sieciowej (w stylu aktywacji gniazd w systemd).
- Dodano procedurę uruchamiania usługi w tle — „start-in-the-background”.
- Do procedury „make-forkexec-constructor” dodano parametry „:supplementary-groups”, „#:create-session” i „#:resource-limits”.
- Zapewniono działanie bez zablokowania podczas oczekiwania na pliki PID.
- Dla usług bez parametru „#:log-file” zapewniono wyjście do syslog, a dla usług z parametrem „#:log-file”— zapis logu do oddzielnego pliku z oznaczeniem czasu wpisów. Logi z nieuprzywilejowanego procesu shepherd są przechowywane w katalogu $XDG_DATA_DIR.
- Zaprzestano wspierania kompilacji z Guile 2.0. Rozwiązano problemy przy używaniu wersji Guile 3.0.5-3.0.7.
- Wymagana jest teraz biblioteka Fibers w wersji 1.1.0 lub nowszej.
Źródło: opennet.ru
