Встречайте, новые утилиты Calculate 3.4!

На данный момент доступна бета-версия утилит. Релиз будет выпущен в ближайшее время и войдёт в состав новой версии дистрибутивов Calculate Linux 15.

Основные особенности новой версии:

Новый способ синхронизации портежей и оверлеев

Многие знают, что для обновления Calculate Linux использует одно зеркало бинарных пакетов (mirror.cnet.kz). Для подстраховки, есть ещё парочка зеркал и всё. Все остальные зеркала не могут быть использованы, т.к. версия пакетов не будет соответствовать текущей версии портежей. К сожалению, бывали случаи, когда зеркало в течение непродолжительного времени оставалось недоступным, что вызывало сложности при обновлении из бинарных пакетов. Портежи в этот момент справлялись со своими обязанностями, но ценой компиляции пакетов.

В новых утилитах Calculate 3.4 был пересмотрен механизм обновления пакетов. Во время подготовки обновления, в Git при помощи тэгов создаются отметки с порядковыми номерами, значения которых сохраняются в репозитории бинарных пакетов в файле ‘ini.env’, пример:

[vcs]
portage=31
calculate=24
distros=14

Теперь вы можете использовать любое из существующих зеркал для обновления пакетов. Несколько одинаковых файлов ‘/grp/default’, ‘/grp/kde’, ‘/grp/server’ и ‘/grp/x’ должны пресечь попытки обновиться с зеркала во время его обновления. Утилита cl-update умеет определять наиболее быстрое из зеркал, содержащих свежие версии пакетов.

Безусловно, если вы используете несколько машин с Calculate Linux, целесообразно поднять у себя зеркало бинарных пакетов и синхронизировать его с определённой периодичностью, например раз в сутки. Любой FTP (или HTTP) сервер, настроенный на Calculate Directory Server прекрасно с этой задачей справится. Вы можете загрузить целиком зеркало или скачать выборочно бинарные пакеты. Для загрузки исключительно бинарных пакетов, используйте следующую команду:

rsync -avx --delete --include="/grp" --include="/timestamp" --exclude="/*"  rsync://mirror.yandex.ru/calculate /var/calculate/server-data/ftp/pub/calculate

Удостоверьтесь, что директория /var/calculate/server-data/ftp/pub/calculate существует или выберите свой путь для хранения зеркала. Обратите внимание на файл timestamp, который так же должен забираться. По этому файлу утилита обновления будет оценивать актуальность зеркала.

Теперь, чтобы начать использовать своё зеркало, укажите его в переменной списка зеркал в /var/calculate/remote/calculate.env, если вы используете сеть из CLD машин или в /var/calculate/calculate.env или /etc/calculate/calculate.env:

Пример:

[update]
cl_update_binhost_list = ftp://lautre.ru/pub/calculate

После этого выполните:

cl-upate --scan

Утилита из списка зеркал, выберет одно, пропишет его в переменной cl_update_binhost, в файле /etc/calculate/calculate.env, после этого настроит портежи на использование этого бинарного зеркала, в файле /etc/portage/make.conf/binhost.

Что ещё приятно, в новой схеме обновления минимизированы запросы к Git. Если при повторном считывании ini.env, версии тэгов будут неизменны, утилита обновления будет выполнять запрос к Git-у. Чтобы навсегда не остаться с необновляемым зеркалом, выполняется проверка timestamp на актуальность и в случае необходимости будет выполнено повторное сканирование зеркал.

Обновления по тэгам позволяют использовать промежуточное зеркало для тестирования обновлений. Что приятно, можно даже запаковать Stage-образы, чтобы проверить ещё до того, как обновление попадёт на зеркала.

Новые утилиты сборки системы

На смену calculate-assemble, calculate-builder и Интерактивному режиму сборки системы пришли утилиты cl-builder*, входящие в состав пакета утилит calculate-utils 3.4.

Благодаря новой концепции разделяемых профилей и единого репозитория бинарных пакетов сборка своей версии дистрибутива теперь выполняется в считанные мгновения!

Обо всём по порядку:

1. Профиль вместо правки файлов

Calculate привнёс автоматизацию. Даже устанавливая Gentoo, вы пишите для себя от FAQ до простеньких скриптов на Bash. С новыми утилитами сборки системы больше не нужно думать о том, куда в собираемом вами образе поместить необходимые вам настройки. Всё это делается через профиль, начиная от состава пакетов, самих ebuild-файлов и заканчивая настройками. Действия сводятся к простым действиям: развернуть исходный ISO (cl-builder-prepare), переключить профиль (cl-builder-profile), обновить пакеты (cl-builder-update) и запаковать (cl-builder-image).

