Создание своего профиля в Calculate Linux

{{TOC}}

Формирование профиля системы в Calculate Linux 14

Как правило, любой продвинутый пользователь настраивает gentoo-based систему под себя. Обычно, сюда входят настройки опций сборки пакетов, флаги компиляции, состав пакетов и т.д. Calculate не ломает обратную совместимость, предоставляя весь богатый функционал портежей. Настройки пакетного менеджера задаются при помощи профиля дистрибутива из оверлея Calculate.

Профиль дистрибутива CLDX 13:

Calculate (calculate/desktop/CLDX) -> Portages

Здесь видно, что все настройки профиля Calculate Linux хранятся в оверлее, а за основу взят оригинальный профиль Portage, модифицируемый профилем под особенности дистрибутива.

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

В итоге, профиль открывает поистине богатый функционал, отвечая за настройки буквально всего, начиная от настроек портежей и утилит Calculate и заканчивая формированием состава пакетов дистрибутива, управляемых при помощи шаблонов. В профиле можно хранить свои ebuild-файлы, настройки программ, патчи, флаги сборки и т.д. Перечень поистине колоссальный.

В CL14 мы решили пойти дальше, и создали инструменты, при помощи которых пользователь мог бы с лёгкостью создать и интегрировать свой профиль с системой. Для этого оверлей Calculate был разделён на два: оверлей “Calculate”, включающий только базовые профили (desktop и server), шаблоны и ebuild-ы, а так же оверлей дистрибутива “Distros”, включающий профили дистрибутивов (CLD, CLDX, CLS, CMC, CDS и CSS).

Профиль дистрибутива Calculate Linux Desktop 14 XFCE:

Distros (CLDX) -> Calculate (desktop) -> Portages

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

MyOverlay (Desktop-X) -> Calculate (desktop) -> Portages

Где: MyOverlay и Desktop-X - название оверлея и короткое имя дистрибутива. Имена взяты произвольно.

Другим вариантом можно создать новый профиль, наследующий профиль одного из дистрибутивов оверлея Distros. В этом случае схема наследования профиля будет такой:

MyOverlay (Desktop-X) -> Distros (CLDX) -> Calculate (desktop) -> Portages

С точки зрения портежей, логика осталась прежней, она лишь разделилась на несколько оверлеев.

Смена профиля

Для того, чтобы опробовать новые возможности, следует перейти на Calculate Linux 14. В ближайшее время обновление будет доступно для CL13.

В качестве примера в GitHub есть репозиторий lautre76 с профилем дистрибутива “Desktop-X”.

Помните, 9 месяцев назад мы написали статью Быстрый старт в GitHub ? Теперь она может пригодиться!

Профиль наследует настройки CLDX. Соответственно, он будет отличаться от стокового дистрибутива только теми изменениями, которые вы в нём укажете.

Для смены профиля в CL14 используйте команду cl-update-profile. По умолчанию, утилита работает с профилями текущего оверлея. Выполнение команды cl-update-profile list покажет текущий и доступные профили оверлея:

  [CLD]   distros:CLD/amd64
  [CLDX]  distros:CLDX/amd64 *
  [CLS]   distros:CLS/amd64
  [CMC]   distros:CMC/amd64
  [CDS]   distros:CDS/amd64
  [CSS]   distros:CSS/amd64

Для того, чтобы указать профиль из произвольного репозитория, добавьте параметр “–url”:

cl-update-profile --url=git://github.com/lautre76/overlay.git list

Для GitHub можно использовать сокращённый формат:

cl-update-profile --url=github:lautre76 list

В итоге, вы увидите доступный на данный момент тестовый профиль:

  [Desktop-X]  lautre76:Desktop-X/amd64 *

Переключиться на новый профиль можно выполнив:

cl-update-profile --url=github:lautre76 Desktop-X

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

cl-update-profile --url=github:lautre76

Пример подключения профиля из стороннего репозитория:

 # cl-update-profile --url=github:lautre76 Desktop-X
Репозиторий
 * Название репозитория: lautre76
 * Ветка репозитория: master
