GNU Shepherd, een servicemanager ontwikkeld door Guix

Twee jaar na de laatste grote versie is de release van de nieuwe versie van de GNU Shepherd -servicemanager 0.9 (voorheen bekend als dmd) aangekondigd . Deze wordt ontwikkeld door de ontwikkelaars van de GNU Guix-distributie als alternatief voor de systeemafhankelijke SysV-init-initialisatie.

Shepherd biedt asynchroon functionaliteit in de gebruikersruimte aan als services . In Shepherd zijn dit generieke functies en objectdatatypen die geëxporteerd worden zodat Shepherd ze kan gebruiken om het basisbesturingssysteem op een gedefinieerde manier uit te breiden. In tegenstelling tot systemd draait een monitoringproces in de gebruikersruimte onder de naam van die gebruiker.

Over Herder

De kern van Shepherds initialisatiemodel in de gebruikersruimte is het concept van extensie, een vorm van composability waarbij services zo zijn ontworpen dat ze overlappen met andere services en deze naar wens uitbreiden met meer geavanceerde of gespecialiseerde functionaliteit. Dit drukt de op instanties gebaseerde afhankelijkheidsrelaties uit die in veel moderne init-systemen voorkomen, waardoor het systeem modulair is, maar services ook op willekeurige manieren met andere services kunnen interageren.

Shepherd biedt ook zogenaamde virtuele services aan die dynamische levering mogelijk maken via een klasse van gerelateerde serviceobjecten, zoals alle objecten die instanties van een mailtransferagent (MTA) voor het systeem creëren.

Een systeem dat wordt bestuurd door de Shepherd-daemon kan zijn gebruikersruimte weergeven als een gerichte acyclische grafiek, met de "systeemservice" (verantwoordelijk voor de vroege opstart- en opstartfasen) als root en alle daaropvolgende geïnitialiseerde services als uitbreidingen van de functionaliteit van de systeemservice , hetzij direct, hetzij transitief over andere diensten.

Omdat GNU Shepherd is geschreven en geconfigureerd in Guile Scheme, is het ontworpen om zeer programmeerbaar te zijn door de systeembeheerder, maar het kan ook worden gebruikt om gebruikersprofielen van niet-bevoorrechte daemons en services te beheren.

De services en configuratie ervan worden uniform opgeslagen als objectgeoriënteerde Scheme-code. Hoewel het basis Guix-systeem een ​​kernset aan services levert, kunnen willekeurig nieuwe services flexibel worden gedeclareerd. Via het objectgeoriënteerde systeem GOOPS van Guile kunnen bestaande services naar eigen inzicht van de gebruiker worden hergedefinieerd door Shepherd te vragen de services dynamisch op specifieke manieren te herschrijven bij het aanmaken van een instantie.

GNU Shepherd was oorspronkelijk ontworpen om met GNU Hurd te werken en werd later overgenomen door het Guix-systeem.

Belangrijkste nieuwe functies van GNU Shepherd 0.9

Deze nieuwe versie benadrukt de implementatie van het concept van tijdelijke (transiënte) services, die automatisch worden verbroken na beëindiging als gevolg van procesafbreking of een aanroep van de "stop"-methode. Dit kan nodig zijn voor gesynthetiseerde services die na beëindiging niet opnieuw kunnen worden gestart.

Een andere opvallende wijziging is dat voor services zonder de parameter "#:log-file" de uitvoer naar syslog wordt gestuurd , en voor services met de parameter "#:log-file" het logboek naar een apart bestand wordt geschreven dat de tijd van de logboeken aangeeft in het niet-geprivilegieerde Shepherd-proces. Dit bestand wordt opgeslagen in de map $XDG_DATA_DIR.

Daarnaast is het opmerkelijk dat de "make-inetd-constructor"-procedure is toegevoegd om services te creëren die vergelijkbaar zijn met inetd en dat de "make-systemd-constructor"-procedure is toegevoegd om services te creëren die worden geactiveerd in netwerkactiviteit (stijl systemd socket activering).

Andere opvallende wijzigingen in deze nieuwe versie zijn onder meer:

  • Een procedure toegevoegd om de achtergrondservice te starten:
  • ":supplementary-groups", "#:create-session" en "#:resource-limits" parameters toegevoegd aan de "make-forkexec-constructor" procedure.
  • Gegarandeerd lock-free werking tijdens het wachten op PID-bestanden.
  • Ondersteuning verwijderd voor compileren met Guile 2.0. Problemen opgelost bij het gebruik van Guile-versies 3.0.5-3.0.7.
  • Fibers-bibliotheek 1.1.0 of hoger is nu vereist om te werken.
  • Verbeterde documentatie en voorbeelden
  • Shepherd kan niet meer worden gebouwd met Guile 2.0
  • Fix in Guile 3.0 compiler bug.[5-7]
  • Bijgewerkte vertalingen

Als u tot slot meer wilt weten of deze nieuwe versie wilt verkrijgen, kunt u de details, de documentatie en de downloadlink raadplegen via de volgende link.


Voeg dit toe als voorkeursbron in Google.