Дистрибутивы Linux: клоны, форки, ремиксы…

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

Генеалогическое древо дистрибутивов Linux больше всего напоминает баобаб, оплетённый лианами: от одного ствола отходят ветви разного размера и свойств, да ещё и прикрытые компонентами, не всегда связанными генетически с данной ветвью. И чтобы разобраться в этом хитросплетении, перво-наперво не худо бы определиться с терминологией. Каковая достаточно неоднозначна.

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

Начнём с того, что все ныне живущие и развивающиеся дистрибутивы прямо (то есть путём наследования кода) или косвенно (посредством наследования идей) происходят от трёх первопредков -- назовём их историческими предшественниками. Это Slackware, Debian, Red Hat. Которые, конечно, сами много унаследовали от дистрибутивов, так сказать, доисторических, таких, как MCC Interim Linux, TAMU и особенно SLS, однако в эти столь былинные времена углубляться не будем. А отметим зато, что на многие аспекты дистростроения в Linux оказали влияние и BSD-системы, особенно FreeBSD.

Традиционно к дистрибутивам, непосредственно производным от трёх родительских, применяется обычно термин клон (clone). Он используется также и для вторых производных -- например, ранний Mandrake, рассматривавшийся как клон Red Hat'а, в свою очередь стал основой для создания Altlinux. Однако такое значение термина клон представляется излишне широким.

Исходно термин клон (в биологии) применялся для именования организма, генетически идентичного исходному. Поэтому применительно к дистрибутивам клонами логично называть системы, полностью воспроизводящие функциональность системы исходной и основанные на той же кодовой базе. В этом смысле чистыми клонами ныне можно назвать, пожалуй, только такие дистрибутивы, как CentOS или Scientific Linux -- результаты перекомпиляции исходных текстов Red Hat, сохраняющие с родителем почти полную бинарную совместимость -- и это принципиальная позиция их разработчиков. Из дистрибутивов прежних лет типичным клоном Red Hat являлся Bkack Cat, создатели которого также ориентировались на полную совместимость с прототипом.

Клон может добавлять некоторую, обычно второстепенную, функциональность к родительской системе (например, Black Cat отличался от Red Hat в первую очередь улучшенной поддержкой кириллицы). Но это отнюдь не обязательно. Обычно возникновение клонов имеет под собой юридические или финансовые причины. Так, и Scientific Linux, и CentOS возникли после превращения Red Hat -- дистрибутива общего назначения -- в коммерческий RHEL (Red Hat Enterprise Linux), в бинарном виде распространяющийся исключительно вместе с платной коммерческой поддержкой. И ориентированы они были на тех пользователей, которые нуждались в исполнении приложений именно под RHEL, но не испытывали необходимости в его технической поддержке. Или просто не могли позволить себе таковую финансово. И потому сохранение совместимости с исходной системой является непременным условием дальнейшего их развития, а следовательно -- видоопределяющим признаком.

От клонов следует отличать римейки (remake) -- это продукты реанимации (или гальванизации) проектов, по тем или иным причинам прекративших своё развитие. Хотя чистые римейки в мире Linux -- явление, похоже, крайне редкое. Пожалуй, на моей памяти была лишь пара таких случаев:

  1. приобретение фирмой Xandros дистрибутива Corel Linux, находившегося в состоянии клинической смерти;
  2. воссоздание заброшенного автором дистрибутива LRs GNU Linux под именем MyGeOs, каковой, впрочем, тоже скорее мёртв, чем жив.

В какой-то мере Gentoo можно считать римейком в Бозе почившего Stampede -- на конец прошлого тысячелетия одного из самых прогрессивных и фронтирных дистрибутивов Linux. Однако здесь скорее приходится говорить об идейном влиянии, нежели собственно воскрешении усопшего.

К клонам идеологически близки порты (ports) -- перенос инфраструктуры родительского дистрибутива на аппаратные платформы, им не поддерживаемые. Исторически одним из первых портов был, вероятно, Yellow Dog, вариант Red Hat, адаптированный для работы на машинах с процессором PowerPC (а ныне также и Cell -- например, на Sony PlayStation 3). Более современные примеры -- адаптации Slackware для работы на 64-битных Intel-совместимых процессорах, такие, как SLAMD64 и BlueWhite64.

Разумеется, о бинарной совместимости портов с исходными системами говорить не приходится. Однако, поскольку главная их задача -- поддержание привычной среды на ином "железе", они, как и клоны, должны воспроизводить инфраструктуру своих прародителей. Так, Yellow Dog вот уже более 10 лет развивается параллельно со своим первопредком, оставаясь, насколько мне известно, чрезвычайно на него похожим.

Порты на разные платформы могут развиваться и в рамках исходного дистрибутива -- изначально или со временем. В последнем случае ранее созданные порты могут либо воссоединиться с генеральной линией, либо пойти пойти своим путём и обрести индивидуальность. Посмотрим, какова будет судьба 64-битных портов Slackware после обретения последней официальной поддержки архитектуры x86_64.

Напротив, форки (fork) -- это отклонения от первоначальной генеральной линии развития дистрибутива, появляющиеся вследствие идеологических расхождений внутри команды разработчиков (или просто личных обстоятельств). Примеры форков особенно типичны для BSD-мира. Так, OpenBSD отделилась от NetBSD вследствие различия взглядов на вопросы безопасности, хотя, как говорят, именно в этом случае превалировали сугубо личные мотивы. А DragonFly BSD отпочковалась от FreeBSD в момент, когда генеральное развитие последней пошло по пути 5-й ветки.

