{{TOC}}
Перемещаемые профили
Пока нет названия для чего-то нового, приходят в голову разные варианты. Вот и эту главу решил назвать “Перемещаемые профили”. Перемещаемые профили системы - это то, что ляжет в основу нового дистрибутива Calculate Linux 14.0.
Как это иногда бывает, для подготовки нулевой версии мы задерживаем релиз на неопределённый срок. Впереди много работы, важно задокументировать все моменты, т.к. главная особенность CL14 будет рассчитана на продвинутых пользователей.
Работа над новой версией CL14 уже началась, но вестись она будет в отдельном перемещённом профиле - дистрибутиве под рабочим названием “AcoolA”. Дистрибутив будет наследовать профиль CLDX, тестируя новый функционал. Как только появится поддержка перемещаемых профилей в утилитах, тестовый дистрибутив появится в свободном доступе.
Преимущества перемещаемых профилей
В настоящее время Calculate Linux использует один оверлей Calculate, в котором описаны профили дистрибутивов - флаги, маски, переменные и т.д., а так же пакеты, шаблоны и переменные утилит. Это удобно, если разработка ведётся централизованно одной командой разработчиков. Создание какого-то ответвления, даже использование сторонних оверлеев просто не предусмотрено утилитами. В итоге все хранят свои шаблоны в образе системы, в крайнем случае подключая локальный репозиторий.
CL14 будет иметь не один, а два оверлея: базовый Calculate и оверлей дистрибутива Distros. В Distros будут перемещены профили дистрибутивов. По аналогии с репозиторием Distros можно будет создавать свои версии дистрибутива просто склонировав его и изменив на своё усмотрение. Название оверлея, разумеется, может быть изменено.
Что содержит профиль дистрибутива? - все отличия конкретного дистрибутива от профиля “desktop”, наследуемого из оверлея Calculate. Почему именно “desktop” и почему из оверлея Calculate? Оверлей Calculate содержит уже достаточное кол-во преднастроенных переменных, которые не нужно будет каждый раз копировать и поддерживать в своём форке. Помимо этого Calculate содержит дерево шаблонов, которые удобно брать за основу. Профиль “desktop” удобно наследовать, т.к. он оптимизирован для графического окружения, содержит настройки ядра, размаскировки определённых пакетов, например libreoffice. Удобно в своей системе использовать готовый репозиторий бинарных пакетов, где как минимум версии пакетов будут совпадать.
Благодаря перемещаемым профилям вы сможете:
- Хранить и использовать все свои изменения, начиная от состава пакетов и заканчивая ebuild-ами и шаблонами в отдельном публичном репозитории.
- Использовать наработки других пользователей.
- Участвовать в коллективной работе над различными версиями дистрибутивов.
Новая система обновлений
В данный момент, чтобы избежать коллизий при обновлении портежей, когда версия пакета, отмеченного в оверлее стабильным из портежей удаляется, а новая ещё не размаскирована, портежи обновляются в Git-е одновременно с оверлеем Calculate. В CL14 обновление будет происходить по другому. Портежи будут синхронизироваться по крону 2-3 раза в сутки. Оверлей Calculate будет обновляться по мере внесения изменений. Профиль же дистрибутива при обновлении будет ссылаться на определённые версии портежей и оверлея Calculate. Выступая в роли разработчика дистрибутива, вы будете пропускать через себя все коллизии при обновлении, оставляя пользователям разрешённые зависимости.
Если проект с дистрибутивом перестаёт поддерживаться - его можно форкнуть, если это временно, можно будет настроить обновление всегда до свежей версии портежей и вручную решать зависимости, продолжая использовать профиль дистрибутива как основу. По всей видимости в настройках будет задан временной интервал, по истечении которого при неактивности разработчика дистрибутива, обновление перейдёт до свежих версий оверлея Calculate и портежей.
Утилита cl-update, впервые появившаяся в пакете calculate-update будет отвечать за обновление системы. В неё перейдёт функционал из calculate-assemble. То, что выполняется автоматически на протяжении нескольких лет при сборке дистрибутивов CL, в виде обновления библиотек perl, python и т.д. при обновлении пакетов, можно будет использовать в своей системе при обновлении. В начале cl-update не будет учитывать пользовательские изменения флагов и масок, чтобы избегать коллизий, в будущем, если получится, можно будет добавить и другие режимы работы. Для cl-update появится и графическая составляющая. Говоря другими словами, CL14 сможет обновлять себя через графическое приложение, открываемое через иконку в трее. Так как при исопользовании бинарных пакетов важно своевременно выполнять синхронизацию портежей, cl-update при вызове будет обновлять портежи и оверлеи.
Calculate-assemble вместо Calculate-builder
В CL14 мы решили отказаться от поддержки интерактивной сборки системы, поддержка которой ведётся с 2009 г. Вместо этого усилия будут сосредоточены на функционале calculate-assemble, который начнёт использовать наработки calculate-builder, а именно поддержку слоёной файловой системы aufs. Для того, чтобы быстро внести изменения в систему вам не нужно будет её устанавливать специальным образом, вы просто подмонтируете iso образ в текущий раздел, внесёте изменения и запакуете. Утилиты из calculate-assemble сами подготовят обновление для вашего репозитория, если вы являетесь разработчиком или просто храните свои настройки в Git.
Предстоит много поработать над calculate-assemble, добавив поддержку графического клиента.
Другие полезные изменения
Разумеется мы не спроста отказались от builder-режима загрузки. CL14 будет собирать initramfs при помощи Dracut. В отличие от genkernel он модульный, поддерживает udev, plymouth, загрузку образа из iso. Чтобы не усложнять код и не дублировать функционал, часть из которого перейдёт в calculate-assemble, в dracut будет внесено минимальное количество изменений, без поддержки builder-режима. Ядра calculate-sources будут собираться также без использования genkernel.
Используя dracut можно будет наконец добавить поддержку загрузки нескольких систем с флешки, загружая систему из скопированных на неё iso образов.
То что можно увидеть уже сейчас, это обновлённый менеджер входа в сеанс lightdm, используйемый в CLDX. Теперь для каждого пользователя задаётся иконка в виде смешной рожицы. Почему бы и нет? Мы (компания Калкулэйт) более года используем на рабочих местах CLDX. После перехода с CLD при входе в сеанс перестали отображаться фотографии пользователей. После ускорения загрузки и в CLD фотографии пользователей также исчезли, т.к. сеть поднимается позже запуска xdm. Сейчас фотографии отображаются в обоих десктопах. Если сотрудник успел поработать, его фото кэшируется на локальном ПК.
Сегодняшним обновлением все версии Calculate Linux обзавелись tmux-ом. В CDS и CMC screen также заменён на tmux. Мы потратили около недели на изучение настроек как screen, так и tmux, доведя их до удобного вида и исправив некоторые недоработки. Tmux удалось настроить в стиле кальки со статусной строкой сверху. Конечно это послужило последним аргументом в выборе tmux-а Не смотря на то, что screen не будет предустановлен в систему, его настройки с интерфейсом схожим с tmux также поддерживаются теперь шаблонами.
Голосование, проведённое в VK порадовало. На данный момент 34 пользователя используют screen/tmux, 27 возможно знают, по крайней мере хотят попробовать. VK это не весь мир, умножив на 2, чтобы учесть остальных, получим 100 продвинутых пользователей кальки. Неплохо!
Обращусь теперь к продвинутым пользователям. Много моментов остаются незамеченными, например кол-во цветов в xfce4-terminal. После следующего обновления их будет 256. Слава ревизиям! Уверен это мало кому нужно, но тем не менее, если вы знаете и исправили узкие места, пишите, Сделаем кальку удобней!