Выпуск систСмы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ GNU Shepherd 0.9

Бпустя Π΄Π²Π° Π³ΠΎΠ΄Π° с ΠΌΠΎΠΌΠ΅Π½Ρ‚Π° формирования ΠΏΡ€ΠΎΡˆΠ»ΠΎΠ³ΠΎ Π·Π½Π°Ρ‡ΠΈΡ‚Π΅Π»ΡŒΠ½ΠΎΠ³ΠΎ выпуска ΠΎΠΏΡƒΠ±Π»ΠΈΠΊΠΎΠ²Π°Π½ сСрвисный ΠΌΠ΅Π½Π΅Π΄ΠΆΠ΅Ρ€ GNU Shepherd 0.9 (Π±Ρ‹Π²ΡˆΠΈΠΉ dmd), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ развиваСтся Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠ°ΠΌΠΈ дистрибутива GNU Guix System Π² качСствС Π°Π»ΡŒΡ‚Π΅Ρ€Π½Π°Ρ‚ΠΈΠ²Ρ‹ систСмС ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ SysV-init, ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°ΡŽΡ‰Π΅ΠΉ зависимости. Π£ΠΏΡ€Π°Π²Π»ΡΡŽΡ‰ΠΈΠΉ Π΄Π΅ΠΌΠΎΠ½ ΠΈ ΡƒΡ‚ΠΈΠ»ΠΈΡ‚Ρ‹ Shepherd написаны Π½Π° языкС Guile (ΠΎΠ΄Π½Π° ΠΈΠ· Ρ€Π΅Π°Π»ΠΈΠ·Π°Ρ†ΠΈΠΉ языка Scheme), ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Ρ‚Π°ΠΊΠΆΠ΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅Ρ‚ΡΡ для опрСдСлСния настроСк ΠΈ ΠΏΠ°Ρ€Π°ΠΌΠ΅Ρ‚Ρ€ΠΎΠ² запуска сСрвисов. Shepherd ΡƒΠΆΠ΅ примСняСтся Π² дистрибутивС GuixSD GNU/Linux ΠΈ Π½Π°Ρ†Π΅Π»Π΅Π½ Ρ‚Π°ΠΊΠΆΠ΅ Π½Π° использованиС Π² GNU/Hurd, Π½ΠΎ ΠΌΠΎΠΆΠ΅Ρ‚ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ Π² любой POSIX-совмСстимой ОБ, для ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΉ доступСн язык Guile.

Shepherd выполняСт Ρ€Π°Π±ΠΎΡ‚Ρƒ ΠΏΠΎ запуску ΠΈ остановкС сСрвисов, учитывая взаимосвязь ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами, динамичСски опрСдСляя ΠΈ запуская сСрвисы, ΠΎΡ‚ ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Ρ… зависит Π²Ρ‹Π±Ρ€Π°Π½Π½Ρ‹ΠΉ сСрвис. Shepherd Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠ΄Π΄Π΅Ρ€ΠΆΠΈΠ²Π°Π΅Ρ‚ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½ΠΈΠ΅ ΠΊΠΎΠ½Ρ„Π»ΠΈΠΊΡ‚ΠΎΠ² ΠΌΠ΅ΠΆΠ΄Ρƒ сСрвисами ΠΈ ΠΏΡ€Π΅Π΄ΠΎΡ‚Π²Ρ€Π°Ρ‰Π°Π΅Ρ‚ ΠΈΡ… ΠΎΠ΄Π½ΠΎΠ²Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠ΅ Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅. ΠŸΡ€ΠΎΠ΅ΠΊΡ‚ ΠΌΠΎΠΆΠ΅Ρ‚ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒΡΡ ΠΊΠ°ΠΊ Π² Ρ€ΠΎΠ»ΠΈ основной систСмы ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ (init c PID 1), Ρ‚Π°ΠΊ ΠΈ Π² обособлСнном Π²ΠΈΠ΄Π΅ для управлСния Ρ„ΠΎΠ½ΠΎΠ²Ρ‹ΠΌΠΈ процСссами ΠΎΡ‚Π΄Π΅Π»ΡŒΠ½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, для запуска tor, privoxy, mcron ΠΈ Ρ‚.ΠΏ.) с Π²Ρ‹ΠΏΠΎΠ»Π½Π΅Π½ΠΈΠ΅ΠΌ с ΠΏΡ€Π°Π²Π°ΠΌΠΈ Π΄Π°Π½Π½Ρ‹Ρ… ΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚Π΅Π»Π΅ΠΉ.

ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ Π½ΠΎΠ²ΡˆΠ΅ΡΡ‚Π²Π°:

  • Π Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° концСпция Π²Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Ρ… сСрвисов (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 ΠΈΠ»ΠΈ Π±ΠΎΠ»Π΅Π΅ новая вСрсия.

Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: opennet.ru