В мире Linux чистых форков можно найти не так уж и много. Наиболее показательным будет, наверное, случай с Altlinux. Её предшественница, IPLabs Linux Team, на протяжении нескольких лет распространяла Mandrake Russian Edition -- даже не клон, а почти точную копию исходной системы, дополненную в первую очередь локально зависимыми компонентами, которые активно включались в upstream основного дистрибутива. Пока в один прекрасный (или не очень?) момент представления о локализации разработчиков Mandrake и её русской инкарнации не разошлись настолько, что их совместное ведение кодового хозяйства оказалось невозможным. В результате появился дистрибутив Altlinux.

Первоначально как форк Debian зародилась и Ubuntu -- исходно главной задачей этого дистрибутива была организация более короткого и планового релиз-цикла, при сохранении как общей кодовой базы, так и бинарной совместимости.

На обоих приведённых примерах хорошо видно, что состояние "чистого" форка является сугубо временным. Ориентируясь на ту же пользовательскую аудиторию, что и исходные системы, форки со временем неизбежно обрастают собственными особенностями, и о совместимости между ними говорить уже не приходится. Так, ныне взаимообмен пакетов и репозиториев между Mandriva и Altlinux практически невозможен. А использование пакетов Debian в Ubuntu (и наоборот) -- в общем случае весьма проблематично. Хотя для пакетов с простыми зависимостями ещё удаётся. Однако рано или поздно судьба любого форка -- превратиться в дериват.

Создатели дериватов, приняв за основу тот или иной дистрибутив, изначально ставят своей целью изменение его ориентации и, соответственно, функциональности. Исторически первым дериватом, безусловно, была Suse: взяв в качестве базовой системы конструктор Slackware, они предназначили его для корпоративного использования. И в этих целях снабдили средством автоматического конфигурирования -- первым вариантом Yast'а.

В прямо противоположном направлении действовали разработчики Mandrake. Первоначально внешне это был весьма точный клон Red Hat. Однако если последний с самого своего зарождения ориентировался на корпоративное применение, то Mandrake резко сменил сексуальную ориентацию, первым, пожалуй, поставив во главу угла любовь к конечному, в том числе домашнему, пользователю -- юзерофилию, пышным цветом распустившуюся в наши дни.

Промежуточную позицию занял Caldera Linux, позднее получивший имя OpenLinux. Будучи, как и Mandrake, изначально продуктом клонирования Red Hat, этот дистрибутив, с одной стороны, унаследовал от него приверженность корпоративным ценностям. А с другой -- с симпатией относился и к конечным пользователям, правда, скорее не домашним, а офисным. Став в результате прототипом систем быстрого развёртывания, о которых я писал на предыдущей странице.

Дериваты -- наиболее многочисленная разновидность дистрибутивов. И со временем они настолько отходят от своих прародителей, что об их происхождении может напоминать разве что формат пакетов. А в случае с Suse и такой памяти не осталось...

Термины респин и ремикс вошли в обиход недавно, и ещё не вполне устоялись. Тем не менее, респином можно назвать нечто среднее между клоном и дериватом. С одной стороны, он также предполагает переориентацию сферы использования, с другой, как правило, сохраняет (или декларирует) совместимость с предком. К респинам можно отнести такое ответвление от Ubuntu, как Mint, снабжаемый "из коробки" мультимедийными кодеками, проприетарными драйверами и тому подобными не вполне свободными компонентами.

Ремикс же -- это чистая перекоплектация исходного дистрибутива под те или иные специальные задачи. Наибольшее их количество можно обнаружить также среди потомков Ubuntu. Одни из них -- Kubuntu, Xubuntu, Edubuntu, Mythbuntu, -- изначально имели или обрели со временем официальный статус, другие -- Fluxbuntu, CrunchBang -- ведут партизанские действия на этом фронте. Как ремикс позиционируется его майнтайнерами и проект Russian Fedora. В отличие от всех остальных производных дистрибутивов, ремиксы основываются не на кодовой базе исходной системы, а непосредственно на её репозиториях, перекомпиляция пакетов в них не предполагается в принципе.

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

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

Самым ярким и известным примером дистрибутивов-контаминантов выступает, безусловно, Gentoo: в нём объединились идеи простоты, унаследованной от Slackware, оптимизации сборки под "железо", впервые реализованной в Stampede, и портообразная система сборки пакетов из исходников, развивающая принципы, заложенные в портах FreeBSD.

Практически то же самое можно сказать и о таких дистрибутивах, как CRUX и Archlinux, в меньшей степени -- о Sorcerer и его дериватах SourceMage и Lunar. Наконец, основоположник идеи сборки из исходников -- дистрибутив RockLinux -- также можно причислить к этой группе. Хотя главное, что он в себе контаминировал -- это идеи конструктивизма Linux'а додистрибутивной эры.

Есть и ещё один вид взаимодействия дистрибутивов, не описываемый в приведённых выше терминах: когда единый дистрибутив расщепляется на полностью свободную и коммерческую ветки, существующие в тесном взаимодействии, причём первая служит своего рода испытательным полигоном для второй. Дабы не плодить сущности, название этому явлению придумывать не будем, тем более что в мире Linux ему есть лишь два примера -- пары Fedora - RHEL и OpenSuse - Suse.


Теги: