Шаблоны это просто

Многих пользователей Gentoo пугают шаблоны Calculate, постепенно со всех сторон берущие власть над системой. Почему же мы так активно начинаем их использовать?

Основных причин три:
# Требования к системе постоянно растут, при этом стандартные средства по управлению системой исчерпаны.
# Шаблоны используют единый формат, изучив который разобраться в их работе не составит труда.
# Шаблоны можно использовать для решения неограниченного числа задач.

Итак, что нового появилось в Calculate Linux 13.

{{TOC}}

  1. Новый механизм формирования зависимостей состава пакетов дистрибутива

С одной стороны мы избавились от нелюбимых многими мета-пакетов, с другой стороны встал вопрос, как же теперь формируется world (/var/lib/portage/world). Если шаблонами, то становится ещё более непонятно. Это действительно так, потому что логика, реализуемая в шаблонах, может быть абсолютно любой. Шаблоны самодостаточны, чтобы строить свои сценарии настройки системы.

Мы перешли к формированию world при помощи шаблонов по следующим причинам:

# Мета-пакеты показали своё неудобство в использовании. Чтобы удалить один пакет из базового набора программ, нужно отключить мета-пакет при помощи USE-флага, после чего добавить в world те пакеты, которые нужно оставить. Это ужасно.
# Сеты удобнее описывать, но они не достаточно гибкие без поддержки USE-флагов. И главное, сеты обладают той же проблемой.
# До использования мета-пакетов был успешный опыт формирования шаблонами world-файла на этапе сборки системы.
# Шаблоны далеко продвинулись с тех пор. Появилось событие выполнения шаблонов при обновлении портежей (выполнение eix-sync).

Итак, в CL 13 world-файл формируется на этапе сборки системы и содержит номер версии подборки софта. Посмотреть номер версии вы можете в файле /etc/calculate/ini.env:

[update]
world = 3

Причиной использования мета-пакетов была возможность связывать пакеты программ в дистрибутиве так, чтобы всегда была возможность вносить изменения - добавлять, удалять или заменять софт. Эта особенность была сохранена. Используя событие обновления портежей, шаблоны вносят правки в world, добавляя, удаляя или меняя софт. Работать будет это с учётом выполненных пользователем изменений. К примеру, если вы удалите Audacious, вам уже не будет предложен другой проигрыватель аудио файлов.

Например обновление до 3-й версии удалит из world пакеты net-wireless/madwifi-ng и net-wireless/madwifi-ng-tools, замаскированные в портежах мантейнерами Gentoo. В этих пакетах уже нет надобности, т.к. драйвера были перенесены в ядро. Наличие замаскированных пакетов в world привело бы к неприятным блокировкам при обновлении системы.

Для восстановления оригинального world-файла, достаточно выполнить ‘cl-update --rebuild-world’.

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

/var/lib/layman/calculate/profiles/templates/3.1/6_ac_update_sync/world
  1. Новые шаблоны формирования основных приложений

На нижней панели рабочего стола вы видите подборку из основных программ. Эти приложения добавляются на панельку через desktop-файлы иконок, находящиеся в директории /usr/share/applications. К сожалению, частенько эти файлы переименовываются либо разработчиками программ, либо мантейнерами Gentoo. Бывают случаи, когда мы сами заменяем одно приложение на другое. Чтобы избежать исчезновения из панельки программы при очередном обновлении системы (не забывайте Calculate имеет непрерывный цикл обновления), были созданы дефолтные иконки приложений. Файлы приложений начинаются со слова calculate и содержат в имени тип приложения (например calculate-browser.desktop).

К выходу CL 13, мы переписали шаблоны настройки приложений.

Проблемы, которые удалось решить:

  • настройка дефолтного приложения в случае удаления текущего
  • настройка дефолтного приложения как приложения по умолчанию для открытия поддерживаемых форматов файлов.

Как и раньше, дефолтные приложения хранятся в /etc/calculate/ini.env, пример:

[desktop]
browser = chromium
mail = claws-mail
chat = xchat
...

Вы можете провести эксперимент. Установите Firefox, затем удалите Chromium. Для CLDX потребуется перезайти в сеанс. Вуаля, новая иконка красуется в нижней панели вместе с обновлением /usr/share/applications/mimeapps.list. Вся логика настройки описана в шаблонах, на момент написания статьи находящихся в директории:

/var/lib/layman/calculate/profiles/templates/3.1/2_ac_install_merge/Desktop

Сразу после выхода CLDX 13 в портежах появилась новая версия Terminal 0.6.0. Теперь это приложение не Terminal.desktop, а xfce4-terminal.desktop. Пакет также сменил своё название с x11-terms/terminal на x11-terms/xfce4-terminal (см. /usr/portage/profiles/updates/4Q-2012). Путь к файлу настроек приложения также изменился! Кто-нибудь заметил это? Если нет, значит шаблоны выполнили свою работу безупречно.

  1. Ревизии системы

В Calculate Linux 13 было введено понятие ревизий. Номер ревизии системы можно увидеть в параметре 'rev' файла /etc/calculate/ini.env:

[update]
rev = 1

