Спустя два года после создания последней крупной версии, был анонсирован релиз новой версии менеджера служб GNU Shepherd 0.9 (ранее известного как dmd) . Он разрабатывается разработчиками дистрибутива GNU Guix как альтернатива инициализации SysV-init, учитывающей системные зависимости.
Shepherd предоставляет функциональность пользовательского пространства асинхронно в виде сервисов , которые в Shepherd представляют собой обобщенные функции и объектные типы данных, экспортируемые для использования Shepherd при расширении базовой операционной системы определенным образом. В отличие от systemd, процесс мониторинга пользовательского пространства выполняется от имени этого пользователя.
О овчарке
В основе модели инициализации пользовательского пространства Шепарда лежит концепция расширения — форма компонуемости, при которой сервисы проектируются таким образом, чтобы пересекаться с другими сервисами, дополняя их более сложными или специализированными функциями по мере необходимости. Это выражает основанные на создании экземпляров отношения зависимости, характерные для многих современных систем инициализации, делая систему модульной, но также позволяя сервисам взаимодействовать друг с другом произвольным образом.
Shepherd также предоставляет так называемые виртуальные сервисы , которые обеспечивают динамическую доставку через класс связанных сервисных объектов, например, все те, которые создают экземпляры агента передачи почты (MTA) для системы.
Система, управляемая демоном Shepherd, может представлять свое пользовательское пространство в виде направленного ациклического графа с «системной службой» (отвечающей за этапы ранней загрузки и запуска) в качестве корня, а все последующие инициализированные службы — в виде расширений функциональности системной службы. , либо напрямую, либо транзитивно через другие сервисы.
Поскольку GNU Shepherd написан и сконфигурирован на языке Guile Scheme, он разработан таким образом, чтобы быть легко программируемым системным администратором, но его также можно использовать для управления профилями непривилегированных демонов и служб для каждого пользователя.
Его сервисы и конфигурация хранятся единообразно в виде объектно-ориентированного кода Scheme, и хотя базовый набор сервисов предоставляется вместе с базовой системой Guix, можно гибко объявлять произвольные новые сервисы, а с помощью объектной системы Guile, GOOPS, существующие сервисы могут быть переопределены по усмотрению пользователя путем запроса к Shepherd на динамическое переписывание сервисов определенным образом при их создании.
GNU Shepherd изначально был разработан для работы с GNU Hurd, а затем был принят системой Guix.
Основные новые функции GNU Shepherd 0.9
В этой новой версии особое внимание уделяется реализации концепции временных (транзиентных) служб, которые автоматически отключаются после завершения работы из-за завершения процесса или вызова метода «стоп», что может потребоваться для синтезированных служб, которые невозможно перезапустить после завершения работы.
Ещё одно важное изменение заключается в том, что для служб без параметра "#:log-file" вывод осуществляется в syslog , а для служб с параметром "#:log-file" журнал записывается в отдельный файл, указывающий время записи в непривилегированный процесс Shepherd, который хранится в каталоге $XDG_DATA_DIR.
Кроме того, следует отметить добавление процедуры «make-inetd-constructor» для создания служб, аналогичных inetd, и добавление процедуры «make-systemd-constructor» для создания служб, активируемых в сетевой активности (стиль systemd socket активация).
Среди других существенных изменений в новой версии можно отметить следующие:
- Добавлена процедура запуска фоновой службы:
- В процедуру make-forkexec-constructor добавлены параметры «:supplementary-groups», «#:create-session» и «#:resource-limits».
- Гарантированная работа без блокировки при ожидании файлов PID.
- Удалена поддержка компиляции с Guile 2.0. Исправлены проблемы при использовании Guile версий 3.0.5-3.0.7.
- Теперь для работы требуется библиотека Fibers версии 1.1.0 или выше.
- Улучшенная документация и примеры
- Shepherd больше нельзя построить с помощью Guile 2.0.
- Исправлена ошибка компилятора Guile 3.0.[5-7]
- Обновленные переводы
Наконец, если вас интересует более подробная информация или вы хотите получить эту новую версию, вы можете ознакомиться с деталями, документацией и загрузить ее по следующей ссылке.