5 июля 2011 г.

Дистрибутивы Linux. Часть II

Хоть Virens частично и раскрыл эту тему в своем последнем посте, пост, приведенный ниже уже был наполовину готов. И я подумал - а не буду я отменять выкладывание этого поста. Что лучше, что хуже пусть судят остальные ;). Вопросы, касающиеся пакетного менеджмента я, в свое время, тоже опишу.


В первой части были рассмотрены основные определения, касающиеся понимания дистрибутива Linux. Теперь, собственно, я попытаюсь собрать это все воедино. 

Как получается очередной дистрибутив Linux?


Первый этап - это появление человека, которого не устраивают существующие дистрибутивы. По этому поводу у него будут обоснованные аргументы. Вопрос этих аргументов достаточно тонкий и лежит обычно в области "нравится - не нравится", поэтому тут сильно углубляться не стоит. Обычно, чтобы дистрибутив не был очередной однодневкой, у этого человека должны быть определенные харизматические качества (он становится во главе нового сообщества и должен сплотить его) и организаторские способности (мир свободного ПО слабо поддается деспотическому управлению, поэтому тут применяются иные методы руководства).
Чтобы понять, о чем я тут пишу, достаточно посмотреть на таких ярких личностей, как Патрик Фолькердинг (основатель, архитектор и пожизненный лидер Slackware), Ян Мердок (основатель Debian, хоть он в настоящее время и не имеет отношения к этому проекту, но заложенные им идеи живут по сей день) и Марк Шаттлворт (основатель Canonical и Ubuntu).

Второй этап - этот человек и сообщество вокруг него принимает решение о том, будет ли дистрибутив базироваться на существующем или будет самостоятельным. У любого подхода есть свои преимущества и недостатки.
Дистрибутив, претендующий на независимость:
  • Берет исходные коды для своих пакетов непосредственно на сайтах разработчиков открытого ПО.
  • Обладает своей собственной системой пакетного менеджмента (чтоб не зависеть от других). Имеется в виду, конечно же, не совсем и не всегда разработка с нуля. Дистрибутив может использовать, допустим rpm, со своими расширениями, но высокоуровневый пакетный менеджер (такой как yum, zipper или apt) у независимого дистрибутива будет свой. Можно, конечно, взять имеющийся пакетный менеджер, но если вдруг его бросят оригинальные разработчики, то можно огрести кучу проблем. Пример, который сходу приходит на ум, - это ALT Linux со своим apt-rpm, который заброшен оригинальными разработчиками и поддерживается теперь только альтовцами.
  • Обладает собственным сообществом разработчиков. Это тоже большая проблема, потому что свободные разработчики они на то и свободные, что заставить их сделать что-то невозможно. Если им что-то не понравится - они уйдут в другой проект. И отдельная проблема - это убедить их в том, что новый проект будет нужен другим и к нему действительно стоит прикладывать руки и время.
  • Обладает критическим числом квалифицированных разработчиков. Я это выделил в отдельный пункт, потому что квалифицированные кадры - это отдельная проблема, ведь их всегда не хватает. Разработчики могут просто упаковывать необходимый софт в пакеты дистрибутива (как это делают в ArchLinux), а могут и сопровождать подконтрольные пакеты, самостоятельно портируя для них необходимые исправления. Первое может делать кто угодно, а вот для второго уже необходимо наличие определенных знаний. Ряд системных пакетов (компилятор, сборочная среда, Х-сервер, ядро) все равно придется сопровождать на уровне, отличном от просто упаковки нужного софта, для чего и нужны такие разработчики.
Для дистрибутива производного все обычно намного проще. Пакетный менеджмент и пакеты берутся из репозитория исходного дистрибутива (причем это легко автоматизируется с помощью скриптов). Это все поясняет, почему производных дистрибутивов значительно больше.

