Многообразие Linux-дистрибутивов. Часть 2.
Life-Hack [Жизнь-Взлом]/Хакинг2.3 Своё ПО
- 2.3a) Инсталлятор
- 2.3b) Конфигураторы
- 2.3c) Используемое окружение рабочего стола
- 2.3d) Другое специализированное ПО
Многие разработчики идут по пути упрощения работы в своих дистрибутивах для простых пользователей, как минимум, создавая и добавляя в дистрибутив своё дополнительное ПО.
- 2.3a) Инсталлятор для упрощения процедуры установки системы.
- Наличие файла автоответов. В какой-то мере для меня это знак зрелости дистрибутива для использования его в корпоративной среде. Это возможность разворачивать систему в автоматическом режиме с использованием "файлов автоответов", и чем гибче синтаксис этого файла и чем больше настроек в нём можно указать, тем больше дистрибутив подходит для больших компаний.
- Текстовый инсталлятор. Наличием графического инсталлятора в текущий момент уже, наверное, сложно кого-то удивить, но для серверов (или встраиваемых устройств, не использующих видеокарт и мониторов со "стандартным" разрешением) и для установки в облаках бывает полезно наличие инсталлятора, работающего в текстовом режиме.
- Установка в основном по сети. Установочный диск содержит только минимальный набор утилит для установки, а все устанавливаемые пакеты скачиваются из сетевых репозиториев.
- Инсталлятор из режима LiveCD позволяет попробовать дистрибутив и поддержку железа в режиме LiveCD, а затем при желании и установить.
- Возможность при установке автоматически скачать и установить дополнительные пакеты из интернета (например, не свободно распространяемое ПО, которое не доступно по умолчанию в дистрибутиве из-за ограничений, часто из-за региональных правовых особенностей). Так часто распространяются видеокодеки, драйвера на некоторое железо (например, графические видеокарты). Спорная польза в такой возможности (по мне лучше всё-таки максимально использовать свободное ПО), но для простых пользователей (недавно перешедших из "мира проприетарных ОС") это явно облегчает начало работы в мире Linuх.
⊚RedHat/⊚Fedora, ⊚SUSE, ⊚Debian/⊚AstraLinuxSE, ⊚Ubuntu, ⊚Manjaro, ⊚Alt
- 2.3b) Конфигураторы. Обычно дистрибутивы, ориентирующиеся на простого пользователя, создают свои дополнительные утилиты, упрощающие настройку системы. Чтобы различные действия по настройке системы мог выполнить человек без навыков работы в командной строке и без знаний, какие параметры в каких конфигурационных файлах требуется изменить. Отдельно стоит упомянуть графические утилиты настроек, веб-конфигуратор, автоконфигурирование при установке и сборке пакета.
- Графические утилиты настроек. Поговаривают, что "простым пользователям понятнее в кнопочки мышкой тыкать". Вот для них и стараются разработчики user-friendly дистрибутивов.
- Веб-конфигуратор. Удаленное управление машиной через web-интерфейс - достаточно востребованное решение, но и добавляет риски взлома системы.
- Автоконфигурирование при установке/сборке пакета. При установке новой программы или службы отображается меню-образный интерфейс с вопросами о выборе режима работы службы или использовании одного из стандартных профиля настроек.
⊚SUSE, ⊚Alt, ⊚RedHat, ⊚CDH, ⊚Debian
- 2.3c) Используемое окружение рабочего стола. Существует достаточно много дистрибутивов, в рамках которых разрабатывается своё DE (Desktop Environment - окружение рабочего стола) [На эту тему рекомендую посмотреть мою статью с обзором различных DE под LInux]. Также есть много деривативов, которые развивают ответвление с другим окружением рабочего стола, нежели с используемым в основном дистрибутиве.
⊚Elementary OS, ⊚Linux_Mint, ⊚AstraLinux, ⊚Deepin, ⊚Solus, ⊚Bodhi_Linux, ⊚Pop!_OS, ⊚CuteFishOS, ⊚Ubuntu_Kylin
⊚Ubuntu, ⊚Kubuntu, ⊚Lubuntu, ⊚Xubuntu, ⊚Ubuntu_MATE, ⊚Ubuntu_Unity, ⊚UbuntuDDE, ⊚Ubuntu_Budgie; ⊚Alt, ⊚Fedora, ⊚openSUSE
2.3d) Другое специализированное ПО. Довольно многие узкоспециализированные дистрибутивы содержат свой дополнительный (и не присутствующий в других дистрибутивах) набор утилит, собственных или совместно разрабатываемых.
⊚Alt, ⊚AstraLinuxSE

