* [devel-distro] Применение systemd-tmpfiles
@ 2025-02-06 13:32 Дмитрий
0 siblings, 0 replies; only message in thread
From: Дмитрий @ 2025-02-06 13:32 UTC (permalink / raw)
To: Distributions development
Здравствуйте, я бы хотел еще раз затронуть тему systemd-sysusers и
systemd-tmpfiles. Я честно признаюсь что не являюсь мейнтейнером и не
знаю в подробностях как работает сборка пакетов в ALT поэтому был бы рад
услышать Ваше мнение.
Я видел что в bugzilla заведен репорт для поддержки systemd-sysusers
поэтому хотел бы еще раз затронуть эту тему и обсудить текущие
состояние systemd-tmpfiles который как мне казалось уже интегрирован и
придерживается.
Начнем с плюсов и целей которые я вижу своим субьективным взглядом:
1. Декларативная конфигурация базовых системных сущностей.
Пользователи, группы, каталоги и временные файлы определяются в
конфигурационных файлах, это упрощает их управление и поддержку.
2. Повышенная надёжность.
Система всегда гарантированно запускается с правильно созданными
системными учетными записями и необходимой инфраструктурой каталогов,
что снижает вероятность сбоев и проблем с правами доступа.
2. Герметичность системы.
В образах, где /usr является неизменяемым (например атомарные), а все
динамические данные создаются при загрузке, эти инструменты позволяют
обеспечить полную функциональность системы без ручного вмешательства в
/var каталог
3. Упрощённое обновление системы.
Благодаря декларативным инструментам обновление сводится к изменению
централизованных конфигурационных файлов, определяющих системных
пользователей, группы и необходимые каталоги (например, /etc/passwd и
/etc/group), вместо прямого редактирования этих файлов вручную или путем
переустановки пакета.
Проверка работы systemd-tmpfiles
Я проверял разные пакеты и их поведение в основном идентичное следующем
примеру.
Для корректной работы пакета redis требуется наличие системной группы
*_redis*, пользователя *_redis* и следующих директорий:
*/var/lib/redis* – для хранения данных,
*/var/log/redis* – для логов,
*/run/redis* – для временных файлов, создаваемых во время работы
(например, PID-файлов).
в tmpfiles.d мы видим следующее:
cat redis.conf
d /run/redis 0755 _redis _redis
что я ожидал увидеть (приблизительно):
cat redis.conf
# Создание временной директории для redis
d /run/redis 0755 _redis _redis
# Создание постоянных директорий для данных и логов
d /var/lib/redis 0755 _redis _redis -
d /var/log/redis 0750 _redis _redis -
Из этого можно сделать вывод, что в текущей реализации systemd-tmpfiles
в основном используется для создания временных каталогов (например,
*/run/redis*) у большинства пакетов. Создание постоянных директорий
(например, */var/lib/redis* и */var/log/redis*) выполняется на этапе
установки пакета. Хотя есть исключения, некоторые пакеты создают для
себя /var/lib директорию но это выглядит как случайность нежели правило.
В контексте атомарного образа возникают определённые ограничения при
переключении между различными ветками. Если в рамках одной системы
пакеты продолжают создавать каталоги в /var в момент установки, то при
переходе на образы с отличающейся пакетной базой могут возникнуть
конфликты. Это происходит потому, что /var трактуется как пространство
пользователя, которое не должно изменяться вручную, а управляться
исключительно через конфигурационные механизмы.
Для проблемы отсутствия поддержки systemd-sysusers я уже реализовал
скрипт, который динамически сравнивает системных пользователей и группы
внутри образа и корректирует локальные файлы /etc/passwd и /etc/group.
Однако с неполной поддержкой systemd-tmpfiles мне пока не удалось найти
решение – единственный вариант, который остаётся, – попробовать написать
макросы для rpm.
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2025-02-06 13:32 UTC | newest]
Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2025-02-06 13:32 [devel-distro] Применение systemd-tmpfiles Дмитрий
ALT Linux Distributions development
This inbox may be cloned and mirrored by anyone:
git clone --mirror http://lore.altlinux.org/devel-distro/0 devel-distro/git/0.git
# If you have public-inbox 1.1+ installed, you may
# initialize and index your mirror using the following commands:
public-inbox-init -V2 devel-distro devel-distro/ http://lore.altlinux.org/devel-distro \
devel-distro@lists.altlinux.org devel-distro@lists.altlinux.ru devel-distro@lists.altlinux.com
public-inbox-index devel-distro
Example config snippet for mirrors.
Newsgroup available over NNTP:
nntp://lore.altlinux.org/org.altlinux.lists.devel-distro
AGPL code for this site: git clone https://public-inbox.org/public-inbox.git