Например, Ubuntu берет бОльшую часть пакетов из репозитория Debian, не модифицируя их, что примерно показано вот здесь. Все свои улучшения вносятся набором дополнительных пакетов, таких как ubuntu-artwork, ubuntu-branding. А Linux Mint, в свою очередь, делает то же самое (но в значительно меньшем объеме) с Ubuntu, потому что является даже не производным дистрибутивом, а надстройкой над Ubuntu.

Итак, дело за третьим этапом - разработка архитектуры дистрибутива (ничего общего с поддержкой архитектур процессоров тут нет). Архитектура - это изначальное проектирование проекта как такового, и это именно то, что делает дистрибутив отличным от других. Это те идеи, цели и критерии, которые закладываются в его существование, и изменить потом что-либо достаточно трудно. Это все то, что формирует дистрибутив и отношение к нему тех, кто пользуется им. Вопрос выбора дистрибутива лежит обычно в сфере личных пристрастий, и именно поэтому на тему «Какой дистрибутив Linux лучший?» на форумах раздуваются жуткие холивары :). Тех кого не забанили на популярных форумах, за вопрос «Что лучше rpm или deb?» вполне могут попробовать испытать терпение модераторов спросив про дистрибутив :).

Ниже приведен примерный список всего того, что делает дистрибутив Linux особенным (и одновременно это набор показателей оценки его качества и серьезности задела):
  • То, ради чего создается дистрибутив, - его миссия. У Debian - это создание максимально свободной универсальной операционной системы для всех. У Red Hat - примерно то же самое, только для корпоративных заказчиков. У Archlinux и Slackware - это создание дистрибутива на основе принципа KISS (максимально возможная простота), то есть отсутствие (либо минимальное наличие) каких-либо средств конфигурирования дистрибутива и ПО, в него входящего. Сюда же относится лицензионная политика для ПО дистрибутива. Есть ряд дистрибутивов, относимых к максимально свободным, – из них удален весь проприетарный софт, закрытые прошивки для устройств. Какой выбирать по данному критерию – каждый решает самостоятельно. Найти всю интересующую информацию по данному вопросу для конкретного дистрибутива нетрудно. Чтобы узнать ее, достаточно знать английский язык и название официального сайта дистрибутива.
  • Анонсируемая сфера применения дистрибутива - встроенные системы, десктопы, сервера, облачные вычисления, роутеры или «и то и другое, и можно без хлеба» (c). Сходу сделать самостоятельный проект, рассчитанный на универсальность, вряд ли у кого получится (а если кто обещает это сделать – или дурак, или маркетолог :) ), поэтому многие проекты идут на то, что поддерживают определенную часть репозитория, оставляя сообществу другую часть - например, как в Ubuntu, где есть репозитории main и restricted, поддерживаемые Canonical, и multiverse и universe, поддерживаемые сообществом. Примерно та же схема у Red Hat/Fedora. Fedora - фарм-дистрибутив, в который сообщество собирает пакеты, а Red Hat отбирает из их репозитория то, что подходит для Red Hat Enterprise Linux, чтобы потом поддерживать это все безобразие максимально возможный срок. Плюс во всему часть пакетов Fedora пересобирается сообществом для пользователей RHEL в рамках проекта EPEL.
  • Список поддерживаемых дистрибутивом архитектур. Обычно это вездесущие x86-совместимые - i386/i686 и x86_64. Сейчас в список широко поддерживаемых архитектур все чаще добавляется ARM. Самый большой список поддерживаемых архитектур – у Debian и Gentoo.
  • Объем пакетов во всех репозиториях дистрибутива. Большинство проектов позволяют выполнять поиск пакетов через обычный веб-интерфейс без необходимости установки дистрибутива. Таковы Gentoo, Fedora, ArchLinux, openSUSE, Debian, Ubuntu и даже ALT Linux. Это позволяет оценить наличие в дистрибутиве нужного ПО и его версию.
  • Анонсируемый уровень пользователей дистрибутива. В данном случае под пользователями понимаются все, кто будет эксплуатировать этот дистрибутив, будь то десктопные пользователи или администраторы серверов. Есть дистрибутивы для очень опытных пользователей (например, новичок в мире Linux просто не сможет поставить Gentoo) и для не искушенных пользователей, как, например Ubuntu.
  • Конечная форма доставки пакетов пользователям - поставляется ли дистрибутив в бинарном виде или, как Gentoo, собирается на локальной машине. Тут могут быть и смешанные варианты. ArchLinux, например, имеет репозиторий бинарных пакетов и свою собственную систему для их сборки – ABS. Если пакета нет в базовых репозиториях, то можно легко найти файл спецификации для сборки пакета PKGBUILD в пользовательском репозитории AUR и собрать его самостоятельно. Та же схема и у Slackware. В этом дистрибутиве есть базовый репозиторий, подерживаемый на основе релизов. Все дополнительное ПО, по каким-то причинам не включенное Патриком в дистрибутив его пользователям предлагается собирать с помощью специальных скриптов SlackBuild.
  • Политика релизов дистрибутива - выпускаются ли релизы или дистрибутив безрелизный. Обычно анонсируется срок жизни релиза (срок поддержки, за время которого выпускаются обновления) и примерные или точные сроки выхода новых релизов. Например, у Debian релиз выходит по готовности (примерно раз в два-три года), Ubuntu выпускает релизы точно в срок: релизы с долгим временем поддержки – раз в два года, с коротким – раз в полгода.
  • Немаловажный фактор, отражающий качество сборки пакетов и квалификацию их майнтейнеров, – это стабильность репозитория для выпущенного релиза (и пакетов в нем). К сожалению, это познается только на собственном опыте. В некоторых дистрибутивах есть тенденции, что обновления нет-нет да и ломают что-нибудь. Не так серьезно, конечно, как в дистрибутивах со скользящими релизами, но все равно неприятно.
  • Для дистрибутивов, выходящих на основе релизов, огромную важность несет скорость выхода обновлений, связанных с безопасностью ПО. Это тоже показывает уровень квалификации разработчиков дистрибутива. Серьезные дистрибутивы выпускают такие обновления оперативно, несерьезные берут исправления у серьезных :).
  • Уровень модификации пакетов апстрим. Некоторые проекты, типа Archlinux, Gentoo, Slackware используют авторские пакеты без каких-либо серьезных модификаций. Другие проекты, типа Fedora и openSUSE обычно сильно патчат все свои пакеты. Иногда это сказывается на стабильности этих дистрибутивов, иногда нет... Ubuntu, например, также сильно модифицирует все пакеты, связанные с рабочим столом пользователя, потому что компания Canonical оплачивает труд профессиональных дизайнеров, которые и улучшают ее внешний вид. Это причина того, что в одних дистрибутивах интерфейс оконной среды сделан в стиле «разработано профессиональными программистами», а в других – любо-дорого посмотреть.
  • Системные компоненты, включенные в дистрибутив по умолчанию. Также важна возможность предоставления вариантов этих компонентов и легкость их смены. Кто-то предоставляет эту возможность, кто-то нет. Например, в Fedora, начиная с 15-й версии, система инициализации systemd приколочена к системе намертво, а в openSUSE по-умолчанию используется старый добрый sysvinit, а systemd предоставляется как вариант. Еще один пример - во все дистрибутивы включается ядро Linux :). И во всех дистрибутивах перед разработчиками встают такие вопросы - нужно ли использовать какие-то дополнительные патчи для него, типа bfs, или нет? Нужно ли предоставлять пользователям несколько вариантов «вкуса» (flavours) ядра, как делают openSUSE, Ubuntu и Mandriva или стоит обойтись одним универсальным вариантом? Другие примеры – это возможность выбора различных вариантов сетевых служб, имеющих аналогичный функционал (например, sendmail/postfix), Java-сред по умолчанию, вариантов рабочего стола, офисного пакета (Openoffice.org или Libreoffice), оконной среды - KDE/GNOME/XFCE/Openbox/WindowMaker и т.п.
  • Принципы построения сообщества вокруг дистрибутива. Обычно это вопросы иерархии тех, кто дистрибутив разрабатывает: кто будет принимать технические решения, кто будет обладать правом арбитра при решении споров и правом вето, как будут приниматься пожелания. Не менее важно - как построена обратная связь с пользователями дистрибутива - только через систему отслеживания ошибок или нечто подобное OpenFATE в openSUSE, brainstorm в Ubuntu и GLEP в Gentoo. Важны вопросы приема в проект новых участников, условия этого вступления. В нормальных и серьезных проектах такие вещи определяются политиками и руководящими документами. Легкость нахождения этих документов и их полнота - отличный показатель серьезности проекта.
  • Доступность документации для конкретного дистрибутива. Все серьезные проекты имеют не менее серьезные wiki-страницы. По уровню wiki и ее проработанности лидирует, на мой взгляд, wiki.archlinux.org, неплохие страницы документации у Gentoo и Ubuntu. Для администраторов Red Hat кладезь информации - сайт docs.redhat.com.
  • Еще один показатель качества дистрибутива - это наличие на сайте с документацией правил сборки пакетов для него с обязательными требованиями по качеству их сборки. У дистрибутивов, относящих себя к серьезным проектам, всегда есть в свободном доступе скрипты для выполнения такой проверки (deblint для Debian/Ubuntu, rpmlint в Fedora/openSUSE, sisyphus_check в ALT Linux). Эти скрипты используются в сборочной системе для контроля качества собранного пакета. Уровень серьезности таких проверок варьируется от дистрибутива к дистрибутиву, например, OBS проверяет исходный код на наличие утечек памяти, а в Debian в репозиторий не попадет пакет без man-страницы.
  • Тяжелый вопрос для каждого из проектов - вопрос инфраструктуры. У серьезного дистрибутива должен быть свой web-сайт, на котором размещаются основные документы, касающиеся дистрибутива, приема новых участников команды, сайт с документацией, формы для приема пожеланий по его развитию, и, конечно же, форум для общения и обмена мнениям. Помимо этого - сборочный сервер, сервер с репозиторием дистрибутива и репозиториями отдельных разработчиков. Инфраструктура никак не может быть виртуальной и требует для своей работы определенного количества денег. Крупным проектам технику обычно дарят, а список дарителей висит на веб-странице проекта в явном виде.
