2. Переменные шаблонов¶
- Переменные шаблонов
- Введение
- Типы переменных
- Переменные выполняемых действий
- События
- Настройка системы
- Установка системы на жесткий диск
- Установка системы на USB-Flash
- Установка системы в Builder-режиме
- Установка пакета
- Настройка профиля пользователя
- Подготовка squash-образа
- Подготовка ISO-образа
- Ввод компьютера в домен
- Вывод компьютера из домена
- Подготовка к сборке дистрибутива
- Настройка системы во время сборки
- Обновление системы во время сборки
- Установка пакета calculate-desktop
- Установка пакета calculate-client
- Удаление пакета calculate-desktop
- Удаление пакета calculate-client
- Значения переменных
- Изменение значений переменных
- Изменение значения переменной в командной строке
- Изменение значения через конфигурационный файл
- Использование переменных
- Вставка значений в шаблон
- Передача значения функции
- Условия в заголовках шаблонов
- Условные выражения
Введение¶
Утилиты Calculate содержат переменные, которые могут быть использованы в шаблонах. Каждый пакет утилит содержит свой набор переменных. Несмотря на то что переменные принадлежат разным пакетам, их имена уникальны. Для просмотра переменных - например, пакета calculate-install - с их значениями выполните:
# cl-install -v
Список переменных library:
------------------------------ --- ----------
Имя переменной Режим Значение
------------------------------ --- ----------
cl_autoupdate_set [r] off
cl_chroot_path [w] /
...
Список переменных install:
------------------------------ --- ----------
Имя переменной Режим Значение
------------------------------ --- ----------
ac_install_flash [r]
ac_install_merge [r] up
ac_install_system [r] up
cl_distfiles_path [w] /var/calculate/remote/distfiles
cl_image [r] /var/calculate/remote/linux/cld-11.3-x86_64.iso
...
Здесь видно, что утилита, входящая в пакет calculate-install, отобразила переменные как самого пакета, так и пакета calculate-lib, доступные утилитам других пакетов.
Типы переменных¶
Для удобства в именах переменных используется обозначение типа переменной, часто используется название пакета и может использоваться тип возвращаемого значения.
Всего существует семь типов переменных:
ac- переменные выполняемых действийcl- общие настройки утилитhr- настройки оборудованияld- атрибуты LDAPos- операционная системаsr- настройки сервисовur- информация о пользователе
Для примера: переменная cl_install_autoupdate_set относится к общим настройкам утилит, принадлежит пакету calculate-install и содержит одно из двух значений - on либо off.
Переменные выполняемых действий¶
Пакеты утилит содержат шаблоны настройки, сгруппированные по определенным действиям. Например, настройка профиля пользователя, настройка пакета при установке и т.д. Для того, чтобы определить, какие шаблоны следует накладывать, пакеты утилит содержат специальные переменные выполняемых действий.
calculate-installac_install_flash- настройка флешкиac_install_merge- настройка пакетаac_install_system- настройка системы при установке на HDD и USB-HDD
ac_desktop_desktop- настройка в профиле пользователя параметров, не зависимых от конфигурации системыac_desktop_live- настройка в профиле пользователя параметров, зависимых от конфигурации системыac_desktop_install- настройка пакета calculate-desktopac_desktop_merge- настройка пакета
ac_client_domain- настройка системы для работы в доменеac_client_merge- настройка пакета
ac_builder_iso- настройка iso-образаac_builder_squash- настройка squash-образа
ac_assemble_prepare- первичная настройка собираемой системыac_assemble_setup- настройка системы во время сборки
События¶
В зависимости от событий (например, установка пакета), утилиты выставляют значения переменных действий и накладывают шаблоны.
Ниже перечислены события, а также значения переменных действий, записанные через знак двойного равенства, принятый в условных выражениях шаблонов:
Настройка системы¶
Выполняется во время первой загрузки системы, загрузке с LiveCD, USB-Flash или USB-HDD, при выполнении команд cl-install --startup и cl-template -l all.ac_client_domain==up/downac_client_merge==upac_install_merge==upac_desktop_install==upac_desktop_merge==up
Установка системы на жесткий диск¶
Выполняется при установке системы командой cl-install.ac_install_merge==upac_install_system==up
Установка системы на USB-Flash¶
Выполняется при установке системы, если в качестве носителя используется USB-Flash cl-install.ac_install_flash==up
Установка системы в Builder-режиме¶
Выполняется при запуске cl-install --build.ac_install_merge==upac_install_system==up
Установка пакета¶
Выполняется во время установки программы emerge <название_пакета>.ac_install_merge==upac_desktop_merge==upac_desktop_install==upac_desktop_desktop==upac_desktop_live==upac_client_domain==up/downac_client_merge==up
Настройка профиля пользователя¶
Выполняется при запуске cl-desktop <логин_пользователя> во время входа в сеанс.ac_desktop_desktop==upac_desktop_live==up
ac_desktop_live==up
Подготовка squash-образа¶
Выполняется перед упаковкой в squash-образ cl-image iso или cl-image squash.ac_builder_squash==up
Подготовка ISO-образа¶
Выполняется перед созданием iso-образа командой cl-image iso.ac_builder_iso==up
Ввод компьютера в домен¶
Выполняется при вооде компьютера в домен командой cl-client <host>.ac_client_domain==upac_client_merge==up
Вывод компьютера из домена¶
Выполняется при выводе компьютера из домена командой cl-client -r.ac_client_domain==downac_client_merge==up
Подготовка к сборке дистрибутива¶
Выполняется во время подготовки к сборке дистрибутива, после распаковки stage-образа, командой cl-assemble.ac_assemble_prepare==up
Настройка системы во время сборки¶
Выполняется во время подготовки к сборке дистрибутива, после добавления оверлея Calcualte, командой cl-assemble.ac_assemble_setup==up
Обновление системы во время сборки¶
Выполняется перед сборкой пакетов в собираемой системе, командой cl-make -u или cl-make -U.ac_assemble_prepare==upac_assemble_setup==up
Установка пакета calculate-desktop¶
Выполняется при установке пакетаcalculate-desktop командой cl-desktop --install.
ac_desktop_install==upac_desktop_merge==up
Установка пакета calculate-client¶
Выполняется при установке пакетаcalculate-client командой cl-client --install.
ac_client_domain==up/downac_client_merge==up
Удаление пакета calculate-desktop¶
Выполняется при удалении пакетаcalculate-desktop командой cl-desktop --uninstall.
ac_desktop_install==downac_desktop_merge==up
Удаление пакета calculate-client¶
Выполняется при удалении пакетаcalculate-client командой cl-client --uninstall.
ac_client_domain==downac_client_merge==up
Значения переменных¶
Переменные могут содержать несколько типов значений:
- значение для подстановки используется для подстановки значения в шаблон;
Пример:os_locale_locale [r] ru_RU.UTF-8 os_net_allow [r] 10.0.0.0/24 os_net_ip [r] 10.0.0.131 os_x11_video_drv [r] radeon
- значение для условного выражения участвует в условных выражениях;
Пример:cl_uuid_set [r] on hr_video [r] ati os_install_linux_system [r] desktop os_install_locale_language [r] ru
- информация отображает текущие настройки системы;
Пример:os_net_interfaces_info [r] eth0 (DHCP)
- массив значений используется другими переменными или функциями.
Пример:cl_migrate_user [r] ['root', 'guest'] os_install_disk_format [r] ['swap', 'reiserfs', 'reiserfs', '', 'reiserfs'] os_install_disk_id [r] ['82', '83', '83', '5', '83'] os_install_disk_mount [r] ['swap', '/', '', '', '/var/calculate']
Переменные разбиты на типы условно. Одно и то же значение может соответствовать нескольким типам.
Изменение значений переменных¶
При обращении к переменной ее значение определяется программой на основании настроек системы, а также значений других переменных. Значения некоторых переменных можно изменить. Такие переменные отмечены буквой "w". Остальные переменные, доступные только для чтения, отмечены буквой "r". Пример:
cl_ver [r] 2.2.11 os_install_x11_composite [w] off
Изменить значение переменной можно либо из командной строки параметрами утилиты, либо сохранив значение в конфигурационном файле. Если переменная меняется в обоих местах, приоритет отдается командной строке.
Изменение значения переменной в командной строке¶
Для изменения значения переменной используйте конструкцию --set переменная=значение.
Пример:
# cl-install -v --filter os_install_net_hostname --set os_install_net_hostname=mylinux
Список переменных install:
----------------------- --- ----------
Имя переменной Режим Значение
----------------------- --- ----------
os_install_net_hostname [w] mylinux
Изменение значения через конфигурационный файл¶
Вы можете предопределить значения переменных в файле calculate2.env или, для более старых версий утилит, calculate.env. Пути к файлам находятся в переменной cl_env_path:
cl_env_path [r] ['/etc/calculate/calculate2.env', '/var/calculate/calculate2.env', '/var/calculate/remote/calculate2.env']
Приоритет распределяется от первой к последней записи. Т.е. переменная, измененная в файле /var/calculate/remote/calculate2.env, перепишет другие значения.
Пример содержимого файла calculate2.env:
[install] os_install_ntp = ntp0.zenon.net
Обратите внимание: переменная находится в секции [install], т.е. в зоне видимости переменных пакета calculate-install.
Использование переменных¶
Переменные - основа шаблонов. Их значения настраивают систему в зависимости от текущего состояния оборудования и определяют логику работы. Здесь мы рассмотрим все случаи использования переменных.
Вставка значений в шаблон¶
Для вставки значения переменной в шаблон используйте конструкцию #-имя_переменной-#.
Пример настройки Xorg сервера:
Modes "#os_install_x11_resolution#"
Передача значения функции¶
Значение переменной, заключенной в #--#, вычисляется и подставляется в шаблон в первую очередь. Если переменная будет записана в параметрах функции, для вычисления последней будет использоваться рассчитанное значение переменной.
Пример:
<entry name="paned_size" type="int" value="#-sum(ysize,,#-os_x11_height-# / 3)-#"/>
В примере функция sum получит три значения: параметр ysize, пустое значение и формулу для расчёта содержимого переменной os_x11_height (разрешение экрана по вертикали), поделенное на 3.
Условия в заголовках шаблонов¶
Заголовок файла шаблона может включать условные выражения, в случае успешного выполнения которых шаблон будет использоваться либо нет при настройке системы.
Пример заголовка шаблона с условием проверки системы:
# Calculate os_install_linux_system==server
Условные выражения¶
В настоящее время поддерживаются простые конструкции условных блоков. Условное выражение, состоящее из одной или более переменных (или функций), начинается с #? и заканчивается #. Далее следует блок текста, после чего завершающая конструкция из первой переменной условия, заключенной в #. Пример:
#?hr_laptop==# numlock on #hr_laptop#
или
#?os_locale_language==ru&&pkg(media-gfx/cldx-themes)!=# current_theme calculate_ru #os_locale_language#
Во втором примере в условном выражении участвует функция pkg(), и её значение сравнивается с пустотой. Условие будет выполнено, если в системе используется русский язык и установлен пакет media-gfx/cldx-themes.