Дистрибутивы 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, РЭД ОС

Репозитории #

Репозиторий представляет собой хранилище пакетов дистрибутива

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

diagram

Создание пакетов #

Пакетный файл обычно создаётся с помощью автоматизированной системы сборки пакетов, настройкой которой для каждого отдельного пакета занимается мейнтейнер (от английского maintain — поддерживать)

  • Исходный код для пакета берётся от производителя приложения
  • Мейнтейнер создаёт конфигурацию для сборочной системы дистрибутива, фиксирует параметры сборки и при необходимости вносит изменения в исходный код проекта
  • Загружает модифицированный исходный код и конфигурацию в собственное хранилище производителя дистрибутива
  • Автоматизированная система собирает пакет и добавляет его в репозиторий

Некоторые дистрибутивы предоставляют возможности сообществу пользователей участвовать в процессе формировании пакетов дистрибутива, становиться мейнтейнерами их репозиториев: Debian, openSUSE, ALT Linux, ROSA Linux, Fedora и т.д.

diagram

Зависимости пакетов #

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

  • Зависимости одного пакета могут поставляться в других пакетах
    • Библиотеки в дистрибутивах Linux обычно являются общими между множеством исполняемых файлов
    • Использование общих ресурсов снижает объём используемой памяти как на файловой системе, так и в оперативной памяти
  • Пакеты, которые необходимы для работы приложения внутри пакета, указываются в списке зависимостей данного пакета
  • У зависимых пакетов могут быть свои собственные зависимости
  • Библиотеки можно обновлять независимо от обновлений конечных приложений

diagram

Создание пакетов разработчиками ПО #

Пакеты могут быть созданы также разработчиками ПО

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

Ключевая сложность создания пакетов для разных дистрибутивов — наличие большого количества дистрибутивов со множеством разных небольших особенностей

  • У каждого производителя обычно есть 3+ актуальных дистрибутива
  • Всегда есть ключевые дистрибутивы, для которых нужно предоставлять решение