По приведенным критериям каждый может оценить свой любимый дистрибутив на предмет отношения его разработчиков к пользователям. Конечно же, этот набор критериев не полный, но определенные выводы сделать позволит.


Возможно ли на основе данной информации сделать какой-то выбор? Не знаю, если честно. Вопрос выбора дистрибутива – это как вопрос выбора автомобиля (если опустить финансовую сторону дела): человек может долго обсуждать технические аспекты вопроса, а потом выберет себе тот, где пепельница на удобном месте :).

Выбор дистрибутива можно делать примерно так:
Допустим, нам нужен дистрибутив с красивым десктопом из коробки, обладающий хорошей стабильностью и огромным количеством софта. Скорее всего, это будет Ubuntu LTS.Нужен дистрибутив под базу данных Oracle. Тут выбор маленький, и с вероятностью 95% ими будут Red Hat Enterprise Linux или SUSE.
Нужен дистрибутив под LAMP-сервер – хороший выбор тут Debian или Ubuntu Server.
Нужен дистрибутив под какой-нибудь маршрутизатор – скорее всего, это будет опять Debian из-за огромного количества поддерживаемых архитектур.
Если вы опытный пользователь, любите экспериментировать с системой, ставить несколько версий одного ПО «на потестить», цените огромную гибкость системы, любите, чтоб все было по-вашему и готовы платить за это своим временем, – однозначный выбор Gentoo.