2.4) Пакеты
- 2.4a) Формат пакетов: rpm-пакеты и deb-пакеты, другие собственные форматы бинарных пакетов, из исходников.
- 2.4b) Пакетный менеджер
- 2.4c) График выхода релизов: стабильный и тестовый релиз, LTS-релизы, роллинг-релиз
Одно из основных отличий, на которое часто натыкаются новички при прочтении различных статей по Linux. В них вначале говорится, что нужно доустановить пакеты, и тут выясняется, что в различных дистрибутивах пакеты устанавливаются разными командами.
Как уже сказано выше, исходники программ в разных дистрибутивах во многом одинаковые, а вот установочные пакеты, полученные на их основе, различаются, как различаются и пакетные менеджеры (программы, при помощи которых эти пакеты ищутся и устанавливаются).
2.4a) Формат пакетов
- rpm-пакеты и deb-пакеты: *.rpm, *.deb. Отдельно выделил этот пункт, так как большинство дистрибутивов используют один из этих форматов пакетов - в основном, конечно, RedHat-based и Debian-based дистрибутивы, но и не только.
⊚RHEL, ⊚Alt, ⊚openSUSE, ⊚SLES, ⊚Debian, ⊚Ubuntu, ⊚AstraLinux
- Другие собственные форматы бинарных пакетов: *.tar.gz, *.txz, *.pkg, *.ipkg, …; в том числе использование форматов переносимых приложений: snappy, flatpak, AppImage, …
⊚Slackware, ⊚Arch, ⊚Manjaro, ⊚Puppy_Linux, ⊚Solus
- Из исходников (в том числе, подход, похожий на порты FreeBSD): Дистрибутивы с подходом "не для новичков" используют пакеты на основе исходников, которые компилируются при установке пакета. Данный подход дает возможности оптимизации ПО под конкретное аппаратное обеспечение и задачи (отказ от ненужных зависимостей, выбор собираемых компонентов) и как следствие - прирост в производительности и настраиваемости получаемого пакета.
⊚Gentoo, ⊚Linux_From_Scratch,
2.4b) Пакетный менеджер. Утилита, позволяющая искать и устанавливать пакеты, обновлять систему. Использование собственного формата пакетов ведёт к использованию собственного пакетного менеджера.
⊚Alt, ⊚SUSE, ⊚Mageia, ⊚ROSA, ⊚Arch, ⊚Slackware, ⊚Solus, ⊚Void, ⊚NixOS, ⊚Guix_SD
2.4c) График выхода релизов. Здесь стоит выделить различные подходы к выпуску готовой для использования версии дистрибутива (есть дистрибутивы, которые используют несколько из этих подходов).
- Стабильный релиз. Многие дистрибутивы следуют этому классическому подходу периодически выпускаемых протестированных версий. Обычно с выходом нового релиза (который выпускается раз в несколько лет) предыдущий релиз некоторое время (часто около года) еще поддерживается (для него выпускаются обновления с исправлением уязвимостей, но без добавления нового функционала). Затем рекомендуется переходить на (или обновить до) новую версию дистрибутива.
⊚Slackware, ⊚SUSE, ⊚Ubuntu
- LTS-релизы (Long Term Support - «поддержка в течение длительного периода»). Аналогичный подход к выпуску стабильных и обычно более протестированных релизов, при этом дистрибьютор специально гарантирует выпуск обновлений для данного релиза на определенный достаточно продолжительный срок.
⊚Ubuntu, ⊚SLES, ⊚RHEL, ⊚Alt
- Тестовый релиз. В противовес стабильному релизу, который обычно содержит протестированное ПО, некоторые дистрибутивы еще поддерживают выпуск тестовых версий с наисвежайшими версиями программ и библиотек, но при этом менее протестированные. Используется любителями всего нового и разработчиками. Позже на основе этого релиза будет выпущен стабильный релиз.
⊚Kali_Linux
- Роллинг-релиз (Rolling_release). Есть дистрибутивы, которые умудрились организовать сборку, проверку зависимостей пакетов и тестирование своего дистрибутива так, что это позволяет им выпускать стабильные релизы буквально ежедневно. Такие дистрибутивы предоставляют своим пользователям наиболее свежие версии программ. При этом в отличие от тестового релиза, который изначально позиционируется как тестовая (и, вероятно, не совсем стабильная) версия дистрибутива роллинг-релиз всё же позиционируется как вполне стабильная версия (за счет некой автоматизации в сборке и тестировании). Обычно такие дистрибутивы вместо классической нумерации версий (в виде увеличивающего на единицу числа) используют дату.
⊚openSUSE, ⊚CentOS Stream, ⊚Arch, ⊚Calculate_Linux, ⊚GeckoLinux

