Обновление старых систем
Работа по подготовке релиза Calculate Linux 22 подходит к концу. Хочется рассказать об одном, но очень важном нововведении, которое сделает систему ещё более надежней.
Многие пользователи подолгу используют Calculate Linux без переустановки, встречаются те, кто не переустанавливал систему 5 и даже 10 лет. С запуском бинарного репозитория обновлять систему стало значительно проще. И главной причиной были отнюдь не бинарные обновления, как многие могли бы подумать, а разрешение многочисленных блокировок, возникающих во время подготовки большого количества бинарных пакетов. Примером тому могут служить ночные сборки, которые из года в год регулярно обновляются, тестируются и берутся за основу новых релизов. Calculate по праву может считаться дистрибутивом с условно бесконечным сроком поддержки. Но все же есть одно слабое место в этой красивой схеме rolling-release обновлений - почти гарантированные проблемы при обновлении системы спустя длительный период времени.
Причины возникающих проблем с обновлением могут быть разными. Недавний пример - обновление апрельского релиза Calculate Linux 21 установленного в июле вызовет ошибку. Причина тому перевод дерева портежей на EAPI 8. Пакетный менеджер попавший в релиз версии 3.0.18, которая не поддерживает EAPI 8. В конце июня - начале июля мантейнеры Gentoo стабилизируют версию 3.0.20 с поддержкой EAPI 8, а уже в середине июля в дереве портежей начинают использовать EAPI 8. В итоге все обновления блокируются, помогает только последовательный запуск: cl-update --sync-only; emerge -1O python:3.9; emerge -1O glibc; emerge -1O portage; cl-update
.
Безусловно, можно придумать способ как используя ревизии добавить установку этих пакетов в начало обновления. Но это только временный рецепт, который будет работать только определённое количество времени. Как вы могли заметить, в примере выше для решения блокировки приходится переустанавливать не только пакетный менеджер. Поддерживать до бесконечности или даже в течение года такую “матрешку” будет довольно затратно и проблематично.
Идея решения проблемы с обновлением не нова и уже используется. Вспомните как обновляет себя Windows устанавливая сперва новый браузер, потом сервис пак для него, потом обновления для сервис пака и т.д. Вы думаете что выполнили обновление до конца, но последующий запуск снова выкатит приличное количество обновлений на уже установленные пакеты. Похожим путем пойдем и мы. Для этого для бинарного репозитория будет введено понятие “уровень” репозитория (параметр level в файле /grp/ini.env
зеркала сейчас равен “0”). Используемый уровень обновления пакетов будет храниться в переменной утилит cl_update_level
. Во время обновления утилита cl-update
будет сравнивать значение переменной cl_update_level с совместимостью зеркала и, в случае необходимости, переключать на зеркало миграции. Зеркало миграции будет содержать состояние бинарного репозитория на момент последнего успешного обновления системы. После этого будет увеличено значение переменной cl_update_level
. Утилита вернется на рабочее зеркало после того, как убедится, что его уровень соответствует системному, в противном случае переключит обновление на следующее зеркало миграции.
Для поддержания зеркал миграции мы арендовали новый сервер, резервные копии на котором будут поддерживаться при помощи уже опробованной и полюбившейся комбинации btrfs+btrbk. Такое нехитрое решение позволит условно неограниченно по времени выполнять обновления устаревших систем.
Поддержка Python 3
Перевод Calculate Utilities на Python 3 - важный этап развития системы. Из-за отсутствия поддержки необходимых библиотек в новой версии Python, мы откладывали этот переход продолжая поддерживать Python 2. За это время был запущен проект новой 4-й версии утилит, в котором планировалось полностью переписать код утилит. К сожалению проект затянулся и было принято решение все же портировать 3-ю версию утилит. Большинство ошибок миграции уже исправлено, Python 2 более не входит в состав дистрибутивов. В будущем мы планируем вернуться к работе над новыми утилитами 4-й версии.
Сбор предложений и другие улучшения
Некоторое время назад в качестве эксперимента на платформе Реформал мы запустили сбор отзывов и идей от пользователей. Спасибо всем, кто принял участие и написал свои пожелания, участвовал в обсуждении и голосовании. Если вы пропустили эту новость - то обязательно воспользуйтесь этой обратной связью. Что-то простое уже было исправлено, что-то более сложное по времени оставлено до лучших времён.
Переход на PipeWire
PipeWire - это звуковой сервер, который пришел на смену PulseAudio. В качестве альтернативы, в Calculate Linux по прежнему можно выбрать ALSA, которая скорей всего подойдет в большинстве случаев. Про PipeWire написано много лестных отзывов, он написан с расчетом на снижение системных требований и получения максимально качественного звука. Безусловно важным этапом перехода на него как раз был момент подготовки нового релиза.
Переход на ядро 5.15.6
Последним важным шагом на пути подготовки нового релиза был переход на новое ядро с длительным сроком поддержки 5.15. Новое ядро должно обеспечить лучшую поддержку железа, улучшенную поддержку файловой системы NTFS, оптимизации производительности и многое другое. Если вы испытываете сложности с переходом на новое ядро, вы можете установить бинарные версии ядра 5.10.
Релиз Calculate Linux 22 запланирован на этот месяц.