Управление репозиториями в GNU/Linux #
Васильев Андрей Михайлович, 2024
Версии презентации
Процесс выпуска дистрибутивов ALT Linux #
Репозитории ALT Linux, Политика разработки дистрибутивов
- Новая версия пакета обычно попадает в ветку Sisiphus, Сизиф
- Когда приходит время для формирования очередного выпуска, сизиф стабилизируется
- Через некоторое время выделяется отдельная ветка дистрибутива
- В рамках ветки происходит стабилизация, т.е. решение проблем приложений, обновлений и т.д.
- Когда ветка признаётся стабильной, то на её основе выпускается дистрибутив
- Ветку продолжают поддерживать, на основе исправлений выходят новые версии дистрибутива
Процесс выпуска дистрибутива GNU/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
— как правило текущее ядро с длительной поддержкой LTSun-def
— последнее стабильное ядро, предоставляемого kernel.org
Особенности использования репозиториев #
Очевидные плюсы включают
- Пользователи могут получить доступ к большой коллекции ПО унифицированным образом
- Мейнтенерами пакетов являются не разработчики ПО, а отдельные люди, что снижает нагрузку на разработчика
- ПО внутри репозитория совместимо друг с другом, используются общие библиотеки
Ограничения данной модели
- При использовании репозиториев пользователи обычно работают не с самой последней версией ПО, а версий, что была доступна на момент формирования репозитория
- ПО может не входить в состав репозитория от производителя
- Дистрибутив может поставлять только более свежую версию ПО, например Java 17 вместо Java 11
Установка ПО альтернативными способами #
- Скачивание приложения из архива, которое бинарно совместимо с дистрибутивом
- Компиляция приложения из исходных кодов
- Установка пакетов скриптовых языков
- Использование систем пакетирования приложений и их доставки, которые не зависят от дистрибутива: AppImage, Docker / Podman, Flatpack, Snappy, Steam