* [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