Руководство по обновлению системы
Обновлено 17 января 2020
Введение
Процесс обновления 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
.