Дистрибутивы GNU/Linux #
Васильев Андрей Михайлович, 2024
Версии презентации
Понятие дистрибутива ОС #
ОС на базе GNU/Linux поставляются в виде «дистрибутивов», включающих в себя согласованный на уровне бинарных кодов набор приложений и библиотек
Если абстрагироваться от деталей, то все дистрибутивы
- Используют общее ядро Linux
- Позволяют запускать приложения под данное ядро
- Предоставляют инструменты для управления установленными приложениями
- Предоставляют инструменты для настройки поведения приложений
Слово «дистрибутив» является калькой с английского «distribution», и уже плотно вошло в технический словарь
Примерами дистрибутивов могут служить:
- Windows 10 1809
- macOS 13.0
- Android 12
Назначение дистрибутива Linux #
Дистрибутивы исторически появились для поставки приложений конечным пользователям
- Пользователь дистрибутива получает ПО в бинарном формате
- Пользователю нет необходимости скачивать исходный код приложения
- Пользователю не надо разбираться в системе сборки приложений, тем более со временем увеличивается число языков и сборочных систем
- Всё ПО в дистрибутиве совместимо, обычно корректно работает друг с другом
- Можно установить только нужное ПО, а не всё содержимое дистрибутива
- Вся установка ПО происходит унифицированным способом
- Собранный дистрибутив является стабильной платформой для поставки ПО от третьих производителей
- Дистрибутивы обычно получают исправления, связанные с проблемами в безопасности
Скорость выпуска дистрибутивов #
Производители обычно выпускают новые дистрибутивы на регулярной основе, один раз в несколько месяцев или лет. После выпуска дистрибутив поддерживается несколько лет
Дистрибутив | Дата выпуска | Окончание поддержки |
---|---|---|
Debian 9 (Stretch) | 17 июня 2017 | 30 июня 2022 |
Debian 10 (Buster) | 6 июля 2019 | 30 июня 2024 |
Debian 11 (Bullseye) | 14 августа 2021 | июль 2024 |
Debian 12 (Bookworm) | 10 июня 2023 | июнь 2026 |
Alt Linux 8 | 15 августа 2016 | 16 декабря 2019 |
Alt Linux 9 | 16 августа 2019 | 31 декабря 2023 |
Alt Linux 10.0 | 30 декабря 2021 | 31 декабря 2024 |
Alt Linux 10.3 | 19 сентября 2023 | 31 декабря 2024 |
RHEL 7 | 9 июня 2014 | 6 августа 2019 |
RHEL 8 | 7 мая 2019 | 31 мая 2024 |
RHEL 9 | 18 мая 2022 | 31 мая 2027 |
Выпуски ALT Linux, Выпуски RHEL, Выпуски Debian
Пакетные менеджеры #
Пакетный менеджер — это система приложений, которые позволяют конечным пользователям управлять компонентами системы: устанавливать, удалять, обновлять и т.д.
Аналогом пакетного менеджера в Linux можно назвать:
- Магазины приложений (вместе со списком приложений) на Android и iOS
- Магазины игр Steam, GoG, EGS и т.д.
- Менеджеры пакетов языков программирования PyPI, Rubygems, Maven
Разные производители дистрибутивов зачастую отличаются пакетными менеджерами, которые используются в их дистрибутивах
Другие особенности между дистрибутивами — подходы к настройке и обеспечению безопасности
Пакетные файлы, пакеты #
Базовой единицей распространения ПО в дистрибутиве является пакетный файл
- Пакетный файл является файловым архивом
- Большая часть файлов архива — это файлы для установки в файловую систему
- Другая часть — это скрипты, выполняющиеся на различных этапах установки пакета: до установки, после установки и т.д.
- Дополнительно пакет содержит мета-информацию, включающую:
- название пакета,
- версию пакета,
- краткое описание,
- список зависимостей,
- т.п.
Формат пакета | Дистрибутивы Linux |
---|---|
Debian (.deb) | Debian, Ubuntu, Linux Mint, Raspbian, Astra Linux |
Red Hat (.rpm) | Red Hat Enterprise Linux, SLES, ALT Linux, ROSA, РЭД ОС |
Репозитории #
Репозиторий представляет собой хранилище пакетов дистрибутива
- Производители дистрибутивов предоставляют для каждого дистрибутива свои репозитории, которые включают тысячи собранных пакетов
- Производители ПО могут предоставлять свои репозитории
- Пакетный менеджер может работать со множеством репозиториев одновременно
- Пакетный менеджер может обновлять пакеты на локальном компьютере, когда в репозитории появились более свежие версии
- Официальные репозитории могут содержать подразделы:
- Ввиду лицензионных ограничений
- Ввиду разного уровня поддержки со стороны разработчика
Создание пакетов #
Пакетный файл обычно создаётся с помощью автоматизированной системы сборки пакетов, настройкой которой для каждого отдельного пакета занимается мейнтейнер (от английского maintain — поддерживать)
- Исходный код для пакета берётся от производителя приложения
- Мейнтейнер создаёт конфигурацию для сборочной системы дистрибутива, фиксирует параметры сборки и при необходимости вносит изменения в исходный код проекта
- Загружает модифицированный исходный код и конфигурацию в собственное хранилище производителя дистрибутива
- Автоматизированная система собирает пакет и добавляет его в репозиторий
Некоторые дистрибутивы предоставляют возможности сообществу пользователей участвовать в процессе формировании пакетов дистрибутива, становиться мейнтейнерами их репозиториев: Debian, openSUSE, ALT Linux, ROSA Linux, Fedora и т.д.
Зависимости пакетов #
Для работы приложения зачастую недостаточно только одного исполняемого файла, нужны также библиотеки, интерпретаторы, возможно другие исполняемые файлы
- Зависимости одного пакета могут поставляться в других пакетах
- Библиотеки в дистрибутивах Linux обычно являются общими между множеством исполняемых файлов
- Использование общих ресурсов снижает объём используемой памяти как на файловой системе, так и в оперативной памяти
- Пакеты, которые необходимы для работы приложения внутри пакета, указываются в списке зависимостей данного пакета
- У зависимых пакетов могут быть свои собственные зависимости
- Библиотеки можно обновлять независимо от обновлений конечных приложений
Создание пакетов разработчиками ПО #
Пакеты могут быть созданы также разработчиками ПО
- Разработчики могут предоставлять пакеты отдельно
- Пользователи могут скачать пакет с сайта разработчика и установить его, если он совместим с установленным дистрибутивом
- При выходе новой версии ПО пользователю необходимо будет опять скачать и поставить приложение
- Разработчики могут предоставлять пакеты в рамках собственных репозиториев
- Пользователю необходимо внести настройки в пакетный менеджер, чтобы подключить данные репозитории
- При выходе новой версии ПО может потребоваться связаться с новым репозиторием
- Пользователь использует единую систему по управлению ПО
Ключевая сложность создания пакетов для разных дистрибутивов — наличие большого количества дистрибутивов со множеством разных небольших особенностей
- У каждого производителя обычно есть 3+ актуальных дистрибутива
- Всегда есть ключевые дистрибутивы, для которых нужно предоставлять решение