Két évvel a legutóbbi jelentős kiadás után megjelent a GNU Shepherd 0.9 szolgáltatáskezelő (korábban dmd), amelyet a GNU Guix System disztribúció fejlesztői fejlesztenek a SysV-init indítási rendszer alternatívájaként, amely támogatja a függőségeket. A Shepherd kezelő démon és segédprogramok Guile nyelven (a Scheme nyelv egyik megvalósítása) készültek, amelyet a szolgáltatások konfigurációs beállításainak és indítási paramétereinek meghatározásához is használnak. A Shepherd már használatban van a GNU/Linux GuixSD disztribúcióban, és célja a GNU/Hurd rendszerén történő használat is, de bármely POSIX-kompatibilis operációs rendszer alatt működhet, amelyhez elérhető a Guile nyelv.
A Shepherd végrehajtja a szolgáltatások indítását és leállítását, figyelembe véve a szolgáltatások közötti kapcsolatokat, dinamikusan meghatározva és indítva azokat a szolgáltatásokat, amelyek a kiválasztott szolgáltatástól függenek. A Shepherd támogatja a szolgáltatások közötti konfliktusok meghatározását, és megakadályozza azok egyidejű végrehajtását. A projekt alapértelmezett indítási rendszerként (init c PID 1) vagy elkülönítve is használható a felhasználók háttérfolyamatainak kezelésére (például a tor, privoxy, mcron stb. indítására), felhasználói jogokkal történő végrehajtással.
Főbb újítások:
- A megvalósított átmeneti szolgáltatások (transient) koncepciója automatikusan kikapcsolódik a folyamat befejezése vagy a „stop” metódus hívása után, ami szükséges lehet azoknál a szintetikus szolgáltatásoknál, amelyek nem indíthatók újra a leállítás után.
- inetd-szerű szolgáltatások létrehozásához hozzáadódott a „make-inetd-constructor” eljárás.
- Hálózati aktivitáskor aktivált szolgáltatások létrehozásához (systemd socket activation stílusban) hozzáadódott a „make-systemd-constructor” eljárás.
- Hozzáadódott egy eljárás a szolgáltatás háttérben történő indítására - „start-in-the-background”.
- A „make-forkexec-constructor” eljárásba hozzáadódott a „:supplementary-groups”, „#:create-session” és „#:resource-limits” paraméterek.
- A PID-fájlok várakozása alatt nem blokkol, biztosítva a zavartalan működést.
- A „#:log-file” paraméter nélküli szolgáltatások esetében a syslog-ba küldi a kimenetet, míg a „#:log-file” paraméterrel rendelkező szolgáltatások esetében időbélyeggel ellátott külön fájlban tárolja a naplózást. Az nem privilegizált folyamatból származó shepherd logok a $XDG_DATA_DIR könyvtárban kerülnek tárolásra.
- Megszűnt a Guile 2.0-ral való fordítás támogatása. Megoldásra kerültek a Guile 3.0.5-3.0.7 verziók használatával kapcsolatos problémák.
- A működéshez mostantól a Fibers 1.1.0 vagy egy újabb verzió szükséges.
Forrás: opennet.ru