Отличия: 3. Форма организации
- 3.1 Коммерческие дистрибутивы и развиваемые сообществом добровольцев.
- 3.2 Прогнозируемость проекта.
- 3.3 Принадлежность к стране, понятие "отечественный Linux".
Вопрос: Как можно продавать то, что по определению распространяется бесплатно?
Начнем с того, что разберемся с тем, как можно продавать ОС, созданную на основе свободного (а в большинстве случаев это также означает "бесплатного") ПО. Кстати в лицензиях на свободное ПО нет запретов на продажу - главное чтобы с проданным ПО предоставлялись его исходники.
Здесь я не агитирую переходить на коммерческие дистрибутивы, скорее пытаюсь показать, за какую работу берется оплата. А стоит она того или нет, решать уже вам самим.
От "свободного ПО" до готового дистрибутива достаточно длинный путь. Давайте оценим, за что платят клиенты коммерческих дистрибутивов, и какая работа кем выполняется. Перечислю действующих лиц и их вклад в создание ОС (здесь у меня главная цель - показать, что разработчик и майнтейнер - это разные люди. Часто это совсем не очевидно для новичков):
- Разработчик (программист или группа программистов, организация), который разрабатывает программу. Чаще всего не имеет никакого отношения к используемому вами дистрибутиву. Не занимается сборкой пакетов для различных дистрибутивов (максимум под тот дистрибутив, который использует сам). И это не прихоть и не вредность. Попробуйте помимо разработки программы поддерживать с десяток типов пакетов под 200+ дистрибутивов [Часто авторы не совсем свободного ПО создают, как минимум, по одному пакету для дистрибутивов, основанных на ⊚RedHat и на ⊚Debian и, если у вас другой дистрибутив, придется помучиться с их установкой]. Разработчик выкладывает исходники программы или на своем сайте, или на каком-нибудь git-хранилище проектов.
- Майнтейнер - это уже сотрудник дистрибутива. Он, зная особенности дистрибутива, собирает из исходников пакет под этот дистрибутив, отслеживает зависимости с другими пакетами, добавляет (часто и пишет) патчи, тестируют работоспособность собранного пакета, отслеживает какие обновления появляются в исходниках. Полученный пакет выкладывается в репозиторий дистрибутива.
- А также остальные (в бесплатных проектах это выполняется "внутренними силами", но нужно понимать, что это расходы):
- Архитектор системы. Требуется собрать много разрозненных пакетов в одну связанную операционную систему и для каждой пользовательской задачи должна присутствовать хотя бы одна утилита.
- Ну и дизайнер. Часто замечают только его работу с "новыми нескучными обоями". И если это единственное новшество в дистрибутиве, то просуществует такой проект не долго и будет вспоминаться (только ради шутки как очередной ⊚BolgenOS).
- Сотрудники техподдержки. Те, кто целыми днями ожидают (и отвечают на запросы) у телефона или электронной почты.
- Менеджеры, бухгалтеры, админы сайта.
Для начала надо понимать, что свободно распространяется. Распространяются исходники программ, из которых состоит ОС. Но исходники - это еще не сама программа (хотя и основная её часть), и для того, чтобы получить рабочую программу, из исходников нужно скомпилировать бинарные запускаемые файлы (в идеале создать установочный пакет). И это не так уж и сложно, хотя если вы этого ни разу не делали, то рекомендую хотя бы раз потратить пару дней на знакомство с gcc, make (Makefile), autotools (autoconf, automake), CMake, dpkg-source или rpmbuid. Получите полезный опыт и кругозор, а также сможете оценить, стоит ли платить за подобную регулярную (а с каждым обновлением необходимо будет пересобрать пакет) работу майнтейнерам дистрибутива.
И так нужно сделать для всех утилит, добавляемых в дистрибутив. При этом утилиты используют (распространенный подход в Linux) большое количество сторонних библиотек, которые также необходимо собрать и доставить. Плюс библиотеки бывают разных версий, а также разные утилиты могут использовать разные версии python, php, openssl, … и нужно умудрится собрать это всё в рамках одной ОС.
Приведу аналогию. Это чем-то похоже на свободно распространяемые в интернете рецепты по приготовлению блюд. Есть те, кто готов потратить не один вечер на самостоятельную готовку в режиме проб и ошибок (есть даже те, кто от этого получает удовольствие), но ведь есть и те, кто пойдет в кафе/ресторан, заплатит разные деньги разного уровня профессионалам и получит более быстрый и предсказуемый результат. Но еще раз замечу, рецепты абсолютно любых и даже сильно экзотических блюд сейчас вполне легко можно найти в интернете абсолютно бесплатно.
Еще одна очень верная цитата: "Следует хотя бы раз попробовать развернуть дистрибутив ⊚Linux_From_Scratch. У этого действия есть один интересный побочный эффект: люди, которые склонны проявлять неудовлетворенность в списках рассылки и на форумах дистрибутивов, вероятно, проявят гораздо больше уважения к разработчикам. Установка готового дистрибутива - тривиальная задача. Но совсем нетривиально создание набора из четырех компакт-дисков, содержащих стабильную, безопасную и надежную операционную систему и тысячи приложений".

