Po dwóch latach od wydania ostatniej głównej wersji, publicznie ogłoszono wydanie nowej wersji menedżera usług GNU Shepherd 0.9 (dawniej dmd) . Jest ona rozwijana przez twórców dystrybucji GNU Guix jako alternatywa dla inicjalizacji SysV-init uwzględniającej zależności systemowe.
Shepherd zapewnia funkcjonalność przestrzeni użytkownika asynchronicznie w postaci usług , które w Shepherdzie są funkcjami generycznymi i obiektowymi typami danych eksportowanymi do Shepherda w celu rozszerzenia podstawowego systemu operacyjnego w zdefiniowany sposób. W przeciwieństwie do systemd, proces monitorowania przestrzeni użytkownika działa jako ten użytkownik.
O Pasterzu
Podstawą modelu inicjalizacji przestrzeni użytkownika Shepherda jest koncepcja rozszerzenia – forma kompozycyjności, w której usługi są projektowane tak, aby nakładały się na inne usługi, rozszerzając je o bardziej rozbudowane lub wyspecjalizowane zachowania w zależności od potrzeb. Wyraża to relacje zależności oparte na instancjacji, występujące w wielu współczesnych systemach init, co sprawia, że system jest modułowy, a jednocześnie pozwala usługom na zmienną interakcję z innymi usługami w dowolny sposób.
Shepherd udostępnia również tzw. usługi wirtualne , które umożliwiają dynamiczną dostawę w ramach klasy powiązanych obiektów usług, takich jak te, które tworzą wystąpienia agenta transferu poczty (MTA) dla systemu.
System zarządzany przez demona Shepherd może reprezentować swoją przestrzeń użytkownika jako ukierunkowany graf acykliczny, z „usługą systemową” (odpowiedzialną za wczesne fazy rozruchu i uruchamiania) jako root, a wszystkie kolejne zainicjowane usługi jako rozszerzenia funkcjonalności usługi systemowej , bezpośrednio lub przejściowo w stosunku do innych usług.
Ponieważ GNU Shepherd został napisany i skonfigurowany w Guile Scheme, został zaprojektowany tak, aby administrator systemu mógł go w dużym stopniu programować. Można go również wykorzystać do zarządzania profilami poszczególnych użytkowników demonów i usług bez uprawnień.
Usługi i konfiguracja są przechowywane jednolicie jako obiektowo zorientowany kod Scheme. Mimo że podstawowy zestaw usług jest dostarczany wraz z podstawowym systemem Guix, możliwe jest elastyczne deklarowanie dowolnych nowych usług. Dzięki obiektowemu systemowi Guile, GOOPS, użytkownik może na nowo definiować istniejące usługi według własnego uznania, prosząc Shepherda o dynamiczne przepisywanie usług w określony sposób podczas tworzenia instancji.
GNU Shepherd został pierwotnie zaprojektowany do współpracy z GNU Hurd, a później został przyjęty przez system Guix.
Główne nowe funkcje GNU Shepherd 0.9
W nowej wersji podkreślono implementację koncepcji usług tymczasowych (przejściowych), które są automatycznie rozłączane po zakończeniu spowodowanym zakończeniem procesu lub wywołaniem metody „stop”, co może być wymagane w przypadku usług syntetycznych, których nie można ponownie uruchomić po zakończeniu.
Kolejną znaczącą zmianą jest to, że w przypadku usług bez parametru "#:log-file" dane wyjściowe są przekazywane do syslog , a w przypadku usług z parametrem "#:log-file" dane dziennika są zapisywane w oddzielnym pliku, wskazującym czas dziennika w nieuprzywilejowanym procesie Shepherd. Plik ten jest przechowywany w katalogu $XDG_DATA_DIR.
Dodatkowo warto zauważyćże procedura "make-inetd-constructor" została dodana do tworzenia usług podobnych do inetd oraz że procedura "make-systemd-constructor" została dodana do tworzenia usług aktywowanych w aktywności sieciowej (styl gniazdo systemd aktywacja).
Inne istotne zmiany w tej nowej wersji obejmują:
- Dodano procedurę uruchamiania usługi w tle:
- Dodano parametry „:supplementary-groups”, „#:create-session” i „#:resource-limits” do procedury „make-forkexec-constructor”.
- Gwarantowane działanie bez blokady podczas oczekiwania na pliki PID.
- Usunięto wsparcie dla kompilacji z Guile 2.0. Naprawiono problemy podczas korzystania z wersji Guile 3.0.5-3.0.7.
- Do działania wymagana jest teraz biblioteka Fibers 1.1.0 lub nowsza.
- Ulepszona dokumentacja i przykłady
- Pasterza nie można już zbudować za pomocą Guile 2.0
- Naprawiono błąd kompilatora Guile 3.0.[5-7]
- Zaktualizowane tłumaczenia
Na koniec, jeśli chcesz dowiedzieć się więcej lub pobrać nową wersję, możesz zapoznać się ze szczegółami, dokumentacją i pobrać ją, klikając poniższy link.