Профиль
 * Профиль системы: lautre76:Desktop-X/amd64
 * Название дистрибутива: Lautre Desktop-X 14
 * Используемые репозитории: 
+---------+--------------------------------------------+
|Название |URL                                         |
+---------+--------------------------------------------+
|lautre76 |git://github.com/lautre76/overlay.git       |
|distros  |git://git.calculate.ru/calculate/distros.git|
|calculate|git://git.calculate.ru/calculate/overlay.git|
|portage  |git://git.calculate.ru/calculate/portage.git|
+---------+--------------------------------------------+

Запустить процесс? (Yes/No):

Хотите сменить название системы отображаемое в консоли? За формирование ‘/etc/issue’ отвечает пакет sys-apps/baselayout. Перенастройте пакет, чтобы внести изменения:

cl-core-setup --pkg-name=baselayout

Чтобы увидеть изменения в загрузчике, выполните `cl-setup-boot`.

Состав профиля

Здесь я перечислю несколько файлов, которые вы увидите в профиле из примера.

Для наследования портежами eclass-ов, перечислены наследуемые профили:

cat /var/lib/layman/lautre76/metadata/layout.conf
masters = distros calculate gentoo

Название репозитория (для GitHub рекомендуется использовать тоже имя, что и имя вашей учётки):

cat /var/lib/layman/lautre76/profiles/repo_name
lautre76

Перечень доступных профилей:

cat /profiles/profiles.desc
amd64           Desktop-X/amd64            stable
x86             Desktop-X/x86              stable

Чтобы иметь возможность использовать шаблоны из своего репозитория, следует, соблюдая порядок, указать название и пути к шаблонам в переменных ‘cl_template_location’ и ‘cl_template_path’. Установка ‘cl_update_rep_name’ и ‘cl_update_rep_url’ укажет на базовые репозитории для обновления:

cat /profiles/calculate.env
[main]
cl_template_location = calculate,distros,lautre76,local,remote
cl_template_path = /var/lib/layman/calculate/profiles/templates,/var/lib/layman/distros/profiles/templates,/var/lib/layman/lautre76/profiles/templates,/var/calculate/templates,/var/calculate/remote/templates

[update]
cl_update_rep_name = portage,calculate,distros,lautre76
cl_update_rep_url = git://git.calculate.ru/calculate/portage.git,git://git.calculate.ru/calculate/overlay.git,git://git.calculate.ru/calculate/distros.git,git://github.com/lautre76/overlay.git

Непосредственно в директории профиля дистрибутива можно указать его название (полное имя, модификация, короткое имя):

cat /var/lib/layman/lautre76/profiles/Desktop-X/calculate.env
[main]
os_linux_name = 'Lautre Desktop-X'
os_linux_subname = ''
os_linux_shortname = Desktop-X

Через ‘parent’ вы указываете наследование директорий при формировании профиля. Здесь видно, что в начале берутся настройки из репозитория Distros (CLDX).

cat /var/lib/layman/lautre76/profiles/Desktop-X/amd64/parent
../../../../distros/profiles/CLDX/amd64
..

Формирование world файла

Наполнение /var/lib/portage/world пакетами происходит при помощи шаблонов. В CL13 для этого выполняется проверка на короткое имя дистрибутива (os_linux_shortname). В случае смены имени на новое, шаблоны пришлось бы полностью переносить в свой оверлей. Для решения этой проблемы, в CL14 была добавлена новая переменная “main.os_linux_pkglist” и доработана функция in(), для поддержки сравнения значений массива с массивом.

Как это работает, можно посмотреть выполнив:

cl-core-variables-show --filter pkglist
 * Список переменных
+---------------------+-----+------------+-------------------+
|Переменная           |Режим|Расположение|Значение           |
+---------------------+-----+------------+-------------------+
|main.os_linux_pkglist| wl  |            |base,CLDX,Desktop-X|
+---------------------+-----+------------+-------------------+

Здесь видно, что переменная содержит массив значений: “base”, “CLDX” и “Desktop-X”. Переменная доступна для записи.

Чтобы сгенерировать новый world файл, включая изменения в шаблонах Desktop-X, выполните:

cl-update --rebuild-world

