From: Paul Wolneykien <manowar@altlinux.org> To: Distributions development <devel-distro@lists.altlinux.org> Subject: Re: [devel-distro] Конфигурация в пакетах vs ... ? Date: Wed, 16 Oct 2024 00:03:11 +0300 Message-ID: <20241016000311.73f7d145@legato> (raw) In-Reply-To: <20da660b-0c0e-42bc-bb7b-f1a204bf0612@basealt.ru> 2sin: там в конце предложение по разделению бакендов на привилегированную и не привилегированную части. Возможно, ты уже об этом подумал. :-) В Fri, 11 Oct 2024 08:42:56 +0300 Anton Farygin <rider@basealt.ru> пишет: > On 10.10.2024 22:29, Paul Wolneykien wrote: > > По тому, что я услышал на прошедшей OSSDEVCONF, у Жени есть > > (частично реализованные) планы хранить настройки в дереве dconf > > и применять их к системе после установки. Во-первых, самый главный > > вопрос: как именно применять? И во-вторых, в чём принципиальное > > отличие от пп. 3 и 4 выше? > > Есть более простое решение - присоединиться к этому проекту: > > https://augeas.net/ > > рекомендуемые настройки хранить в виде дерева, которое будет просто > применяться к конфигурации через augeas. Каждый раз при обновлении пакета? И откатываться до обновления? Поясню, с какой целью я затеял этот разговор: два с половиной варианта (4, 3 и частично 2), указанных в исходном письме, создают одну "маленькую" проблему: после изменения конфигов пакеты невозможно нормально обновлять. Конечно, технически dist-upgrade проходит нормально. Вот только после него остаются одни *.rpmnew-файлы: ведь изменённые конфиги специально не заменяются новыми версиями из пакета. И правильно делают, скажет кто-то! Правильно, но только в том случае, если изменения в конфигах сделал администратор системы для себя (будучи "в сознанке"). Иное дело, преднастроенная система. Где-то по середине между этими крайностями, как мне думается, находится система, настроенная через конфигуратор (Альтератор, Альтератор 2.0). Поэтому давайте не будем торопиться с выбором того или иного augeas, а сперва подумаем, какие требования мы к нашей системе (и возможному решению вышеизложенной проблемы) предъявляем. Возможно я не прав, но как программисту мне кажется, что обслуживание того или иного набора специализированных модификаций конфигурационных файлов очень близко к сопровождению набора специализированных модификаций кода. Классический случай: в репозитории много кода и мало моих изменений. Они, эти изменения, точечные, но важные. Как я их храню, в виде ли отдельных патчей или прямо в дереве git, не важно --- если изменения точечные, то при обновлении кода в 90% случаев патчи приложатся без изменений, а git merge пройдёт автоматически. И вот мне думается, что в случае dist-upgrade по тому же принципу должны обновляться и конфигурационные файлы: новая "апстримная" версия приходит из пакета, а закреплённые за данной установкой изменения накладываются поверх неё. Если возникают проблемы --- сообщается администратору. Примерно так, насколько я помню, работает dist-upgrade в Debian. А вот есть ли там автоматический merge я забыл. В Fri, 11 Oct 2024 13:05:55 +0400 Евгений Синельников <sin@basealt.ru> пишет: > В этом инструменте предложено, по сути, писать грамматику для парсинга разных видов конфигов. Таким образом, кажется, что не нужно писать специальные парсеры конфигурации, а достаточно хранить изменения конфигурации в виде набора патчей. И откатывать-накатывать их до-после dist-upgrade. Кажется, в apt для этого предусмотрены хуки. Но можно пойти и иным путём: при обновлении устанавливать конфиг из пакета, а затем вызывать бакенд конфигуратора для внесения специализированных изменений. Насколько я помню по новой концепции, которую излагали Женя и его ребята, конфигурация хранится в некоем дереве настроек отдельно от конфигурационных файлов, а бакенды эту конфигурацию применяют к конфигурационным файлам. По-сути, конфигурация системы в этом случае дублируется, но пока примем это. Если так, то возникает возможность эту конфигурацию применять не однократно, а многократно, сперва к одной версии конфигурационного файла, а затем к обновлённой версии. Естественно, автоматический перенос настроек (хоть в виде патчей, хоть в виде backend reapply) можно делать только в том случае, если администратор не менял файл вручную. Значит за этим нужно как-то следить. Что может помешать backend reapply? Во-первых, нужно каким-то образом знать, что после обновления файла /etc/X, нужно вызвать бакенд Y. То есть знать, за какой файл какой бакенд отвечает. Во-вторых, я написал в своей жизни несколько бакендов для Альтератора и помню, что часто у меня получалось так: бакенд по команде "Apply" меняет сразу несколько конфигов! Это казалось логичным: пользователь в окошке сформулировал свои желания, а бакенд это окошко транслирует на один или несколько файлов --- в зависимости от ситуации. Однако, если мы хотим иметь возможность вторично "накатывать" изменения на конкретный обновлённый конфиг, то желательно, чтобы остальные файлы бакенд при этом не трогал. Возможно, ничего страшного и не случится от повторного применения настроек ко всем файлам, о которых знает бакенд, но с другой стороны, если уж продумывать новую архитектуру, стоит подумать о том, чтобы у бакендов в обязательном порядке была такая функция: "применить настройки к данному конкретному файлу". На мой взгляд, это необходимо дополняет соотношение /etc/X --> backends/Y. Таким образом мне кажется, что нужно поставить на контроль то, в какие файлы данному бакенду можно вносить изменения, а в какие нельзя. Но как это сделать? Выход, по-моему, ровно один: бакенд должен работать под nobody, и только тот код, который непосредственно трогает конфигурационные файлы должен работать под root! Перед тем, как внести изменение в файл, эта привилегированная часть обязана будет свериться с табличкой ACL, декларирующей, какому бакенду что можно трогать. И ещё проверить, что файл не редактировался вручную, то есть сторонними средствами. Если проектировать решение исходя из модели, которой Женя сейчас придерживается, то есть D-bus-based модели, то думается, на D-bus должны висеть интерфейсы, по возможностям аналогичные текущим /bin/shell-config и /bin/shell-ini-config, то есть умеющие редактировать файлы определённого формата.
next prev parent reply other threads:[~2024-10-15 21:03 UTC|newest] Thread overview: 8+ messages / expand[flat|nested] mbox.gz Atom feed top 2024-10-10 19:29 Paul Wolneykien 2024-10-11 5:42 ` Anton Farygin 2024-10-11 9:11 ` Anton Farygin 2024-10-15 21:03 ` Paul Wolneykien [this message] 2024-10-16 19:02 ` Leonid Krivoshein 2024-10-18 10:11 ` Konstantin Lepikhov 2024-10-18 8:54 ` [devel-distro] [JT] " Michael Shigorin 2024-10-18 11:24 ` Denis Medvedev
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20241016000311.73f7d145@legato \ --to=manowar@altlinux.org \ --cc=devel-distro@lists.altlinux.org \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: link
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