Ничего непонятно с calculate-templates

Hi,

Была очень удобная фича - etc-update, которая следила за тем, чтобы система при апрейте
не порушила случайно модификации пользователя. Я всегда ставил Gentoo в пример сбалансированого
подхода к управлению конфигурациями, в пику RedHat и многим другим с их “интеллектуальными” алгоритмами
по переносу конфигураций при апдейте пакетов. Но похоже что то сильно изменилось в последних версиях
Calculate, похоже удобство мейнтейнеров поставили выше удобства конечных пользователей и по файлам
появились надписи:

#------------------------------------------------------------------------------
 # Modified Calculate-install 2.2.19
 # Processed template files:
 # /usr/share/calculate/templates/install/1merge/xorg-server/X11/xorg.conf.d/keyboard.conf
 # For modify this file, create /etc/X11/xorg.conf.d/keyboard.conf.clt template.
#------------------------------------------------------------------------------

И после этого, при попытке модифицировать файл, он модицицируется, но живёт только до следующего апдейта.

Попытался порыться по сути вопроса. Есть описание языка темплейт:
http://www.calculate-linux.org/main/en/calculate_utilities_templates

Из него я понимаю что чтобы добавить какие либо строчки в конец файла их можно просто добавить как есть, обычным текстом, и всё будет хорошо. Но… есть вопрос по процедуре. Допустим, вот типовая операция, в файле:
/etc/X11/xorg.conf.d/keyboard.conf

Мне надо добавить строку:

Option "XkbOptions" "grp:shift_toggle"

И изменить строку:

Option "XkbLayout" "us"

на

Option "XkbLayout" "us,ru(winkeys)"

Как это сделать? Если просто записать файл, /etc/X11/xorg.conf.d/keyboard.conf.clt то Xorg сервер его не прочитает…
Или есть какая то утилита для генерации.

Предполагается ли то, что теперь для модификации любого системного файла мне надо писать сразу в 2:

  • /etc/X11/xorg.conf.d/keyboard.conf.clt - для Calculate Linux утилит чтобы они поняли что я менял файл
    и
  • /etc/X11/xorg.conf.d/keyboard.conf - для xorg системы?

Я попытался спросить на IRC, пару дней задаю вопросы никто не отвечает конкретно. Похоже данная фича плохо освещена в прессе.

Просьба. Большая - можно ли сделать небольшое руководство “для тупых” как предполагается в Calculate Linux
вносить изменения в конфигурации файлов в /etc/ так, чтобы они не тёрлись при апдейтах?

Вопрос #2 - можно ли как то вернуть механизм etc-update? Мне как обычному администратору и программисту намного
легче иметь дело с diff/patch и etc-update чем пытаться это автоматизировать. Мне то надо просто подправить строку в конфиге, неужели для этого теперь требуется осваивать новый язык программирования темплат?

P.S. Это читал: http://www.calculate-linux.ru/boards/16/topics/17741?r=17820#message-17820
но пока не помогло.

Как это сделать? Если просто записать файл, /etc/X11/xorg.conf.d/keyboard.conf.clt то Xorg сервер его не прочитает…

При следующем обновлении, отработает локальный шаблон /etc/X11/xorg.conf.d/keyboard.conf.clt, а не системные.