Корпоративные пользователи

Следует отметить одну особенность использования своего профиля в системах, работающих в локальной сети и использующих единую систему авторизации Calculate Directory Server.

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

/var/calculate/server-data/samba/profiles/unix/LOGIN/SHORTNAME

Где LOGIN - учётная запись пользователя, SHORTNAME - короткое имя дистрибутива.

Обратите внимание, если вы создаёте отличное от используемого имя дистрибутива, скопируйте профиль под новым именем, либо установите значение переменной client.cl_profile_all_set в значение “on” в файле “/var/calculate/remote/calculate.env” на сервере. В этом случае, профили пользователей будут храниться в единой директории “all”. Потребуется также скопировать их из старых путей.

Проверить значение переменной, можно выполнив:

 # cl-core-variables-show --filter cl_profile_all_set
 * Список переменных
+-------------------------+-----+------------+--------+
|Переменная               |Режим|Расположение|Значение|
+-------------------------+-----+------------+--------+
|client.cl_profile_all_set| wb  |   remote   |off     |
+-------------------------+-----+------------+--------+

Использовать различные директории хранения профиля пользователя в случае использования разных дистрибутивов на наш взгляд является лучшим решением. Особенно это выглядит очевидным, при использовании таких дистрибутивов, как CLD и CLDX, где состав пакетов заметно отличается. В случае же использования сетевого компьютера, чем меньше профиль, тем быстрее пользователи входят в сеанс.

Заключение

В Calculate Linux использование своего оверлея это не просто ряд ebuild-файлов, необходимых вам в работе, которые вы переносите в свой gentoo-оверлей, чтобы иметь возможность устанавливать необходимый софт. Это так же не просто изменение свойств пакетного менеджера. Подключение своих шаблонов даёт полный контроль над настройками софта, как системного, так и пользовательского. Постепенный перенос настроек в шаблоны позволит с легкостью создавать новые сеансы с настройками изменёнными под ваши предпочтения. Возможности только открываются…

Ура! Наконец-то :slight_smile:

СПАСИБО Большое за работу.

Теперь ждем обновленный <> или ему альтернативу!

а как быть если я хочу свой профиль локально (без гита и пр) … опять переделывать ваши утилиты ?)

а как быть если я хочу свой профиль локально (без гита и пр) ?

/etc/portage/
/var/calculate/templates/

Alexander Tratsevskiy писал(а):

а как быть если я хочу свой профиль локально (без гита и пр) ?

/etc/portage/
/var/calculate/templates/

а … значит можно сидеть на старом )
ps. пока cl-assemble не сделаете новый :slight_smile:

Поддержка у cl-assemble сборок в новом формате уже есть. Стейджи же собираются.

Alexander Tratsevskiy писал(а):

Поддержка у cl-assemble сборок в новом формате уже есть. Стейджи же собираются.

Хм… наверное что-то изменилось в логике cl-assemble.
Параметр p - что он значит? Раньше это был профиль, теперь справка говорит что это какой-то ID…
Далее, при запуске сборки говорит что пустой System Profile и будет собрана система None:

calculate-14 ~ # cl-assemble --no-buildpkg -d /dev/sdb1 -p CLDX --iso /var/calculate/remote/linux/cldx-14-i686.iso 
 * Preparing for assemble Calculate Linux
System information
 * System profile: 
 * System to be built: None
 * Hardware type: None
 * Partition for assemble: /dev/sdb1
 * File system: ext4
 * Portage mirror: git://git.calculate.ru/calculate/portage.git
 * Stage for assembling: /var/calculate/remote/linux/cldx-14-i686.iso
Checking up before assemble

Continue system assemble (yes/no):

Это нормально? Или я что-то не так делаю?
Собирать пытаюсь на свежеустановленном CLDX 14, после установки всех доступных на данный момент обновлений плюс calculate-assemble.

Все, разобрался… система не могла смонтировать образ, т.к. он лежал на общей папке VirtualBox, а в таком режиме loop mount не работает.
Переложил на локальный диск - все заработало.

Жаль только, что ошибку cl-assemble не выдала, о том что не может получить информацию из ISO.