Ревизии обновляют систему до актуального состояния, внося точечные правки, столь необходимые для беспроблемного обновления системы от версии к версии. Ревизии пришли на смену шаблонам, завязанным на обновлении определённых мета-пакетов. Нумерация ревизий не привязана ни к релизам, ни к версиям сборки. Непосредственно перед выходом CL 13 была создана первая ревизия, устраняющая проблему привязки файла /usr/share/applications/mimeapps.list к пакету x11-base/xorg-server.

Этот файл удобен тем, что он связывает дефолтные приложения со своими типами файлов. Раньше этот файл создавался шаблоном во время установки пакета x11-base/xorg-server и закреплялся за ним в системе. Сейчас проработан целый механизм настройки ярлыков запуска и дефолтных программ. Переустановка этого пакета повлекла бы за собой удаление настроек. Ревизией мы удалили привязку файла настроек с пакетом.

На данный момент ревизии хранятся в директории:

/var/lib/layman/calculate/profiles/templates/3.1/6_ac_update_sync/revision

Выводы

Как вы могли заметить, многие настройки вынесены в /etc/calculate/ini.env. Этот файл, в отличие от находящегося в той же директории calculate.env, хранит не значения переменных, а настройки шаблонов. Шаблоны сами считывают и сохраняют свои настройки в этом файле. Таким образом, весь необходимый функционал в шаблонах присутствует. Любую логику вы можете построить сами, используя шаблоны Calculate.

Подытоживая, хочется обратить внимание, что только портежи создают ту уникальную возможность, сохраняя роллинг-релизную модель обновления системы, своевременно добавлять поддержку новых программ, оставляя за собой право где-то ускорить, а где-то по необходимости затянуть обновления пакетов.

А есть какой-нибудь GUI к шаблонам? Чтобы сразу всё централизованно управлялось? С какими-нибудь минимальными настройками, типа “вернуть всё как было”?

Просто если честно, я не совсем понимаю логику управления шаблонами. Что именно надо менять и главное “где”, чтобы всё работало как мне захотелось?

Я понимаю, что если “знать”, как это работает и какие настройки применяются, то всё просто… но как если не знаешь? Я вот даже не знаю с чего начать копать? Что делают шаблоны, что они должны делать? Из этой заметки я понял, что шаблоны могут многое, но ни названия файлов, ни примеры меня не просветили.

Даже что такое “шаблоны” я не совсем понял. То есть, я знаю что это слово значит вообще, но я не знаю, что оно значит в Calculate. В общем, хотелось бы узнать:

1) Что конкретно можно сделать с помощью шаблонов (желательно с простейшими примерами).
2) Где находятся все файлы шаблонов (которые на данный момент уже есть в системе) и что они делают.
3) Что такое шаблоны (понятно, что это файлы настройки системы, но как они работают?).
4) Аналоги шаблонов в других Gentoo (или не Gentoo) дистрибутивах.
5) Какова структура шаблонов (например, главные конфигурационные файлы этой системы есть или нет?).

многие настройки вынесены в /etc/calculate/ini.env.

вот например эта фраза прямо относится к пункту 5-му… она подразумевает, что мы знаем где остались все оставшиеся настройки шаблонов, которые не в ini.env, так вот, признаюсь, мне неизвестно где другие настройки… хотелось бы узнать, да неоткуда (или плохо искал?)…

В документации по шаблонам ( http://www.calculate-linux.ru/main/ru/calculate_utilities_templates ) вроде бы всё сказано, но опять же, на языке специалиста для специалистов. Подразумевается, что начальные знания по шаблонам пользователи уже получили и готовы их применять и им не хватает только знаний по отдельным функциям и правилам применения.

присоединюсь к просьбе - дать простейшие примеры использования шаблонов, особенно в cl-builder - для сборки livedvd полностью настроенным в т ч с юзерскими настройками и хомяком системы установленным в builder режиме…

А есть какой-нибудь GUI к шаблонам?

GUI нет, т.к. это всё равно что делать GUI для Bash - довольно трудоёмкая задача.

С какими-нибудь минимальными настройками, типа “вернуть всё как было”?

Шаблоны пользователя находятся в директории /var/calculate/templates и(или) /var/calculate/remote/templates. Чтобы вернуть как было, достаточно удалить файлы из директории.

Просто если честно, я не совсем понимаю логику управления шаблонами. Что именно надо менять и главное “где”, чтобы всё работало как мне захотелось?

Я тоже не знаю, что Вы хотите менять. Определите цель и задайте вопрос на специализированном форуме.

Я вот даже не знаю с чего начать копать? Что делают шаблоны, что они должны делать? Из этой заметки я понял, что шаблоны могут многое, но ни названия файлов, ни примеры меня не просветили.

Примеры я писал немного ранее, найти можно по тэгу templates. Информация могла немного устареть, но принцип станет понятен. Либо посмотреть на упомянутом форуме.

По поводу builder-а имеет смысл раскрыть его тему после миграции пакета calculate-builder на версию 3.1. В новой версии появится больше возможностей по встраиванию своих шаблонов.

Про описание понял, напишу.

ждем)))) описания.
так же ждем переезда builder на версию 3.1 - когда состоится переезд? есть хоть какие то сроки мировозренческие?

Впереди еще несколько задач, например cl-update. Похоже, что сейчас как никогда пользователям нужна утилита обновления, читающая лог emerge для выполнения необходимых действий, GNOME 3.6, обновление calckernel. Далее calculate-assemble и calculate-builder, чтобы закончить обновление утилит 2.2 и приступить к серверным. Как-то так.