Управление репозиториями в 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
Вопросы редактирования
#
Изменение конфигурации репозиториев
#
Порядок внесения изменений следующий:
- Отредактировать список репозиториев
- Обновить локальный кеш пакетов
До обновления кеша пакетов APT не сможет выполнить установку из новых
репозиториев и попытается связаться со старыми репозиториями
Установка пакетов из других репозиториев
#
Перед подключением новых репозиториев убедитесь, что они все содержат
совместимые между собой пакеты. Обычно это репозитории, предназначенные для
одного выпуска дистрибутива
Точно не стоит подключать одновременно стабильную и тестируемые ветки
репозиториев
Зеркала репозиториев
#
Для ускорения процесса установки пакетов рекомендуется использовать зеркало,
скорость скачивания с котрого, будет наибольшей
Создание собственного зеркала
#
- Уменьшение объёма данных для скачивания из сети интернет, 1 раз для всех
компьютеров организации
- Возможность инкрементального обновления: сначала обновления для тестовой
среды, затем обновление для всего парка компьютеров
- Возможность доступа к репозиторию в окружениях с ограниченным доступом к сети
интернет
Объём зеркала для одного выпуска: порядка 50-100 гигабайт
Переход на новую версию дистрибутива
#
Пользователи зачастую хотят перейти на новую версию дистрибутива:
- Чтобы получить новые версии ПО, включающие новые функции и оптимизации
- Чтобы получить новую версию ядра Linux, чтобы получить поддержку нового
оборудования, т.к. драйвера обычно поставляются внутри ядра Linux
- Переход необходим, т.к. старая версия перестала поддерживаться производителем,
т.е. из соображений безопасности
Проблемы обновления:
- Новые версии служб могут могут изменить своё поведение и формат
конфигурационных файлов
- Приложения, распространяемые не через пакетный менеджер, могут перестать
работать, так как станут бинарно несовместимыми
- В новой версии дистрибутива может не поставляться нужное ПО, потребуется
переход на альтернативу
- Скорее всего потребуется обновление настроек ПО
Выполнение перехода на новую версию
#
Обязательно прочитайте официальную документацию по обновлению
- Отредактируйте конфигурацию пакетного менеджера, чтобы она ссылалась на новую
версию дистрибутива
- Обновите локальный кеш пакетов,
apt-get update
- Выполните обновление дистрибутива,
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