Всё про шаблоны в Кальке

Шаблоны в Calculate Linux являются крайне мощным и удобным инструментом по автоматическому напилингу системы. Одна бяда — они ужасно плохо документированы!!! Здесь будет собираться всё, что мне так или иначе получится накопать на эту тему.

Правильные ссылки

Шаблоны

Шаблоны Calculate

Переменные шаблонов

Встроенные переменные Calculate 2.2

Введение в шаблоны Calculate 2.2 часть 1

Введение в шаблоны Calculate 2.2 часть 2

Введение в шаблоны Calculate 2.2 часть 3

Выборочное отключение шаблонов

Расположение на файловой системе

/var/db/repos/calculate/profiles/templates/ — системные шаблоны (тут надо искать образцы для подрожания).

/var/calculate/templates/ — локальные шаблоны (сюда сваливаем собственные шаблоны).

/usr/lib/python3.12/site-packages/calculate/lib/format/ — здесь расположены обработчики форматов, т.е. тут можно посмотреть какие форматы шаблонов вообще существуют (что это такое указано ниже).

Применение шаблонов к пакету

Шаблоны применяются к пакету автоматически, в момент его установки (а точнее говоря, согласно условию в заголовке шаблона). Но иногда надо применить шаблоны без переустановки пакета. Делаем:

cl-core-setup -v -T local --pkg-name=nftables

Формат заголовка

Заголовок располагается в первой строке файла и начинается с magic-sequense # Calculate. После заголовка в этой же строке идёт набор параметров. Эти параметры указывают, как должен обрабатываться файл шаблона, куда будет складываться результат работы и т.п.

Параметры могут иметь вид имя_параметра=значение или имя_параметра (т.е. «флаговый» параметр, не имеющий значения)

Наиболее ходовые параметры, которые я использую в своих шаблонах:

format - задаётся формат файла шаблона. Согласно документации допустимы следующие форматы:

apache, kde, bind, postfix, proftpd, samba, procmail, ldap, dovecot, xml_xfce, xml_xfcepanel, xml_gconf, xml_gconf_tree, compiz, plasma, squid, dhcp, openrc, kernel, json, world - форматы файлов настроек распространенных приложений

bin - двоичный формат файлов

raw - сырой текст

patch - шаблон для применения регулярных выражений (использует специальный вид объединения patch).

diff - шаблон для наложения патчей, полученных командой diff

dconf - файл модификации настроек в пользовательской службе dconf

ldif - формат представления записей службы каталогов или их изменений в текстовой форме

contents - специализированный формат для изменения принадлежности файлов пакетам

backgrounds - специализированный формат для создания фоновых изображений

path - указывает директорию, где будет лежать результирующий файл

name - имя результирующего файла

append - режим слияния шаблона и имеющегося файла. Режим поумолчанию зависит от формата шаблона. Возможные значения:

join - объединяет файлы. Например, если в исходном конфиге и в шаблоне задаётся значение одной и той же переменной, то в результат пойдёт строка из шаблона, и расположена она будет там же, где была расположена строка в исходном конфиге. Если в шаблоне есть строки, для которых нет соответствующих строк в исходном конфиге, то строки из шаблона будут дописаны в конец результирующего файла. (См. шаблон для main.cf postfix'а)

before - вставляет содержимое шаблона в начало результата.

after - дописывает содержимое шаблона в конец результата.

replace - заменяет содержимое исходного файла на содержимое шаблона. (Это поведение поумолчанию, есди формат не указан.)

remove - удаляет указанный файл из системы (См. шаблон для phpX.Y/fpm.d/www.conf)

skip - шаблон пропускается. Удобно для «хранения» редко используемых настроек в общей коллекции шаблонов. (См. шаблон для NTP-серверов)

patch - шаблон для модификации файлов по регулярным выражениям. (См. шаблон для logrotate.conf)

clear - если шаблон описывает файл, его содержимое удалится (размер == 0). Если это шаблон директории, её содержимое (волженные файлы и директории) будет удалено.

diff - шаблон наложения патчей, полученных ранее командой diff (См. шаблон для dovecot)

link - путь к конфигурационному файлу, с которым объединяется файл шаблона.

symbolic - создаёт символическую ссылку на файл, указанный параметром «link». Имя симлинка собирается из path и name.

chmod -

chown - задание прав доступа и владельца

условие - задаёт условие (возможно составное) на применение шаблона.

Есть ещё некоторое количество параметров, которые я не использую и своего мнения на их счёт не имею.

Tracedump:

newBaseSize: 16pt
newBaseSizeInPt: 16