2. Графический интерфейс

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

calculate_console.png

3. На смену Builder-режима загрузки мгновенное подключение слоёв

Идея Builder-режима оригинальная. Вы собираете, тестируете, после чего запаковываете то, что видите. Тем не менее, есть и недостатки у такого подхода. Нужно загружаться в специальном режиме предназначенном для сборки. Обновления нужно выполнять в chroot, об этом нужно постоянно помнить, иначе обновления не попадут в новый образ. Мы взяли всё лучшее от такого подхода и в новых утилитах к традиционному развёртыванию системы добавили поддержку слоёв, реализованную через файловую систему overlayfs. В итоге образ подготавливается за считанные секунды не требуя для своих нужд значительных объёмов дискового пространства.

4. Поддержка мультизагрузочных флешек

При обновлении пакетов на флешке теперь используется единый механизм с привлечением слоёной файловой системы. По результату работы создаётся ISO образ и обновляется меню загрузки. Вы можете скопировать на флешку ISO-образы разных дистрибутивов Calculate Linux и обновить меню, выполнив ‘cl-builder-menu’ или используя графическую консоль.

Удалось ли перейти на третью версию питона? и cl-update начало использовать все ядра?(а не одно как сейчас)

Andrey Shkarlat писал(а):

Удалось ли перейти на третью версию питона? и cl-update начало использовать все ядра?(а не одно как сейчас)

В планах на этот и на следующий год нет перехода на 3-й питон. Про второй вопрос не понял.

После сегодняшнего обновления система не загрузилась. )

Григорий Иванов писал(а):

После сегодняшнего обновления система не загрузилась. )

Телепатов не держим. Можно конкретнее? Что за система, на каком этапе?

Alexander Tratsevskiy писал(а):

Про второй вопрос не понял.

cl-update использует одно ядро.

Andrey Shkarlat писал(а):

Alexander Tratsevskiy писал(а):

Про второй вопрос не понял.

cl-update использует одно ядро.

Во время компиляции?

Alexander Tratsevskiy писал(а):

Andrey Shkarlat писал(а):

Alexander Tratsevskiy писал(а):

Про второй вопрос не понял.

cl-update использует одно ядро.

Во время компиляции?
Нет. Во время компиляции все ядра, все остальное время одно. В том числе просчет зависимостей на одном ядре.

Alexander Tratsevskiy писал(а):

Григорий Иванов писал(а):

После сегодняшнего обновления система не загрузилась. )

Телепатов не держим. Можно конкретнее? Что за система, на каком этапе?

CLDM.
Началась загрузка, затем появилась заставка, потом мигающий курсор в левом верхнему углу экрана. И все.

Alexander Tratsevskiy писал(а):

Григорий Иванов писал(а):

После сегодняшнего обновления система не загрузилась. )

Телепатов не держим. Можно конкретнее? Что за система, на каком этапе?

Я телепат. Проблема с битой dev-libs/nettle.

Началась загрузка, затем появилась заставка, потом мигающий курсор в левом верхнему углу экрана. И все.

ctrl+f1
зайдите в текстовую консоль,
sudo grep “invalid opcode” /var/log/messages

результат, если не затруднит, сюда

Alexander Tratsevskiy, более чем уверен, что это то же, о чём я написал в http://www.calculate-linux.org/issues/558 (последнее, #29, сообщение)

Там вы писали про libnettle. Если библиотека как вы говорите битая, вы её пробовали пересобрать из исходников?

libnettle.so.6.1 принадлежит пакету dev-libs/nettle. Да, я пересобирал её - результат не изменился.

есть подозрение, что проблема nettle-2.7.1-r4 -> 3.1.1
сейчас попробую.

Andrey Shkarlat писал(а):

Alexander Tratsevskiy писал(а):

Andrey Shkarlat писал(а):

Alexander Tratsevskiy писал(а):

Про второй вопрос не понял.

cl-update использует одно ядро.

Во время компиляции?
Нет. Во время компиляции все ядра, все остальное время одно. В том числе просчет зависимостей на одном ядре.

Для просчёта зависимостей cl-update вызывает emerge.