Только почему-то не работает ((

Честно говоря, лень разбираться, что к чему, но имею точно такую же проблему. В системе наличиствует /etc/X11/xorg.conf.d/keyboard.conf.clt, но никакого влияния на конфиги не оказывает почему-то. Приходится после каждого обновления ксорга переписывать конфиг вручную. Надоело…

При этом есть ещё /etc/hosts.clt - и он применяется как положено. Но зачем-то при каждой загрузке системы о_О

В системе наличиствует /etc/X11/xorg.conf.d/keyboard.conf.clt, но никакого влияния на конфиги не оказывает почему-то.

приведите текст этого файла

При этом есть ещё /etc/hosts.clt - и он применяется как положено. Но зачем-то при каждой загрузке системы о_О

сам задавался таким вопросом напуркуа после каждой загрузки его править? и также как и вы - там где требовалось создал шаблон.

И до сих пор нет ответа на вопрос: нет ли механизма принудительного создания конфига из шаблона? Это чтож теперь всегда прийдётся править 2 файла одновременно? Какой вообще смысл в шаблонах в таком варианте? Если всегда надо править 2 файла так это прямое дублирование информации, а это как известно - зло. Если дублировать прийдётся всегда то проще было бы и не придумывать эти шаблоны т к они не меняют конечный результат но добавляют сущности.

А если меняют - хотелось бы на простом примере понять как. Как мне действовать наиболее оптимально в случае моего примера с файлом /etc/X11/xorg.conf.d/keyboard.conf ?

Тему перенес в форум Шаблоны.

Была очень удобная фича - etc-update, которая следила за тем, чтобы система при апрейте не порушила случайно модификации пользователя. Я всегда ставил Gentoo в пример сбалансированого подхода к управлению конфигурациями, в пику RedHat и многим другим с их “интеллектуальными” алгоритмами по переносу конфигураций при апдейте пакетов. Но похоже что то сильно изменилось в последних версиях Calculate, похоже удобство мейнтейнеров поставили выше удобства конечных пользователей и по файлам

# etc-update никто не отменял, за тем исключением, что утилиты не создают файлы “._cfg”
# настройку утилитами можно в любой момент отключить, перейдя на gentoo-way с настройкой пакетов вручную и мониторя изменения утилитой etc-update
# данный пример является как раз исключением из правил, т.к. поддержки формата xorg в шаблонах нет, из-за чего файл переписывается, а не правится
# в чем здесь удобство мантейнеров не знаю, такое поведение как раз сделано для удобства конечных пользователей, обновляющих систему

Теперь что касается обновления xorg-server. Файл keyboard.conf не входит в состав пакета и проблема заключается в том, что emerge не связывает Ваш шаблон Clt с этим пакетом при обновлении.

Можно указать это принудительно, добавив к шаблону заголовок:

 # Calculate merge=x11-base/xorg-server

В будущем мы постараемся эту проблему решить. Но если Вы будете создавать Clt для новых файлов, просто добавляйте указание на пакет через опцию "merge".

И до сих пор нет ответа на вопрос: нет ли механизма принудительного создания конфига из шаблона?

Например так:

cl-core-setup --pkg-name=xorg-server

Приветствую, Александр:

Alexander Tratsevskiy wrote:

# настройку утилитами можно в любой момент отключить, перейдя на gentoo-way с настройкой пакетов вручную и мониторя изменения утилитой etc-update

О! А можно об этом по подробнее. Как это сделать?

И ещё вопрос. У меня не только keyboard.conf затирается но и другие файлы типа /etc/hosts. Писать всё в /etc/hosts.clt? Допустим поменял я /etc/hosts.clt, как для теста сгенерировать из него /etc/hosts ? Есть такой способ?

О! А можно об этом по подробнее. Как это сделать?

Так пожалуйста, удалите пакеты утилит.

И ещё вопрос. У меня не только keyboard.conf затирается но и другие файлы типа /etc/hosts.

Действительно, ещё одно исключение. В данном случае проще. Формат файла пока не поддерживается шаблоном, но он достаточно простой и его несложно будет добавить. Связан файл с пакетом baselayout, это можно увидеть по заголовку. И если раньше он настраивался практически только после установки, то теперь и при обновлении openrc. Если Вы скопируете изменения в /etc/hosts.clt, проблема будет решена.

Вчера ставил MySQL, файл /etc/mysql/my.cnf тоже переписался сверху без моего согласия, из за чего MySQL перестал работать. В общем мне совсем не нравится то что системные настройки авто-затираются. Живёшь как на бомбе - вчера потратил N времени на настройку системы, сегодня типа начинай с нуля…

Alexander Tratsevskiy wrote:

О! А можно об этом по подробнее. Как это сделать?
Так пожалуйста, удалите пакеты утилит.

Какой?
Вот этот?

avk3 ~ # equery belongs `which cl-core-setup`
 * Searching for /usr/sbin/cl-core-setup ... 
sys-apps/calculate-core-3.1.1-r1 (/usr/sbin/cl-core-setup -> /usr/sbin/cl-core)
sys-apps/calculate-core-3.1.1-r1 (/usr/sbin/cl-core)
avk3 ~ # 

И ещё вопрос. У меня не только keyboard.conf затирается но и другие файлы типа /etc/hosts.
Если Вы скопируете изменения в /etc/hosts.clt, проблема будет решена.

Ок я то скопирую но честно, совсем не понимаю смысла всего этого. Если всё надо писать в 2 места, почему не писать всё в /etc/hosts напрямую а потом утилиты восприняли бы /etc/hosts как template? Если уж так сложно организовать это архитектурно, почему нельзя сделать так, чтобы изменив файл в одном месте, я смог бы запустить какую то утилиту для его преобразования в конечный вариант. Я хочу избежать лишней работы, которую я по своей забывчивости могу и забыть сделать, и получу потом нерабочую систему в неподходящий момент времени. Например, если я редактирую файл /etc/conf.d/net я хочу быть уверенным в том, что после перезагрузски системы он не сотрётся в первоначальное состояние, и что ошибок в моей /etc/conf.d/net.clt конфигурации тоже нет. Единственный правильный способ это проверить - запустить полное преобразование. Как то типа:

$ compile_my_template /etc/conf.d/net
Creating /etc/conf.d/net.
Getting all available templates... 
  Found /etc/conf.d/net.clt
  Found /var/lib/layman/calculate/profiles/templates/3.1-beta/7_ac_install_system/1-migrate/openrc/conf.d/net
Compiling...
Done.
$ 

Есть такая возможность или прийдётся полагаться на везение?

Вчера ставил MySQL, файл /etc/mysql/my.cnf тоже переписался сверху без моего согласия, из за чего MySQL перестал работать.

my.conf не настраивается шаблонами

Какой?
Вот этот?

Перечень установленных пакетов утилит можно получить выполнив:

eix -Ic sys-apps/calculate

Ок я то скопирую но честно, совсем не понимаю смысла всего этого. Если всё надо писать в 2 места, почему не писать всё в /etc/hosts напрямую а потом утилиты восприняли бы /etc/hosts как template?

Конфигурационный файл играет ту же роль, что и шаблон. Утилиты преобразуют всё в XML формат, после чего объединяют файлы, меняя только необходимые настройки. Но так происходит только в случае использования поддерживаемых форматов. hosts пока к ним не относится.

К примеру, если Вы будете редактировать /etc/samba/smb.conf или /etc/postfix/main.cf при настройке сервера, Ваши настройки не будут ломаться и даже забэкапятся утилитой cl-backup для развертывания на новом сервере.

Например, если я редактирую файл /etc/conf.d/net я хочу быть уверенным в том, что после перезагрузски системы он не сотрётся в первоначальное состояние, и что ошибок в моей /etc/conf.d/net.clt конфигурации тоже нет.

В Calculate 2.2 была утилита cl-template, в качестве параметра которая принимала clt-ный файл. При желании мы можем её вернуть. Сейчас можно проверить настройки, например сэмулировав установку пакета, командой

cl-core-setup --pkg-name=..

Либо вызвав общие настройки, аналог выполняемого действия при установке системы:

cl-setup-system

P.S. keyboard.conf.clt пофиксили, теперь можно не указывать параметр merge.

Но так происходит только в случае использования поддерживаемых форматов. hosts
пока к ним не относится.

Логичнее было бы с моей т.з. для файлов, форматы которых не поддерживаются оставить проверенный механизм апдейта через dispatch-conf илиetc-update а не затирать изменения без возможности отката и бекапов. Вообще уничтожение системной информации - это бомба замедленного дейстия. Ну пишете файл сверху, так хотя бы backup сделайте… Но намного лучше в случае сомнений в правильности работы - просто вернуть всё на уровень etc-update.

Сделал вот следующее, хотя Linux у меня совсем новый, но всё таки:

avk3 ~ # emerge -up sys-apps/calculate-utilities

These are the packages that would be merged, in order:

Calculating dependencies... done!
[ebuild     U  ] sys-apps/calculate-lib-3.1.2 [3.1.1]
[ebuild     U  ] sys-apps/calculate-lib-2.2.31 [2.2.30-r1]
[ebuild     U  ] sys-apps/calculate-i18n-2.2.31 [2.2.30-r1]
[ebuild     U  ] sys-apps/calculate-i18n-3.1.2 [3.1.1-r2]
[ebuild     U  ] sys-apps/calculate-core-3.1.2 [3.1.1-r1]
[ebuild     U  ] sys-apps/calculate-desktop-3.1.2 [3.1.1]
[ebuild     U  ] sys-apps/calculate-install-3.1.2 [3.1.1]
[ebuild     U  ] sys-apps/calculate-console-3.1.2 [3.1.1]
[ebuild     U  ] sys-apps/calculate-update-3.1.2 [3.1.1]
[ebuild     U  ] sys-apps/calculate-console-gui-3.1.2 [3.1.1]
[ebuild     U  ] sys-apps/calculate-client-3.1.2 [3.1.1-r1]
[ebuild     U  ] sys-apps/calculate-utilities-3.1.2 [3.1.1-r2]
[ebuild     U  ] sys-apps/calculate-builder-2.2.31 [2.2.30-r7]
[ebuild     U  ] sys-apps/calculate-utilities-2.2.31 [2.2.30-r17]

Перегрузился:

# Снова авто стартует xdm. Хотя я уже несколько раз его выключал
командой:

rc-update delete xdm default

Вначале я грешил на память - типа думал я забыл. Но уже который раз приходится это делать…

Раньше, в предыдущем Calculate изменения в /etc/ выносились на уровень etc-update.
А сейчас пока что всё удаляется.
В CONFIG_PROTECT вроде всё ОК, /etc/ там:

avk@avk3 ~ $ emerge --info | grep 'CONFIG_PROTECT='                                                                               06:52:46
CONFIG_PROTECT="/etc /usr/share/config /usr/share/gnupg/qualified.txt /usr/share/openvpn/easy-rsa /usr/share/themes/oxygen-gtk/gtk-2.0 /usr/share/themes/oxygen-gtk/gtk-3.0"
avk@avk3 ~ $

# Ситуацию в которой переписался сверху my.cnf повторить не могу - после установки пакета файл снова не переписывается.
# Файл /etc/X11/xorg.conf.d/keyboard.conf затёрся уже в 5й или 6й раз, я уже просто проверяю его каждый раз перед запуском Xorg, на всякий случай. В этот раз он затёрся при установке последних утилит calculate.

Cистема стала совершенно неконтроллируемой и как вернуть контроль пока непонятно. Поломалась понятная мне метафора - раньше при установке пакетов мои конфиги сохранялись, сейчас они херяться, и это реально напрягает. Если я грохну все что называется calculate* – система продолжит работать точно? Не хочется этого делать, всё таки в caclulate есть определённо удобные вещи, мне вот понравилась автоматизация cl-kernel, но вот такие вот траблы с конфигурацией весьма неприятная штука. Я привык полагаться на Linux, а особенно Gentoo как на надёжную систему, котоая никогда без спроса не перетрёт конфиг. Я к тому же отвечаю за стратегическое развитие компании - или мы ставим всем calculate, или ставим чистый gentoo. Пока я склюняюсь ко второму варианту, каким бы менее удобным он не был из за причин потери контроля над ситуацией… :frowning:

Как его вернуть? Нельзя ли просто как то снова задействовать etc-update. Или единственный способ полечить эти проблемы - убить весь calculate suite?

Проблемы начались с Calculate Linux 13, до этого всё было Ок, конфиги мои не удалялись.

Alex V. wrote:

# Снова авто стартует xdm.

О, возможно он перетёрся в процессе того что я последовал совету и запустил cl-setup-system? Один раз я попробовал запустить эту программу, это реально медленно столько ждать чтобы увидеть изменения в своём конфиге.

  1. Снова авто стартует xdm. Хотя я уже несколько раз его выключал

Если выполнить ‘cl-core-setup --pkg-name xorg-server’, можно увидеть, как шаблоны настраивают ‘/etc/runlevels/default/xdm’:

 * Конфигурация утилитами Calculate системных настроек xorg-server
[==============================================================================================>]100% Time: 00:00:00
 * Утилиты Calculate изменили файлы:
 *      /etc/X11/xorg.conf
 *      /etc/X11/xorg.conf.d/keyboard.conf
 *      /etc/X11/xorg.conf.d/touchpad.conf
 *      /etc/conf.d/xdm
 *      /etc/init.d/xdm
 *      /etc/runlevels/default/xdm

Не могу сказать, что это недоработка. Этот же шаблон настраивает пакет и во время сборки системы. Удалить файл можно шаблоном /etc/runlevels/default/xdm.clt со следующим содержимым:

 # Calculate append=remove

Раньше, в предыдущем Calculate изменения в /etc/ выносились на уровень etc-update.
А сейчас пока что всё удаляется.

Раньше все новые файлы не были привязаны к пакету, сейчас они ему принадлежат:

 # equery b /etc/X11/xorg.conf.d/keyboard.conf
 * Searching for /etc/X11/xorg.conf.d/keyboard.conf ... 
x11-base/xorg-server-1.13.1 (/etc/X11/xorg.conf.d/keyboard.conf)
  1. Ситуацию в которой переписался сверху my.cnf повторить не могу - после установки пакета файл снова не переписывается.

Абсолютно точно, утилиты никогда не настраивали и не настраивают my.cnf.

  1. Файл /etc/X11/xorg.conf.d/keyboard.conf затёрся уже в 5й или 6й раз, я уже просто проверяю его каждый раз перед запуском Xorg, на всякий случай. В этот раз он затёрся при установке последних утилит calculate.

Для сохранения изменений в файле keyboard.conf нужен шаблон. В последнем обновлении утилиты корректно видят keyboard.conf.clt. Т.е. достаточно скопировать файл.

Если я грохну все что называется calculate* – система продолжит работать точно?

После установки системы, утилиты подвязываются на события: eix-sync (/etc/eix-sync.conf), emerge (/var/lib/layman/calculate/profiles/calculate/profile.bashrc), вход в сеанс kdm/gdm/lxdm (/usr/share/calculate/xdm/login.d). Если удалить пакеты утилит, вызовы будут игнорироваться. Останется всё кроме настроек.

О, возможно он перетёрся в процессе того что я последовал совету и запустил cl-setup-system? Один раз я попробовал запустить эту программу, это реально медленно столько ждать чтобы увидеть изменения в своём конфиге.

cl-setup-system работает медленно, т.к. в том числе запускает настройку grub. Проще узнать какому пакету принадлежит конфиг и выполнить cl-core-setup --pkg-name <ИМЯ>

**_

Если Вы работаете с несколькими машинами и у вас есть сервер CDS, все настройки проще перенести на него в директорию /var/calculate/remote/templates. Хранить в шаблонах можно всё, начиная от системных настроек и заканчивая настройками профиля пользователя.

Вернем традиционный способ обновления, через создание ._cfgXXX файлов. Собственно он слетел по той причине, что мы перенесли выполнение шаблонов из preinst в postinst. Есть свои плюсы и минусы в обоих случаях. Мы также рассматривали вариант использования обоих веток. Но тут тоже есть свои сложности + неудобство в делении настроек на две ветки.

Поскольку сейчас это доставляет столько неудобств, изменения внесем достаточно быстро.

Alexander Tratsevskiy wrote:

Поскольку сейчас это доставляет столько неудобств, изменения внесем достаточно быстро.

OK, спасибо Александр что уделяете моему случаю внимание :slight_smile: реально я очень доволен Calculate за исключением некоторых моментов, которые к счастью можно исправить. У нас он стоит в нескольких десятках инсталляций (на компах девелоперов), я пользуюсь gentoo уже лет 8 точно… Перешли на calсulate как более удобный для boostrap, но потом перелючаем профиль в
calculate:calculate/desktop/CLD/amd64/developer если машина быстрая. На медленных оставляем бинарный апдейты по умолчанию.

Вчера вот будни пока продолжаются - слетела конфигурация /etc/acpi/default.sh
и я (не зная этого) закрыл ноутбук, а он не выключился ;-( К утру батарея была на нуле, 3 часа заряджал. Хорошо никуди идти утром в воскресенье не надо.

Пока не пофиксили я нашёл способ как контроллировать изменения в /etc. Есть замечательная утилита dar, по аналогии с tar, но лучше для целей бекапа. Вот так я создал начальный образ /etc:

dar -c /mnt/bigfiles/etc.ref.dar -R /etc

А вот так я контроллирую что ничего не поломалось:

dar -c /mnt/bigfiles/etc.ref.dar -R /etc

Контроль желательно производить до и после перезагрузок.

Контроль (репост, ошибка сверзху):

dar -d /mnt/bigfiles/etc.ref.dar -R /etc

Обычно должно выглядеть так:

 --------------------------------------------
 1850 inode(s) treated
 0 inode(s) do not match those on filesystem
 0 inode(s) ignored (excluded by filters)
 --------------------------------------------
 Total number of inode considered: 1850
 --------------------------------------------

Утилита вот эта:

[I] app-backup/dar
     Available versions:  2.3.8 ~2.3.9 ~2.3.11 ~2.4.0^t ~2.4.2^t {acl dar32 dar64 doc gcrypt lzo nls ssl static static-libs}
     Installed versions:  2.3.8(09:16:59 PM 01/22/2013)(acl nls ssl -dar32 -dar64 -doc)
     Homepage:            http://dar.linux.free.fr/
     Description:         A full featured backup tool, aimed for disks (floppy,CDR(W),DVDR(W),zip,jazz etc.)

Пример с dar лучше в блог перенести. Доступ открыт если что.

Alexander Tratsevskiy wrote:

Вернем традиционный способ обновления, через создание ._cfgXXX файлов. Собственно он слетел по той причине, что мы перенесли выполнение шаблонов из preinst в postinst. Есть свои плюсы и минусы в обоих случаях. Мы также рассматривали вариант использования обоих веток. Но тут тоже есть свои сложности + неудобство в делении настроек на две ветки.

Поскольку сейчас это доставляет столько неудобств, изменения внесем достаточно быстро.

Чрезвычайно благодарен за осознание. Этот ад с шаблонами уже почти сподвиг меня вернуться на чистую Генту.

В новую версию утилит Calculate 3.1.3 интегрирована система бэкапа настроек, совместимая с Gentoo.
Альфа-версия утилит уже доступна.