Управление репозиториями в GNU/Linux

Управление репозиториями в GNU/Linux #

Васильев Андрей Михайлович, 2024

Версии презентации


Процесс выпуска дистрибутивов ALT Linux #

Репозитории ALT Linux, Политика разработки дистрибутивов

  • Новая версия пакета обычно попадает в ветку Sisiphus, Сизиф
  • Когда приходит время для формирования очередного выпуска, сизиф стабилизируется
  • Через некоторое время выделяется отдельная ветка дистрибутива
  • В рамках ветки происходит стабилизация, т.е. решение проблем приложений, обновлений и т.д.
  • Когда ветка признаётся стабильной, то на её основе выпускается дистрибутив
  • Ветку продолжают поддерживать, на основе исправлений выходят новые версии дистрибутива

Процесс выпуска дистрибутива GNU/Debian #

Выпуски Debian

  • Новая версия пакета обычно попадает в unstable, sid
  • После базовой проверки пакет переносится в testing
  • Примерно за 6 месяцев testing замораживается и начинает принимать только пакеты с исправлением ошибок
  • Когда количество критических проблем в testing значительно снижается, то из него формируется очередной стабильный выпуск. Стабильный выпуск получает своё уникальное имя, которое берётся из мульт-франшизы Toy Story
  • Для стабильного выпуска формируются исправления. При накоплении критической массы формируется обновление для стабильного выпуска

Структура репозиториев ALT Linux #

Репозиторий представляет собой каталог, в котором находится набор пакетов, расположенных определённым образом

  • Репозитории обычно доступны по сети
  • Репозитории могут быть расположены на файловой ситеме

При доступе по сети имитируется доступ к файловой системе. Рассмотрим структуру зеркала mirror.yandex.ru

  • Сначала идёт название ветки, p9, p10 и так далее
  • Далее идёт обязательное branch
  • Затем идёт указание архитектуры, aarch64, x86_64 и т.д. noarch используется для пакетов, содержащих платформонезависимые пакеты

Внутри данного каталога находятся каталоги

  • С мета-информацией о пакетах, base
  • Каталоги с пакетами различных разделов RPMS.*, где после точки находится название раздела

Разделы репозиториев #

В текущей стабильной платформе ALT Linux предоставляются следующие разделы пакетов:

  • classic — базовый набор приложений, которые можно найти в типичном Linux-дистрибутиве
  • debuginfo — набор пакетов с отладочными символами для приложений
  • gostcrypto — набор приложений с реализацией шифрования согласно ГОСТ алгоритмам
  • checkinstall — инструмент для сборки пакетов без использования специфических средств дистрибутива, не поддерживается официально

Помимо пакетов с бинарными файлами также предоставляются пакеты с исходными кодами, из которых были собраны пакеты.


Конфигурация репозиториев в ALT Linux #

Для настройки списка доступных репозиториев в apt используются

  • Файл /etc/apt/sources.list
  • Файлы в каталоге /etc/apt/sources.list.d

Каждая строка в этих файлах описывает подключённый репозиторий

rpm [p10] uri repository [component1] [component2] [...]

  • В начале находится rpm для бинарных репозиториев
  • Далее идёт пояснение о версии выпускац не обязательный параметр
  • uri содержит путь к каталогу репозитория, интернет-адрес https://... или путь к файловой системе file://...
  • Вместо repository идёт путь к конкретному выпуску p10/branch/x86_64
  • В конце указывается список разделов classic

Вопросы редактирования #

Изменение конфигурации репозиториев #

Порядок внесения изменений следующий:

  1. Отредактировать список репозиториев
  2. Обновить локальный кеш пакетов

До обновления кеша пакетов APT не сможет выполнить установку из новых репозиториев и попытается связаться со старыми репозиториями

Установка пакетов из других репозиториев #

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

Точно не стоит подключать одновременно стабильную и тестируемые ветки репозиториев


Зеркала репозиториев #

Для ускорения процесса установки пакетов рекомендуется использовать зеркало, скорость скачивания с котрого, будет наибольшей

Создание собственного зеркала #

  • Уменьшение объёма данных для скачивания из сети интернет, 1 раз для всех компьютеров организации
  • Возможность инкрементального обновления: сначала обновления для тестовой среды, затем обновление для всего парка компьютеров
  • Возможность доступа к репозиторию в окружениях с ограниченным доступом к сети интернет

Объём зеркала для одного выпуска: порядка 50-100 гигабайт


Переход на новую версию дистрибутива #

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

  • Чтобы получить новые версии ПО, включающие новые функции и оптимизации
  • Чтобы получить новую версию ядра Linux, чтобы получить поддержку нового оборудования, т.к. драйвера обычно поставляются внутри ядра Linux
  • Переход необходим, т.к. старая версия перестала поддерживаться производителем, т.е. из соображений безопасности

Проблемы обновления:

  • Новые версии служб могут могут изменить своё поведение и формат конфигурационных файлов
  • Приложения, распространяемые не через пакетный менеджер, могут перестать работать, так как станут бинарно несовместимыми
  • В новой версии дистрибутива может не поставляться нужное ПО, потребуется переход на альтернативу
  • Скорее всего потребуется обновление настроек ПО

Выполнение перехода на новую версию #

Обязательно прочитайте официальную документацию по обновлению

  1. Отредактируйте конфигурацию пакетного менеджера, чтобы она ссылалась на новую версию дистрибутива
  2. Обновите локальный кеш пакетов, apt-get update
  3. Выполните обновление дистрибутива, apt-get dist-upgrade
  • При выполнении операции dist-upgrade часть пакетов может быть удалена, их надо будет поставить заново при необходимости
  • Для перехода можно использовать графические инструменты, чтобы помочь алгоритму разрешения зависимостей выбрать нужные версии пакетов

Переход на предыдущую версию #

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


Управление версиями ядра #

Пакеты с ядрами ОС распространяются через систему репозиториев, однако установка данных пакетов запрещена через основные инструменты

Для управления установленными ядрами и модулями используется приложение update-kernel

  • Обновление ядра до последней версии: update-kernel
  • Изменение типа ядра update-kernel -t un-def
  • Удаление старых ядер remove-old-kernels

Сначала необходимо обновить кеш пакетов, а после пытаться обновлять ядро

Разновидности ядер #

ALT Linux предоставляет разные варианты ядер:

  • std-def — как правило текущее ядро с длительной поддержкой LTS
  • un-def — последнее стабильное ядро, предоставляемого kernel.org

Особенности использования репозиториев #

Очевидные плюсы включают

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

Ограничения данной модели

  • При использовании репозиториев пользователи обычно работают не с самой последней версией ПО, а версий, что была доступна на момент формирования репозитория
  • ПО может не входить в состав репозитория от производителя
  • Дистрибутив может поставлять только более свежую версию ПО, например Java 17 вместо Java 11

Установка ПО альтернативными способами #

  • Скачивание приложения из архива, которое бинарно совместимо с дистрибутивом
  • Компиляция приложения из исходных кодов
  • Установка пакетов скриптовых языков
  • Использование систем пакетирования приложений и их доставки, которые не зависят от дистрибутива: AppImage, Docker / Podman, Flatpack, Snappy, Steam

© A. M. Васильев, 2025, CC BY-SA 4.0, andrey@crafted.su