3.1 Коммерческие дистрибутивы и развиваемые сообществом добровольцев.
3.1a) Коммерческие дистрибутивы. Здесь имеются в виду различные способы получения прибыли от производства дистрибутива.
- Продажа лицензий или подписок на использование дистрибутива. Самый прямолинейный способ - просто выставить цену, сколько стоит использование дистрибутива на одном компьютере (в том числе, на виртуальном).
⊚RHEL, SLES, ⊚Alt, ⊚AstraLinux
- Часто предоставляют бесплатный доступ к использованию коммерческого дистрибутива:
- для образовательных учреждений;
- для разработчиков/тестеров или различных деловых партнеров;
- для малых организаций (например, при установке на менее, чем на десять компьютеров);
- на пробный период (обычно несколько месяцев).
⊚RHEL, ⊚SLES
- Платные обновления. Фактически дистрибьютор берет на себя ответственность в случае выявления уязвимостей (в безопасности или в функционале) как можно быстрее выпустить обновление пакета с исправлением. Часто стабильный релиз дистрибутива можно свободно скачать с сайта дистрибутива и использовать, в том числе и в коммерческих интересах. Он будет полностью работоспособный (ничем не отличатся от оплаченной версии) и продолжать работать в полной мере и по истечению тестового периода, однако по истечению тестового периода будут недоступны обновления. Некоторые дистрибутивы своевременно предоставляют обновления (по мере их появления) для тех, кто оформил платную подписку и с задержкой (например, в несколько недель) для тех, кто использует дистрибутив бесплатно.
- Платная техподдержка. Цена лицензии зависит от выбранного плана техподдержки: на какой срок предоставляется техподдержка, в какие дни и время (например, предусмотрено ли устранение проблем в нерабочие дни), скорость реакции на запрос, наличия нескольких уровней поддержки, формата взаимодействия (по телефону, e-mail/мессенджеры, "срочно высылают инженера на вертолете").
- Дополнительные продукты и услуги. Дополнительные готовые (часто платные, но могут быть и бесплатные) решения для централизованного управления компьютерным “парком” в организации, кластерные решения, обеспечивающие минимальное время простоя серверов, сервер обновлений внутри организации и т.д. Все это может быть не востребовано (либо, в простых случаях, реализовано собственными разработчиками) в небольшой компании, но в больших организациях проще и лучше (а иногда и дешевле) использовать готовое проверенное решение.
- Также обычно организованы и поддерживаются в актуальном состоянии различные онлайн-сервисы: официальный сайт, репозитории, форум, bugzilla, wiki-документация.
- Сертификации. Отдельные процедуры, требующие от дистрибьютора затрат как временных, так и финансовых, но предоставляющие клиентам дополнительные гарантии.
- Сертификаты на соответствие (ФСТЭК, ФСБ, Минобороны). Они подтверждают отсутствие недекларированных возможностей и удовлетворение требованиям безопасности. Бывают различных уровней.
- Сертификация на совместимость ПО. Проверяется и гарантируется, что данное дополнительное (не входящие в дистрибутив) ПО устанавливается и работает без ошибок.
- Сертификация на совместимость оборудования. Проверяется и гарантируется, что дистрибутив распознает и работает без ошибок с данным оборудованием (планшет, ноутбуку, видеокарты, токены, сканеры, МФУ, СХД, …).
⊚Alt, ⊚AstraLinux, ⊚SLES
Из минусов стоит отметить, что большинство коммерческих дистрибутивов в сравнении с дистрибутивами общего назначения имеют в официальных репозиториях гораздо меньше пакетов (но всё же достаточно много), и эти пакеты не самых свежих версий (а наиболее протестированные). Это обусловлено необходимостью тестировать и поддерживать весь софт, входящий в дистрибутив. Хотя обычно имеются различные сторонние (за качество которых уже коммерческая компания не отвечает) репозитории с дополнительными пакетами.
⊚SLES, ⊚RHEL, ⊚Ubuntu

