Через два роки з моменту створення останньої основної версії, громадськості було оголошено про випуск нової версії менеджера служб GNU Shepherd 0.9 (раніше відомого як dmd) . Він розробляється розробниками дистрибутива GNU Guix як альтернатива ініціалізації SysV-init, що враховує системні залежності.
Shepherd асинхронно надає функціональність простору користувача як сервіси (services) , які в Shepherd є загальними функціями та об'єктними типами даних, експортованими для Shepherd для використання в розширенні базової операційної системи визначеним чином. На відміну від systemd, процес моніторингу простору користувача виконується від імені цього користувача.
Про Пастуха
Основою моделі ініціалізації простору користувача Шеферда є концепція розширення, форми компонувальності, в якій сервіси розроблені для перекриття з іншими сервісами, доповнюючи їх більш складними або спеціалізованими моделями поведінки за бажанням. Це виражає залежності на основі створення екземплярів, що зустрічаються в багатьох сучасних системах ініціалізації, роблячи систему модульною, але також дозволяючи сервісам взаємодіяти з іншими сервісами довільним чином.
Shepherd також надає так звані віртуальні сервіси , які забезпечують динамічну доставку через клас пов'язаних сервісних об'єктів, таких як усі ті, що створюють екземпляри агента передачі пошти (MTA) для системи.
Система, керована демоном Shepherd, може представляти свій користувальницький простір у вигляді орієнтованого ациклічного графа з «системною службою» (відповідальною за фази раннього завантаження та запуску) як root і всіма наступними ініціалізованими службами як розширеннями функціональності системної служби. , безпосередньо або транзитно над іншими службами.
Оскільки GNU Shepherd написаний та налаштований у схемі Guile, він розроблений для високого рівня програмування системним адміністратором, але його також можна використовувати для керування профілями непривілейованих демонів та служб для кожного користувача.
Його сервіси та конфігурація зберігаються однаково як об'єктно-орієнтований код Scheme, і хоча основний набір сервісів надається з базовою системою Guix, довільні нові сервіси можна гнучко оголошувати, а через об'єктну систему Guile, GOOPS, існуючі сервіси можна перевизначити на розсуд користувача, попросивши Shepherd динамічно переписати сервіси певним чином під час створення екземпляра.
Спочатку GNU Shepherd був розроблений для роботи з GNU Hurd і пізніше був прийнятий системою Guix.
Основні нові можливості GNU Shepherd 0.9
У цій новій версії висвітлено реалізацію концепції тимчасових (перехідних) сервісів, які автоматично відключаються після завершення через завершення процесу або виклик методу "stop", що може знадобитися для синтезованих сервісів, які неможливо перезапустити після завершення.
Ще однією помітною зміною є те, що для служб без параметра "#: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.
- Тепер для роботи потрібна бібліотека Fibres 1.1.0 або новішої версії.
- Покращена документація та приклади
- Shepherd більше не можна створити за допомогою Guile 2.0
- Виправлено помилку компілятора Guile 3.0.[5-7]
- Оновлені переклади
Зрештою, якщо ви зацікавлені дізнатися більше або хочете отримати цю нову версію, ви можете ознайомитися з деталями, документацією та завантажити її за наступним посиланням.