ALT Linux Distributions development
 help / color / mirror / Atom feed
* [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