Po dvou letech od vydání poslední hlavní verze bylo veřejnosti oznámeno vydání nové verze správce služeb GNU Shepherd 0.9 (dříve známého jako dmd) . Vyvíjejí ho vývojáři distribuce GNU Guix jako alternativu k inicializaci SysV-init, která zohledňuje systémové závislosti.
Shepherd poskytuje funkcionalitu uživatelského prostoru asynchronně jako služby , což jsou v Shepherd generické funkce a objektové datové typy exportované pro Shepherd k použití při rozšiřování základního operačního systému definovaným způsobem. Na rozdíl od systemd běží proces monitorování uživatelského prostoru pod tímto uživatelem.
O Shepherdovi
Jádrem Shepherdova modelu inicializace uživatelského prostoru je koncept rozšíření, což je forma kompozovatelnosti, ve které jsou služby navrženy tak, aby se překrývaly s jinými službami a dle potřeby je rozšiřovaly o propracovanější nebo specializovanější chování. To vyjadřuje vztahy závislostí založené na instanciaci, které se nacházejí v mnoha moderních init systémech, čímž se systém stává modulárním, ale zároveň umožňuje službám variabilně interagovat s jinými službami libovolným způsobem.
Shepherd také poskytuje tzv. virtuální služby , které umožňují dynamické doručování přes třídu souvisejících objektů služeb, jako jsou všechny ty, které vytvářejí instance agenta pro přenos pošty (MTA) pro systém.
Systém řízený démonem Shepherd může reprezentovat svůj uživatelský prostor jako řízený acyklický graf se „systémovou službou“ (odpovědnou za počáteční fáze spouštění a spouštění) jako root a všechny následné inicializované služby jako rozšíření funkčnosti systémové služby. buď přímo, nebo přechodně přes jiné služby.
Protože je GNU Shepherd napsán a nakonfigurován v Guile Scheme, je navržen tak, aby byl snadno programovatelný systémovým administrátorem, ale lze jej také použít ke správě profilů neprivilegovaných démonů a služeb pro jednotlivé uživatele.
Jeho služby a konfigurace jsou jednotně uloženy jako objektově orientovaný kód Scheme a ačkoli je základní sada služeb poskytována se základním systémem Guix, lze flexibilně deklarovat libovolné nové služby a prostřednictvím objektového systému Guile, GOOPS, lze stávající služby předefinovat dle uvážení uživatele tím, že požádá Shepherd, aby při vytváření instance dynamicky přepsal služby specifickými způsoby.
GNU Shepherd byl původně navržen pro spolupráci s GNU Hurd a později byl přijat systémem Guix.
Hlavní nové funkce GNU Shepherd 0.9
Tato nová verze zdůrazňuje implementaci konceptu dočasných (přechodných) služeb, které se po ukončení automaticky odpojují z důvodu ukončení procesu nebo volání metody „stop“, což může být vyžadováno pro syntetizované služby, které po ukončení nelze restartovat.
Další pozoruhodnou změnou je, že u služeb bez parametru „#:log-file“ je výstup poskytován do syslogu a u služeb s parametrem „#:log-file“ je protokol zapsán do samostatného souboru s uvedením času protokolování v neprivilegovaném procesu Shepherd, který je uložen v adresáři $XDG_DATA_DIR.
Kromě toho je pozoruhodné, že byla přidána procedura „make-inetd-constructor“ pro vytváření služeb podobných inetd a že byla přidána procedura „make-systemd-constructor“ pro vytváření služeb, které se aktivují v síťové aktivitě (styl systemd socket aktivace).
Mezi další významné změny v této nové verzi patří:
- Přidán postup pro spuštění služby na pozadí:
- Přidány parametry „:supplementary-groups“, „#:create-session“ a „#:resource-limits“ do procedury „make-forkexec-constructor“.
- Zaručený provoz bez zámku při čekání na soubory PID.
- Odebrána podpora pro kompilaci s Guile 2.0. Opraveny problémy při používání Guile verze 3.0.5-3.0.7.
- Nyní je vyžadována knihovna Fibers 1.1.0 nebo novější.
- Vylepšená dokumentace a příklady
- Shepherd již nelze sestavit pomocí Guile 2.0
- Oprava chyby kompilátoru Guile 3.0.[5-7]
- Aktualizované překlady
A konečně, pokud máte zájem dozvědět se více nebo si chcete pořídit tuto novou verzi, můžete si prohlédnout podrobnosti, dokumentaci a stáhnout si ji z následujícího odkazu.