3.1b) Дистрибутивы, развиваемые сообществом
Мое личное мнение, что многообразие дистрибутивов Linux, развиваемых сообществом, и есть основа экосистемы Linux, которая позволяет Linux находиться на передовой развития информационных технологий. Здесь появляются и апробируются новые решения и технологии. Работает эволюционный подход: хорошие идеи находят своих последователей и продолжают развитие, остальные отмирают, но это не означает, что идеи были плохими, возможно, они были предложены не ко времени. Кроме того, со временем становится заметно, под свои задачи люди разрабатывают лучше, чем на продажу. И, мне кажется, основная заслуга Линуса Торвальдса не совсем в том, что он разработал ядро Linux, а в том что он своим письмом (призывом присоединяться к проекту) собрал вокруг этого ядра сообщество, и уже вместе с его участниками создали огромный международный проект и экосистему, с которой стало сложно конкурировать другим "популярным" ОС. Тут также огромная заслуга Ричарда Мэттью Столлмана с его проектом GNU и лицензией GPL. Это кодовая база и юридическая база, которые служат основным фундаментом ОС GNU/Linux.
Тут выделил бы два наиболее распространенных подхода в форме организации сообщества.
- Меритократическое правление. Из наиболее активных участников сообщества выбираются ответственные за принятие решений о развитии проекта и за разрешение спорных вопросов. Эти люди выбираются на некоторый ограниченный срок и действуют по заранее оговоренным правилам взаимоотношений и принятия решений.
⊚Debian, ⊚Alt, ⊚Arch
- Великодушный пожизненный диктатор. Один человек, организовавший проект (или бывает выбранная должность, после того как основатель по каким-то причинам отошел от проекта) полностью берет на себя право принятия ключевых решений и урегулирование спорных решений (когда мнения участников сообщества разделяются). "Великодушность" - обязательный критерий, так как участие в разработке такого дистрибутива добровольное, а значит, "тиран-самодур" быстро растеряет последователей (ничто не мешает переключиться на развитие другого проекта).
⊚Ubuntu, ⊚Slackware, ядро Linux