Естественно, что это все приблизительно и приведено для примерных схем выбора, а не для очередного холивара :). Приведенная статья не может охватить все дистрибутивы Linux и сразу рассказать про них все (в ней тогда будет «многабукав» и читать ее мало кто рискнет :) ). Но если у меня получилось дать некую базу для дальнейшего гугления интересующей информации по сайтам конкретных проектов, думаю, что я достиг поставленной цели.

17 комментариев:

  1. >Нужен дистрибутив под базу данных Oracle

    скорее, это должен быть http://ru.wikipedia.org/wiki/Oracle_Linux хоть суть одно и то же с RHEL ;)

    ОтветитьУдалить
  2. Ага, тот же RHEL только сбоку :). Red Hat c Oracle заклятые друзья :)

    ОтветитьУдалить
  3. Антон, я снова потроллю чуток, ладно?

    Получилась песня без начала, середины и конца. Знаешь, как меня в своё время учили писать статьи? На каждый раздел, особенно заключение, задавать вопрос "Ну и что!?". Этот вопрос возникает по ходу текста постоянно - в нём нет ни единого раздела. Получается несколько сферическо-коневакуумно.

    Вот попробуй на примере этого текста хотя бы разбить его на разделы и подразделы. Текст, в общем хороший, не играет из-за отсутствия структуры.

    И на посошок. Способов описания, скажем, лягушки, для человека, никогда её не видевшего, в общем два. Первый: подробно, клетка за клеткой, составить топографическую карту лягушки. Подробно, да, но толку от этого - ни уму, ни сердцу. Всё равно не ясно в целом, как оно выглядит. И второй способ: ярко и броско очертить основный особенности, типа "маленькое, на четырёх лапках, брюхо жёлтое, а остальное зелёное, лупоглазое и квакает".

    ОтветитьУдалить
  4. Анонимный8 июля 2011 г., 19:00

    боже ж ты мой, ну я не знаю каким надо быть лобби, что бы ссылку на эту статью поместили на опеннете.

    не пойми не правильно, но нет здесь ничего, что бы могло сделать статью незаурядной. здесь нет развитых мыслей, нет идей, нет, даже(!), "авторского стиля изложения". бросается в глаза то, что материал является перекомпиляцией всего того, что ты читал в руководствах по выбору дистрибутивов. конечно, я не хочу сказать, что работа была слямзена, но работа эта напрасна - любой человек прочтя пару-тройку статей на эту тему, и сам сделает те же выводы что и представлены здесь.

    самое неприятное, что очень испортило статью - это желание "по дипломатичнее" понравится всем, от чего весь текст приобрёл аморфную форму, став этакой кляксой без углов и шероховатостей, но с резкими переходами, и главное, без особого смысла и какой либо структуры.

    ну и цель написания данной статьи мне видится как самопиар. не хочу что либо ещё говорить по этому поводу, просто, антон, ты не достиг своей цели и не описал мне "смысла многообразия linux дистрибутивов".

    ОтветитьУдалить
  5. 2virens:
    Ты не троллишь - ты обоснованно критикуешь ;).

    > Получается несколько сферическо-коневакуумно.
    Ну, блин, а иначе не получится в общем написать. В итоге в частности все скатится.

    Лето, сейчас, голова другим немного занята, вот материал и не получается упорядочить нормально. Хоть это и не аргумент.

    ОтветитьУдалить
  6. > ты не достиг своей цели и не описал мне
    > "смысла многообразия linux дистрибутивов".

    А я должен был Вам что-то описывать? Нравится читайте, не нравится - Alt+F4 решит эту проблему. Я вообще блог for fun веду.

    А насчет opennet'а - я статью туда не постил. Вопрос "зачем разместили статью?" к авторам сайта.

    ОтветитьУдалить
  7. Анонимный8 июля 2011 г., 20:35

    очень жаль, что ты подумал, что это выпад против тебя. это была критика и я думал что помогу тебе, указав на ошибки. мне неприятно объяснять такую элементарную вещь человеку, к которому я было начал испытывать симпатию.

    >А я должен был Вам что-то описывать?
    акстись, ты пишешь это для читателя. и я - читатель. ты ведь не ждал что каждый комментарий будет хвалебным, а женщины начнут умолять тебя провести ночь с ними кровать?

    и вообще, ни один человек, потративший время на то что бы прочесть о чём думает другой человек, не заслуживает такого отношения. за сим оскорблением покидаю Ваш блог, и желаю Вам скорее наладить отношения с вашими близкими и коллегами.

    ОтветитьУдалить
  8. Принцип KISS формулируется не так.

    ОтветитьУдалить
  9. Да, как-то нехорошо вышло - мы на тебя все накинулись, да ещё анонимусы с опеннета набежали. Держись, Антон :-)

    Чтобы тебе поднять настроение: меня там на опеннете местная школот^W профессионалы энтерпрайз-левел в комментариях вообще линчевать хочет :-) Порвали мой унылый бложек в щепки - говорят, что своими лживыми и всегда ошибочными статьями позорю Debian. Сами-то они, ясен пень, ум честь и совесть Дебиана - вон они как вики-то дебиановскую пишут, просто-таки любо-дорого. Не то, что мы с тобой...

    Так что если у меня слишком долго не будет постов, знай - длинные руки опеннетовских анонимусов до меня таки добрались :-)

    ОтветитьУдалить
  10. > Да, как-то нехорошо вышло - мы на тебя все
    > накинулись, да ещё анонимусы с опеннета
    > набежали. Держись, Антон :-)

    Да нормально все :). Я вообще не парюсь по поводу того, что кому-то что-то не нравится. И опеннет я постоянно мониторю и чего там они пишут тоже читал. Я там в одном месте даже вступился, когда тебя лжецом назвал анонимус, не нашедший в Дебиане Libreoffice :)

    P.S. Зато оба блога пропиарились хорошо. Хе-хе.

    ОтветитьУдалить
  11. Ну попиарились вы на один раз.
    Проблема в том, что у Чиркова в анонсе сказано, что материал объясняет смысл разнообразия дистрибутивов.
    А этого нет и в помине. Просто описаны различные дистрибутивы и названы некоторые причины, вызвавшие их возникновение.
    А смысла-то и нет. Причем нет его и на самом деле.
    Вполне достаточно было бы Ubuntu, RHEL, Gentoo и Slackware.
    Потом, самом начале курсивом сказано, что материал рассчитан на людей, начавших пользоваться линуксом после появления Убунту.
    Убунту появилась в 2004 году.
    Я абсолютно и железобетонно уверен , что в этих статьях нет ничего нового для человека, знакомого с линуксом более двух лет. Зачем такой задел в пять лет?
    С таким же успехом можно было бы сказать, что в материале нет ничего нового для лидей, интересующихся линуксом с прошлого века.
    Потом, второе место на Дистровотч занимает серьезный дистрибутив Минт.
    И потом, возник вопрос, в каком апстриме Дебиана Убунту берет Юнити, апстарт, индикаторы, Firefox?

    ОтветитьУдалить
  12. > Ну попиарились вы на один раз.
    Это шутка юмора такая была. Так же как и про Ubuntu курсивом в начале. Я просто смайлики не везде ставлю.

    > Проблема в том, что у Чиркова в анонсе
    > сказано, что материал объясняет смысл
    > разнообразия дистрибутивов.

    Вам моего слова достаточно будет в отношении того, что я не знаю каким образом материал попал на opennet и анонс писал не я? Эти все вопросы к тому, кто писал этот самый анонс.

    > И потом, возник вопрос, в каком апстриме
    > Дебиана Убунту берет Юнити, апстарт,
    > индикаторы, Firefox?
    Я вообще-то писал о том, что Ubuntu берет порядка 70-80% пакетов из Debian, не модифицируя их. Остальное как раз и приходится на то, что Вы написали.

    ОтветитьУдалить
  13. В русском языке нет слова "майнтейнер".

    ОтветитьУдалить
  14. ответил в первой части на все сразу

    ОтветитьУдалить
  15. Анонимный13 июля 2011 г., 15:34

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

    ОтветитьУдалить
  16. Малыш, тебе делать нечего, да?

    ОтветитьУдалить