Руководство по обновлению системы

Обновлено 17 января 2020

Calculate Utilities

Введение

Процесс обновления Calculate Linux максимально упрощён. Для обновления достаточно запустить графическое приложение "Обновление Calculate Linux" или выполнить в консоли:

cl-update

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

Утилита может быть запущена как от суперпользователя root, так и от обычного пользователя системы, при наличии необходимых прав для обновления (см. раздел Пользователи):

cl-update

Этапы обновления

Условно работу программы можно разделить на две части - синхронизацию репозиториев и обновление пакетов. При желании вы можете выполнить только синхронизацию репозиториев без обновления пакетов, для этого используйте параметр -s (--sync-only), пример:

cl-update --sync-only

Синхронизация репозиториев

В Calculate Linux существует несколько зеркал с бинарными пакетами обновлений, описанных в оверлее Calculate. Утилита обновления сама определит "мёртвые" или недоступные зеркала, а также зеркала, находящиеся в процессе обновления, и, в случае необходимости, переключит систему на другое наиболее быстрое зеркало. Для пересканирования зеркал с определением наиболее быстрого зеркала выполните cl-update --scan. Лог сканирования будет доступен в файле /var/log/calculate/binhost-scan.log.

Доступны два типа зеркал - стабильные и нестабильные (тестовые). Тестовые зеркала отличаются более свежими версиями обновлений. Чтобы переключиться на тестовые обновления выполните cl-update --stable off.

Пакеты на зеркалах обновляются в разное время. Для того, чтобы версии пакетов были согласованы с версией портежей и оверлеев Calculate с Distros, утилита считывает с зеркала номера коммитов Git-репозитория и синхронизирует портежи и оверлеи до этого состояния. Тэги коммитов, благодаря которым можно минимизируя трафик скачать дерево портежей до определённого состояния, являются единственным отличием копии портежей Gentoo, используемой в дистрибутивах Calculate Linux.

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

Конфигурация системы

После синхронизации и до начала установки обновлений пакетов выполняются шаблоны миграции, которые настраивают в файле /etc/portage/make.conf/binhost выбранный репозиторий. На этом этапе обновления могут быть выполнены шаблоны ревизии и миграции.

Исправления могут вноситься, например, через искусственное понижение номера версии установленного пакета для последующей переустановки исправленной версии. Номера версий таких пакетов после изменения будут заканчиваться на rc73. В качестве другого, более редкого, случая исправления можно привести удаление из служебного файла /var/lib/portage/world устаревшего пакета, приводящего к блокировке просчёта зависимостей пакетного менеджера.

Обновление пакетов

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

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

Пересборка изменённых пакетов

Данный шаг выполняется утилитой cl-builder-update при выполнении обновления пакетов в образе и служит для своевременной пересборки изменённых пакетов в дереве портежей. На этом этапе выполняется проверка изменений слота, USE-флагов и зависимостей пакетов. В случае наличия изменений такие пакеты будут пересобраны.

Обновление модулей Perl

Если во время обновления был обновлён пакет dev-lang/perl, программа выполнит perl-cleaner all для обновления модулей языка Perl.

Очистка системы от ненужных пакетов

При установке программ могут быть установлены дополнительные пакеты с зависимостями, необходимыми для работы. С течением времени зависимости могут меняться, а программы удаляться. Высвободившиеся от зависимостей пакеты могут остаться в системе мёртвым грузом. Такие пакеты не будут обновляться, т.к. не будут попадать в просчёт зависимостей пакетного менеджера. На данном шаге программа обновления выполнит удаление этих пакетов, выполнив вызов emerge --depclean.

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

Для предотвращения удаления работающей версии PostgreSQL при обновлении мажорной версии, во время вызова настройки emerge --config postgresql в файл /var/lib/portage/world шаблонами утилит будет прописан пакет с указанием номера слота.

Обновление модулей ядра

В случае обновления ядра на этом шаге программа выполнит вызов emerge @module-rebuild для обновления модулей ядра.

Обновление модулей X.Org сервера

При обновлении пакета x11-base/xorg-server программа выполнит вызов emerge @x11-module-rebuild для обновления модулей Xorg-сервера.

Пересборка зависимых модулей

Во время обновления будет выполнено определение пакетов, использующих устаревшие библиотеки, для последующей их пересборки. Для этого программа обновления использует вызов emerge @preserved-rebuild.

Проверка обратных зависимостей

Опционально может быть выполнен вызов утилиты revdep-rebuild, входящей в состав пакета app-portage/gentoolkit и выполняющей поиск пакетов, содержащих повреждённые исполняемые файлы и библиотеки. Для его включения выполните:

cl-update --revdep-rebuild

Полезные опции запуска

По умолчанию программа не обновляет сторонние оверлеи. Для синхронизации всех подключённых оверлеев во время обновления используйте опцию -o (--update-other). Пример:

cl-update -o

Для просчёта зависимостей с последующим отображением устанавливаемых пакетов, без фактической установки, по аналогии с пакетным менеджером emerge есть опция -p (--pretend). Пример:

cl-update -p

Чтобы отобразить вывод списка просчитанных зависимостей с USE-флагами по аналогии с пакетным менеджером emerge, используйте опцию -e (emergelist), пример:

cl-update -e

Для восстановления целостности портежей и оверлеев - например, после ручного редактирования, используйте опцию -C (--check-repos), пример:

cl-update -C

Весьма полезной могут оказаться опции обновления файла списка пакетов /var/lib/portage/world. Для того, чтобы привести список пакетов установленных в вашей системе к состоянию в текущей ночной сборке, достаточно выполнить:

cl-update --rebuild-world

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

Другой полезной возможностью может оказаться дополнение world-файла списком пакетов профиля. К примеру, вы установили и настроили Calculate Linux Scratch, после этого захотели попробовать переключиться на профиль distros:CLDM/amd64/20. Чтобы установить после этого MATE со всеми зависимостями, можно выполнить:

cl-update --merge-world

Для сокращения места на жестком диске вы можете использовать две опции: -1 для очистки истории изменений локальной копии Git-репозитория и --clean-pkg для удаления скачанных и устаревших архивов программ. Пример:

cl-update -1 --clean-pkg

Интеграция в другие приложения

Важно не нарушать соответствие состояния бинарного репозитория и дерева портежей. Для этого вызов утилиты cl-update интегрирован в системные приложения.

При запуске emerge --sync будет выполнен вызов модуля синхронизации утилит Calculate, прописанный в файле настроек /etc/portage/repos.conf/zz-calculate.conf. Утилита eix-sync, обновляющая портежи в наглядном виде, также вызывает метод обновления утилит Calculate благодаря настройке /etc/eix-sync.conf. Утилита обновления портежей и пакетов в собираемом образе cl-builder-update также использует общий модуль обновления системы.

Автоматическая проверка обновлений

Проверка обновлений выполняется по планировщику задач cron. Вызов утилиты настраивается в файле /etc/cron.d/calculate-update. При доступности обновления будет создан файл /var/lib/calculate/calculate-update/updates.available. Для настройки интервала обновления или отключения выполнения проверки обновлений используйте утилиту cl-setup-update.