GNU Shepherd, upravitelj storitev, ki ga je razvil Guix

Po dveh letih od nastanka zadnje večje različice je bila javnosti najavljena izdaja nove različice upravitelja storitev GNU Shepherd 0.9 (prej znanega kot dmd). Razvijalci distribucije GNU Guix ga razvijajo kot alternativo inicializaciji SysV-init, ki se zaveda sistemskih odvisnosti.

Shepherd asinhrono zagotavlja funkcionalnost uporabniškega prostora kot storitve , ki so v Shepherd generične funkcije in objektni podatkovni tipi, izvoženi za Shepherd za uporabo pri razširjanju osnovnega operacijskega sistema na določen način. Za razliko od systemd se proces spremljanja uporabniškega prostora izvaja kot ta uporabnik.

O Shepherdu

Jedro Shepherd-ovega modela inicializacije uporabniškega prostora je koncept razširitve, oblike kompozabilnosti, pri kateri so storitve zasnovane tako, da se prekrivajo z drugimi storitvami in jih po potrebi dopolnjujejo z bolj dovršenimi ali specializiranimi vedenji. To izraža odvisnosti, ki temeljijo na instancah in jih najdemo v mnogih sodobnih init sistemih, zaradi česar je sistem modularen, hkrati pa omogoča storitvam, da na poljuben način spremenljivo komunicirajo z drugimi storitvami.

Shepherd ponuja tudi tako imenovane virtualne storitve , ki omogočajo dinamično dostavo prek razreda povezanih storitvenih objektov, kot so vsi tisti, ki ustvarjajo primerke agenta za prenos pošte (MTA) za sistem.

Sistem, ki ga upravlja demon Shepherd, lahko svoj uporabniški prostor predstavlja kot usmerjen aciklični graf s "sistemsko storitvijo" (odgovorno za zgodnje faze zagona in zagona) kot root in vsemi kasnejšimi inicializiranimi storitvami kot razširitvami funkcionalnosti sistemske storitve , neposredno ali prehodno prek drugih storitev.

Ker je napisan in konfiguriran v shemi Guile, je GNU Shepherd zasnovan tako, da ga lahko skrbnik sistema zelo programabilno upravlja, lahko pa se uporablja tudi za upravljanje profilov neprivilegiranih demonov in storitev po uporabnikih.

Njegove storitve in konfiguracija so enotno shranjene kot objektno usmerjena koda Scheme, in čeprav je osnovni nabor storitev na voljo z osnovnim sistemom Guix, je mogoče poljubno deklarirati nove storitve, prek Guileovega objektnega sistema GOOPS pa je mogoče obstoječe storitve po lastni presoji na novo definirati tako, da Shepherdja prosite, naj ob instanciranju dinamično prepiše storitve na določene načine.

GNU Shepherd je bil prvotno zasnovan za delo z GNU Hurd, kasneje pa ga je prevzel sistem Guix.

Glavne nove funkcije GNU Shepherd 0.9

Ta nova različica poudarja implementacijo koncepta začasnih (prehodnih) storitev, ki se po prekinitvi samodejno prekinejo zaradi prekinitve procesa ali klica metode »stop«, kar je lahko potrebno za sintetizirane storitve, ki jih po prekinitvi ni mogoče ponovno zagnati.

Druga opazna sprememba je, da se za storitve brez parametra "#:log-file" izhod posreduje v syslog , za storitve s parametrom "#:log-file" pa se dnevnik zapiše v ločeno datoteko, ki označuje čas dnevnikov v neprivilegiranem procesu Shepherd, ki je shranjena v imeniku $XDG_DATA_DIR.

Poleg tega je treba opozoriti, da je bil dodan postopek "make-inetd-constructor" za ustvarjanje storitev, podobnih inetd, in da je bil dodan postopek "make-systemd-constructor" za ustvarjanje storitev, ki se aktivirajo v omrežni dejavnosti ( aktivacija vtičnice v slogu systemd).

Druge pomembne spremembe v tej novi različici vključujejo:

  • Dodan postopek za zagon storitve v ozadju:
  • Dodani parametri »:supplementary-groups«, »#:create-session« in »#:resource-limits« v proceduro »make-forkexec-constructor«.
  • Zagotovljeno delovanje brez zaklepanja med čakanjem na datoteke PID.
  • Odstranjena podpora za prevajanje z Guile 2.0. Odpravljene težave pri uporabi različice Guile 3.0.5–3.0.7.
  • Za delovanje je zdaj potrebna knjižnica Fibers 1.1.0 ali novejša.
  • Izboljšana dokumentacija in primeri
  • Shepherda ni več mogoče zgraditi z Guile 2.0
  • Popravljena napaka prevajalnika Guile 3.0.[5-7]
  • Posodobljeni prevodi

Če vas zanima več ali želite pridobiti to novo različico, si lahko podrobnosti, dokumentacijo in program prenesete na naslednji povezavi.


Dodaj kot prednostni vir v Googlu