есть подозрение, что проблема nettle-2.7.1-r4 -> 3.1.1
сейчас попробую.

нет, nettle-2.7.1 это другое, libnettle.so.4.7

Sep 25 16:15:59 calculate kernel: traps: caja[13766] trap invalid opcode ip:7fcc5acd4753 sp:7fff0340f8a8 error:0 in libnettle.so.6.1[7fcc5accb000+35000]
Sep 25 16:16:01 calculate kernel: traps: caja[13773] trap invalid opcode ip:7f9928a2b753 sp:7fff478f8568 error:0 in libnettle.so.6.1[7f9928a22000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13782] trap invalid opcode ip:7f705ae4e753 sp:7ffcd933a858 error:0 in libnettle.so.6.1[7f705ae45000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13785] trap invalid opcode ip:7fe4d7dd2753 sp:7ffcc2d75158 error:0 in libnettle.so.6.1[7fe4d7dc9000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13788] trap invalid opcode ip:7f15040f1753 sp:7fff4b3ae088 error:0 in libnettle.so.6.1[7f15040e8000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13791] trap invalid opcode ip:7f1c73dd2753 sp:7fffc7ee4778 error:0 in libnettle.so.6.1[7f1c73dc9000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13794] trap invalid opcode ip:7fbf632b6753 sp:7ffdca8a34f8 error:0 in libnettle.so.6.1[7fbf632ad000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13797] trap invalid opcode ip:7fe1bac7e753 sp:7ffcd98c5768 error:0 in libnettle.so.6.1[7fe1bac75000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13800] trap invalid opcode ip:7f58c1320753 sp:7fff5e926218 error:0 in libnettle.so.6.1[7f58c1317000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13803] trap invalid opcode ip:7f6c90db6753 sp:7ffc670241d8 error:0 in libnettle.so.6.1[7f6c90dad000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13806] trap invalid opcode ip:7fc0865bf753 sp:7fffd1fc2968 error:0 in libnettle.so.6.1[7fc0865b6000+35000]
Sep 25 16:16:07 calculate kernel: traps: mate-thumbnail-[13809] trap invalid opcode ip:7f7c2c19c753 sp:7ffd31475908 error:0 in libnettle.so.6.1[7f7c2c193000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14193] trap invalid opcode ip:7f2ecb48e753 sp:7ffe6dc5d768 error:0 in libnettle.so.6.1[7f2ecb485000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14196] trap invalid opcode ip:7fee9af1b753 sp:7ffd11af0068 error:0 in libnettle.so.6.1[7fee9af12000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14199] trap invalid opcode ip:7f586bdd2753 sp:7ffca0e47d78 error:0 in libnettle.so.6.1[7f586bdc9000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14202] trap invalid opcode ip:7fbcab8a3753 sp:7ffff0633cb8 error:0 in libnettle.so.6.1[7fbcab89a000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14205] trap invalid opcode ip:7fb4552a6753 sp:7fffdbbf7fe8 error:0 in libnettle.so.6.1[7fb45529d000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14208] trap invalid opcode ip:7f2d0d454753 sp:7ffc71115388 error:0 in libnettle.so.6.1[7f2d0d44b000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14211] trap invalid opcode ip:7f6173ab7753 sp:7fff713d8f38 error:0 in libnettle.so.6.1[7f6173aae000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14214] trap invalid opcode ip:7f7caa4e9753 sp:7ffead97e988 error:0 in libnettle.so.6.1[7f7caa4e0000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14217] trap invalid opcode ip:7f42a2c54753 sp:7fff0c442a08 error:0 in libnettle.so.6.1[7f42a2c4b000+35000]
Sep 25 16:16:12 calculate kernel: traps: mate-thumbnail-[14220] trap invalid opcode ip:7fa0fcbcd753 sp:7ffc95182818 error:0 in libnettle.so.6.1[7fa0fcbc4000+35000]
Sep 25 16:17:11 calculate kernel: traps: eom[14716] trap invalid opcode ip:7fcdaa266753 sp:7fff8d274478 error:0 in libnettle.so.6.1[7fcdaa25d000+35000]
Sep 25 16:17:14 calculate kernel: traps: eom[14795] trap invalid opcode ip:7f6a409b2753 sp:7ffda5f43888 error:0 in libnettle.so.6.1[7f6a409a9000+35000]
Sep 25 16:17:28 calculate kernel: traps: eom[14801] trap invalid opcode ip:7f1c719b3753 sp:7fff4e4acd78 error:0 in libnettle.so.6.1[7f1c719aa000+35000]
Sep 25 16:17:31 calculate kernel: traps: eom[14864] trap invalid opcode ip:7fe97c64e753 sp:7ffd781ed578 error:0 in libnettle.so.6.1[7fe97c645000+35000]
Sep 25 16:17:32 calculate kernel: traps: eom[14870] trap invalid opcode ip:7f1480c28753 sp:7ffd4dbc0608 error:0 in libnettle.so.6.1[7f1480c1f000+35000]
Sep 25 16:17:34 calculate kernel: traps: eom[14876] trap invalid opcode ip:7f3817690753 sp:7ffd4f1ee768 error:0 in libnettle.so.6.1[7f3817687000+35000]
Sep 25 16:17:52 calculate kernel: traps: at-spi-bus-laun[15829] trap invalid opcode ip:7f81f0064753 sp:7fffec207bb8 error:0 in libnettle.so.6.1[7f81f005b000+35000]
Sep 25 16:17:52 calculate kernel: traps: lightdm-gtk-gre[15272] trap invalid opcode ip:7f0d72fe7753 sp:7ffff8617388 error:0 in libnettle.so.6.1[7f0d72fde000+35000]
Sep 25 16:17:52 calculate kernel: traps: gvfsd-fuse[15872] trap invalid opcode ip:7f405d6a5753 sp:7f405fa7d348 error:0 in libnettle.so.6.1[7f405d69c000+35000]
Sep 25 16:18:29 calculate kernel: traps: polkitd[2958] trap invalid opcode ip:7ff3e5518753 sp:7fff763d8188 error:0 in libnettle.so.6.1[7ff3e550f000+35000]
Sep 25 16:18:29 calculate kernel: traps: lightdm[3122] trap invalid opcode ip:7f5f32ae8753 sp:7ffd8397e378 error:0 in libnettle.so.6.1[7f5f32adf000+35000]
Sep 25 16:18:29 calculate kernel: traps: NetworkManager[3237] trap invalid opcode ip:7f5e478db753 sp:7ffdafc20468 error:0 in libnettle.so.6.1[7f5e478d2000+35000]
Sep 25 16:18:29 calculate kernel: traps: cupsd[3381] trap invalid opcode ip:7f7ac9525753 sp:7ffe0e886f08 error:0 in libnettle.so.6.1[7f7ac951c000+35000]
Sep 25 16:18:29 calculate kernel: traps: lightdm[3397] trap invalid opcode ip:7f10c8676753 sp:7ffd856b4e78 error:0 in libnettle.so.6.1[7f10c866d000+35000]
Sep 25 16:25:44 calculate kernel: traps: polkitd[2911] trap invalid opcode ip:7f707071e753 sp:7ffd89c3d758 error:0 in libnettle.so.6.1[7f7070715000+35000]
Sep 25 16:25:44 calculate kernel: traps: lightdm[3063] trap invalid opcode ip:7f1e9416d753 sp:7ffd3d9d6fd8 error:0 in libnettle.so.6.1[7f1e94164000+35000]
Sep 25 16:25:44 calculate kernel: traps: NetworkManager[3183] trap invalid opcode ip:7f41579bc753 sp:7fffc003f3e8 error:0 in libnettle.so.6.1[7f41579b3000+35000]
Sep 25 16:25:44 calculate kernel: traps: cupsd[3313] trap invalid opcode ip:7f37b18bd753 sp:7fff03dc9b08 error:0 in libnettle.so.6.1[7f37b18b4000+35000]
Sep 25 16:25:44 calculate kernel: traps: lightdm[3338] trap invalid opcode ip:7fd044535753 sp:7ffd72ea99f8 error:0 in libnettle.so.6.1[7fd04452c000+35000]

ок, это это. ровно что и у меня.

Alexander Tratsevskiy писал(а):

Там вы писали про libnettle. Если библиотека как вы говорите битая, вы её пробовали пересобрать из исходников?

Александр, если руками удалить библиотеки, и собрать из тарбола

./configure --prefix=/usr
make
make install

всё работает со страшной силой.

Вывод: кривой ебилд. И у вас на ферме и у юзерей.

Конкретно какие библиотеки? Какая версия пакета у вас стояла? Пробовали ли ставить бинарный пакет? Другую версию библиотеки? Какая архитектура у вас? Не все же такие телепаты, как вы.