Π‘ΠΏΡΡΡΡ Π΄Π²Π° Π³ΠΎΠ΄Π° Ρ ΠΌΠΎΠΌΠ΅Π½ΡΠ° ΡΠΎΡΠΌΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΠΏΡΠΎΡΠ»ΠΎΠ³ΠΎ Π·Π½Π°ΡΠΈΡΠ΅Π»ΡΠ½ΠΎΠ³ΠΎ Π²ΡΠΏΡΡΠΊΠ° ΠΎΠΏΡΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ ΡΠ΅ΡΠ²ΠΈΡΠ½ΡΠΉ ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ GNU Shepherd 0.9 (Π±ΡΠ²ΡΠΈΠΉ dmd), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°Π·Π²ΠΈΠ²Π°Π΅ΡΡΡ ΡΠ°Π·ΡΠ°Π±ΠΎΡΡΠΈΠΊΠ°ΠΌΠΈ Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π° GNU Guix System Π² ΠΊΠ°ΡΠ΅ΡΡΠ²Π΅ Π°Π»ΡΡΠ΅ΡΠ½Π°ΡΠΈΠ²Ρ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈΠ½ΠΈΡΠΈΠ°Π»ΠΈΠ·Π°ΡΠΈΠΈ SysV-init, ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡΠ΅ΠΉ Π·Π°Π²ΠΈΡΠΈΠΌΠΎΡΡΠΈ. Π£ΠΏΡΠ°Π²Π»ΡΡΡΠΈΠΉ Π΄Π΅ΠΌΠΎΠ½ ΠΈ ΡΡΠΈΠ»ΠΈΡΡ Shepherd Π½Π°ΠΏΠΈΡΠ°Π½Ρ Π½Π° ΡΠ·ΡΠΊΠ΅ Guile (ΠΎΠ΄Π½Π° ΠΈΠ· ΡΠ΅Π°Π»ΠΈΠ·Π°ΡΠΈΠΉ ΡΠ·ΡΠΊΠ° Scheme), ΠΊΠΎΡΠΎΡΡΠΉ ΡΠ°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡΠ·ΡΠ΅ΡΡΡ Π΄Π»Ρ ΠΎΠΏΡΠ΅Π΄Π΅Π»Π΅Π½ΠΈΡ Π½Π°ΡΡΡΠΎΠ΅ΠΊ ΠΈ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠ² Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠΎΠ². Shepherd ΡΠΆΠ΅ ΠΏΡΠΈΠΌΠ΅Π½ΡΠ΅ΡΡΡ Π² Π΄ΠΈΡΡΡΠΈΠ±ΡΡΠΈΠ²Π΅ GuixSD GNU/Linux ΠΈ Π½Π°ΡΠ΅Π»Π΅Π½ ΡΠ°ΠΊΠΆΠ΅ Π½Π° ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠ΅ Π² GNU/Hurd, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ ΡΠ°Π±ΠΎΡΠ°ΡΡ Π² Π»ΡΠ±ΠΎΠΉ POSIX-ΡΠΎΠ²ΠΌΠ΅ΡΡΠΈΠΌΠΎΠΉ ΠΠ‘, Π΄Π»Ρ ΠΊΠΎΡΠΎΡΠΎΠΉ Π΄ΠΎΡΡΡΠΏΠ΅Π½ ΡΠ·ΡΠΊ Guile.
Shepherd nindakake pakaryan kanggo miwiti lan mungkasi layanan kanthi nimbang hubungan antarane layanan, kanthi dinamis ngenali lan miwiti layanan sing gumantung saka layanan sing dipilih. Shepherd uga ndhukung ndeteksi konflik ing antarane layanan lan nyegah supaya ora bisa mlaku bebarengan. Proyek kasebut bisa digunakake minangka sistem inisialisasi utama (init karo PID 1), lan ing wangun sing kapisah kanggo ngatur proses latar mburi pangguna individu (contone, kanggo mbukak tor, privoxy, mcron, lsp) kanthi eksekusi kanthi hak. saka pangguna iki.
Inovasi utama:
- Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° ΠΊΠΎΠ½ΡΠ΅ΠΏΡΠΈΡ Π²ΡΠ΅ΠΌΠ΅Π½Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² (transient), Π°Π²ΡΠΎΠΌΠ°ΡΠΈΡΠ΅ΡΠΊΠΈ ΠΎΡΠΊΠ»ΡΡΠ°Π΅ΠΌΡΡ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΠΈΠ·-Π·Π° ΠΏΡΠ΅ΠΊΡΠ°ΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ ΠΏΡΠΎΡΠ΅ΡΡΠ° ΠΈΠ»ΠΈ Π²ΡΠ·ΠΎΠ²Π° ΠΌΠ΅ΡΠΎΠ΄Π° Β«stopΒ», ΡΡΠΎ ΠΌΠΎΠΆΠ΅Ρ ΠΏΠΎΡΡΠ΅Π±ΠΎΠ²Π°ΡΡΡΡ Π΄Π»Ρ ΡΠΈΠ½ΡΠ΅Π·ΠΈΡΡΠ΅ΠΌΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², ΠΊΠΎΡΠΎΡΡΠ΅ Π½Π΅ ΠΌΠΎΠ³ΡΡ Π±ΡΡΡ ΠΏΠ΅ΡΠ΅Π·Π°ΠΏΡΡΠ΅Π½Ρ ΠΏΠΎΡΠ»Π΅ Π·Π°Π²Π΅ΡΡΠ΅Π½ΠΈΡ ΡΠ°Π±ΠΎΡΡ.
- ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ inetd-ΠΏΠΎΠ΄ΠΎΠ±Π½ΡΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Β«make-inetd-constructorΒ».
- ΠΠ»Ρ ΡΠΎΠ·Π΄Π°Π½ΠΈΡ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ², Π°ΠΊΡΠΈΠ²ΠΈΡΡΠ΅ΠΌΡΡ ΠΏΡΠΈ ΡΠ΅ΡΠ΅Π²ΠΎΠΉ Π°ΠΊΡΠΈΠ²Π½ΠΎΡΡΠΈ (Π² ΡΡΠΈΠ»Π΅ systemd socket activation), Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Β«make-systemd-constructorΒ».
- ΠΠΎΠ±Π°Π²Π»Π΅Π½Π° ΠΏΡΠΎΡΠ΅Π΄ΡΡΠ° Π΄Π»Ρ Π·Π°ΠΏΡΡΠΊΠ° ΡΠ΅ΡΠ²ΠΈΡΠ° Π² ΡΠΎΠ½ΠΎΠ²ΠΎΠΌ ΡΠ΅ΠΆΠΈΠΌΠ΅ β Β«start-in-the-backgroundΒ».
- Π ΠΏΡΠΎΡΠ΅Π΄ΡΡΡ Β«make-forkexec-constructorΒ» Π΄ΠΎΠ±Π°Π²Π»Π΅Π½Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΡ Β«:supplementary-groupsΒ», Β«#:create-sessionΒ» ΠΈ Β«#:resource-limitsΒ».
- ΠΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½Π° ΡΠ°Π±ΠΎΡΠ° Π±Π΅Π· Π±Π»ΠΎΠΊΠΈΡΠΎΠ²ΠΊΠΈ Π²ΠΎ Π²ΡΠ΅ΠΌΡ ΠΎΠΆΠΈΠ΄Π°Π½ΠΈΡ PID-ΡΠ°ΠΉΠ»ΠΎΠ².
- ΠΠ»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Π±Π΅Π· ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠ° Β«#:log-fileΒ» ΠΎΠ±Π΅ΡΠΏΠ΅ΡΠ΅Π½ Π²ΡΠ²ΠΎΠ΄ Π² syslog, Π° Π΄Π»Ρ ΡΠ΅ΡΠ²ΠΈΡΠΎΠ² Ρ ΠΏΠ°ΡΠ°ΠΌΠ΅ΡΡΠΎΠΌ #:log-fileΒ» β Π·Π°ΠΏΠΈΡΡ Π»ΠΎΠ³Π° Π² ΠΎΡΠ΄Π΅Π»ΡΠ½ΡΠΉ ΡΠ°ΠΉΠ» Ρ ΡΠΊΠ°Π·Π°Π½ΠΈΠ΅ΠΌ Π²ΡΠ΅ΠΌΠ΅Π½ΠΈ Π·Π°ΠΏΠΈΡΠ΅ΠΉ. ΠΠΎΠ³ΠΈ ΠΎΡ Π½Π΅ΠΏΡΠΈΠ²ΠΈΠ»Π΅Π³ΠΈΡΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ ΠΏΡΠΎΡΠ΅ΡΡΠ° shepherd ΡΠΎΡ ΡΠ°Π½ΡΡΡΡΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ $XDG_DATA_DIR.
- ΠΡΠ΅ΠΊΡΠ°ΡΠ΅Π½Π° ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΊΠ° ΡΠ±ΠΎΡΠΊΠΈ Ρ Guile 2.0. Π Π΅ΡΠ΅Π½Ρ ΠΏΡΠΎΠ±Π»Π΅ΠΌΡ ΠΏΡΠΈ ΠΈΡΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°Π½ΠΈΠΈ Π²Π΅ΡΡΠΈΠΉ Guile 3.0.5-3.0.7.
- ΠΠ»Ρ ΡΠ°Π±ΠΎΡΡ ΡΠ΅ΠΏΠ΅ΡΡ ΡΡΠ΅Π±ΡΠ΅ΡΡΡ Π±ΠΈΠ±Π»ΠΈΠΎΡΠ΅ΠΊΠ° Fibers 1.1.0 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ Π½ΠΎΠ²Π°Ρ Π²Π΅ΡΡΠΈΡ.
Source: opennet.ru