Linux: история дистростроения

Данный цикл статей посвящен развитию Linux в целом и российского Linux в частности - от SLS и до наших дней

[Алексей Федорчук (alv@posix.ru)]

Начало дистрибуции

Подобно первозданному Unix'у, Linux изначально являлся типичной "системой для себя". Более того, исходно единственным его назначением была разработка себя самого — никаких других целей Линус перед собой не ставил. Да и первые пользователи Linux'а устанавливали (точнее, собирали) систему для того, чтобы ее изучать и совершенствовать. Так что ни в каких дополнительных компонентах необходимости не возникало.

По свидетельству очевидцев, установка Linux в древние (до появления версии 1.0) времена была задачей не тривиальной даже для опытного компьютерщика (а иные, вероятно, Linux и не ставили). И в формирующемся Linux-сообществе возникла идея облегчить эту процедуру. В результате чего родилось понятие дистрибутив Linux. Это — система комплектации ядра ОС дополнительными программами и способ ее распространения. Она предполагает наличие программы-установщика и средств управления пакетами — теми самыми дополнительными программами. Впрочем, что такое дистрибутив — предмет отдельного разговора.

Так вот, практически сразу после объявления Линусом о новой ОС, началось создание его дистрибутивов. Сначала это были просто комплекты разработчика, не предполагавшие какого-либо иного использования. Однако уже в 1992 году появился дистрибутив SLS (Softlanding Linux System) Питера Мак-Дональда, включавший в себя оконную систему X — то есть, теоретически, пригодный для конечного пользователя.

Правда, как уже сказано, конечными пользователями Linux в те времена были либо его разработчики, либо люди, просто изучающие Unix. И на них ориентировалась вся первая волна дистрибутивов, в числе которых — дожившие до наших дней Slackware Патрика Фолькердинга и Debian, созданный Яном Мердоком, но очень быстро превратившийся в продукт, разрабатываемый независимым сообществом. Так что и дистрибутивы Linux по прежнему оставались "системами для себя".

Linux для всех

Тем не менее, уже тогда начались поиски форм его коммерческого распространения. И пионером тут выступила, насколько мне известно, компания Walnut Creek, ориентацией которой было распространение аудио-компактов и прочей медии. По имеющимся у меня данным, эта акула капитализма первой начала распространять на CD не только Linux Slackware, но и первые версии FreeBSD, а также долгое время являлась юридическим владельцем проекта BSD/386, более известным как BSDi — единственного коммерческого варианта берклианских систем.

А тем временем обозначилась первая сфера практического применения Linux — сервера сетевых служб, в том числе — web-сервера. Это вызвало к жизни вторую волну дистрибутивов (правда, по времени она практически пересеклась с первой — но в те героические годы счет велся на месяцы, если не на дни). Ими стали, в числе прочих, ушедших, Red Hat и Suse, оба они создавались как дистрибутивы "для всех" — хотя, конечно, под понятие "все" тут попадали в первую очередь администраторы компьютерных сетей, время Linux'а для конечного пользователя еще не пришло. Но важно, что и Red Hat, и Suse представляли собой не наборы для конструирования собственной системы, как Slackware (да и Debian в те годы, до разработки apt, также скорее предлагал собственное конструирование, нежели готовое решение), а попытки создания систем, работающих "из коробки".

Пример Suse (в те годы этот дистрибутив именовался S.U.S.E, по поводу расшифровки этой аббревиатуры сведения противоречивы) особенно показателен. Изначально это была обычная Slackware с прикрученной к ней универсальной системой установки и конфигурирования — YAST, призванной облегчить труд администратора, сведя его к простановке галочек в соответствующих полях. При этом ручные настройки путем прямой правки конфигов — единственный способ доведения до ума материнской Slackware, — отметались напрочь: попытки ручного вмешательство в Suse влекли в те годы последствия непредсказуемые.

Маленькое отступление: ради Бога, не подумайте, что я оцениваю дистрибутивы "для себя" и "для всех" с позиций "что такое хорошо, и что такое плохо". Тем более. как мы увидим дальше, история уже расставила точки над i в этом вопросе. И тот же дистрибутив Suse тому свидетельством: ныне он допускает как конфигурирование через YAST2, так и ручное вмешательство.

На трех ветеранах дистростроения — Slackware, Debian и Red Hat, — следует задержать внимание. Ибо каждый из них привнес тенденцию, получившую развитие в последующие годы. В Slackware вероятно, впервые появилось понятие пакетного менеджмента: набор утилит для установки, обновления и удаления прекомпилированных пакетов. В качестве пакетов выступали самые обычные тарбаллы, собранные из авторских исходников, и управление ими сводилось к развертыванию оных и инкорпорации в файловую системы. Этот инструментарий не подразумевал никакой политики в отношении зависимости пакетов, кроме сообщения о нарушении оных: разрешать их приходилось вручную, что требовало определенной квалификации.

Вместе с Debian родились понятия контроля зависимостей и дистрибутивных пакетов. Во-первых, deb-пакет включал в себя не только откомпилированные бинарники и прочие компоненты, необходимые для работы (библиотеки, конфиги, документацию), но и список пакетов, от которых зависит данный. Причем — с разделением на приоритетность таковых: различались зависимости обязательные (depends), без которых установка и работа пакета невозможна, настоятельно рекомендуемые (recommends), добавляющие существенную, с точки зрения майнтайнера пакета, функциональность, и рекомендуемые умеренно настойчиво (suggests) — добавляющие некоторые, возможно, полезные, функции.

Во-вторых, в Debian впервые появилось понятие модульности пакетов: дистрибутивный deb-пакет вовсе не обязательно соответствовал пакету авторскому, который мог делиться на составные части, каждая из которых могла быть установлена независимо. Это — с одной стороны. С другой же — появился термин "виртуальный пакет", то есть объединение группы взаимосвязанных пакетов, которые могли быть гуртом установлены одной командой (примерно в это же время во FreeBSD родились близкие по смыслу понятия "метапакет" и "метапорт"). Впрочем, потенциал, заложенный в формате пакетов Debian, в те годы реализован не был: он заиграл на исходе тысячелетия, после разработки инструментария apt.

Ну а достижением Red Hat стал rpm (Red Hat Package Manager) — средство управления бинарными пакетами одноименного формата. Такие пакеты также включали описание зависимостей — правда, без разделения на обязательные и опциональные, оставляя необходимость последних исключительно на совести майнтайнера. Да и информация о нарушении зависимостей, выдаваемая программой rpm, мягко говоря, внятностью не отличалась — предполагалось, что все они будут разрешены в ходе начальной установки собственной программой-инсталлятором. Тем не менее, именно этот инструмент программного менеджмента обеспечил популярность дистрибутива Red Hat и снискал ему множество продолжателей: кроме прямых клонов, на пакетирование в формате rpm перешел дистрибутив Suse (генетически, как уже было сказано, потомок Slackware).

Лицом к пользователю

Итак, на протяжении 1994-1997 годов дистрибутивы Linux обрастали инсталляторами, средствами сквозного конфигурирования и пакетного менеджмента, включали в себя пользовательские, в том числе офисные, приложения, правда, достаточно мрачные (Applix) и неуклюжие (ранние версии StarOffice). Предпринимались и первые попытки интернационализации. Однако от конечного пользователя эти дистрибутивы оставались не менее далеки, чем декабристы с Герценом — от народа.

Впервые о Linux'е для конечного пользователя можно говорить, вероятно, с 1998 года, когда Жиль Дюваль создал дистрибутив Mandrake (ныне — Mandriva). Основной его идеей было объединение Linux'а и графической среды KDE. Разработчики Mandrake были первыми, кто решился на такой шаг, не смотря на тогдашнюю неясность лицензионной политики в отношении библиотеки Qt, на которой KDE основывался: пуристы от FSF и, вместе с ними, основные майнтайнеры дистрибутивов, включая Red Hat, полагали лицензии этих программ не соответствующими идеалам свободного программного обеспечения. И попросту игнорировали единственную в те времена по настоящему интегрированную пользовательскую среду.

Собственно говоря, первая версия Mandrake (правда, номер она имел — 5.1) представляла собой самый обычный Red Hat с его тогдашним псевдографическим инсталлятором, средством дисковой разметки Disk Druid, — и KDE, уже тогда имевшим большой набор штатных пользовательских приложений.

Другой особенностью Mandrake была попытка поддержки "из коробки" экзотического в те годы "железа", типа телетюнеров и цифровых камер, а также тотальная интернационализация — пожалуй, это был первый дистрибутив, декларировавший поддержку произвольных языков (что послужило толчком к появления "русского Линукса", о чем речь пойдет в следующей статье). Все это надолго приковало к Mandrake сердца пользователей, не имеющих прямого отношения к разработке программ или администрированию сетевых служб.

Роль Mandrake в приобщении первой волны конечных пользователей к миру Linux (и Unix-подобных операционок вообще) переоценить трудно. В том числе и потому, что он обеспечивал, более или менее удачно, возможность не только работать, но и развлекаться — не особо утруждая себя настройкой аппаратных средств. Не случайно в многочисленных опросах на форумах о первом в жизни дистрибутиве Mandrake (а теперь и Mandriva) уверенно занимает одно из первых мест (если не однозначно первое). Правда, те же опросы показывают, что далеко не все пользователи сохранили верность первому выбору.

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

Немалую роль в обращении Linux'а к конечному пользователю (сиречь офисному и домашнему, профессионально не связанному с IT) сыграло директриса развития офисного пакета StarOffice. Созданный немецкой фирмой StarDivision первоначально для OS/2, он быстро был портирован на все существовавшие тогда платформы и операционки, претендовавшие, хотя бы чисто теоретически, на звание настольных — в том числе и на Linux. И хотя не являлся тогда ни открытым, ни свободным продуктом, был доступен, при определенных условиях, для бесплатного использования. А по своей функциональности, опять же со множеством оговорок, приближался (или стремился приблизиться) к MS Office, ставшему безраздельным властителем столов конторских служащих (Lotus Office и WordPerfect Office к концу тысячелетия уже отошли в область преданий).

Исторической правды восстановления ради нужно заметить, что StarOffice был не первым офисным пактом для Linux: этот титул по праву принадлежит пакету Applix одноименной, также немецкой, фирмы. Каковой, правда, обладал рядом недостатков, в частности, не способен был, без хирургического вмешательства, работать с кириллицей. Да к тому же не был ни открытым, ни свободным, ни даже бесплатным.

Были и другие попытки создания программ офисного назначения. Тут можно вспомнить и Siag — прототип офисного комплекта, состоящий из текстового процессора и электронной таблицы, и простой монофункциональный текстовый процессор Ted, и Lyx — попытку облечь TeX в клерковский костюм с галстуком. Все они канули в Лету забвения — только Abiword сохранился в составе эвентуального GNOME Office (хотя изначально к GNOME никакого отношения не имел).

В результате всех этих процессов — и популяризации самой системы, и появления пользовательских приложений для нее, — на рубеже 1998-1999 годов в широких кругах околокомпьютерной общественности заговорили о появлении "Linux'а с человеческим лицом". Казалось бы, этот самый "очеловеченный" Linux имеет все шансы прочно окопаться на пользовательских десктопах, заменив в этом качестве Windows (о прочих пользовательских платформах к тому времени забыли). Не тогда ли родился приснопамятный лозунг — виндовз мастдай?

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

Source Based: назад, в будущее

Однако скоро выявилась и оборотная сторона любого user-ориентированного дистрибутива "для всех". И состояла она в том, что у каждого из их разработчиков были свои представления о том, что же нужно конечному пользователю для полного счастья. Одни полагали, что счастье достижимо только в среде KDE, другие — что истинно счастливым юзера может сделать только идеологически правильный GNOME. Ну а третьи решали вопрос кардинально, и помещали в дистрибутив все, что только можно. И юзерофильные дистрибутивы стали пухнуть, как на дрожжах. К тому же графические инсталляторы этих систем, облегчая, с одной стороны, установку, с другой — навязывали пользователю предопределенные свыше наборы приложений. О назначении коих этот самый пользователь рисковал никогда не узнать — просто из-за их изобилия. А количество ориентированных средств настройки стало, по меткому выражению Владимира Попова, превышать число конфигурируемых параметров.

И вот тут многие пользователи начали вспоминать, что они еще и администраторы собственных компьютерных систем — пусть даже в масштабе одного отдельно взятого десктопа. И, с легкой руки Клиффорда Вольфа (создателя дистрибутива Rocklinux) в обиход вошел термин — "дистрибутив, дружественный к администратору". Началась эра дистрибутивов Source Based.

На этой волне появились и упомянутый выше Rocklinux (исторически первый дистрибутив из этой серии, возникший еще тогда, когда и термина Source Based не было), и LFS (Linux from Scratch) — набор рецептов по сборке собственной Linux-системы с нуля, созданный Герардом Бикмансом, и вариации на тему Sorcerer, и CRUX с Archlinux.

Однако наибольшую известность на этом поприще снискал Gentoo Дэниеля Роббинса. Не в последнюю очередь — благодаря прекрасной документированности процесса установки, позволяющей, строго следуя директивным указаниям, собрать индивидуализированную, в том числе оптимизированную под наличное "железо", систему даже относительно малоопытному пользователю. А система портежей, родившаяся под идейным влиянием портов FreeBSD, позволяла очень гибко наращивать функциональность установленной системы.

Правда, мало для кого Gentoo оказался первым дистрибутивом — роль его скорее в повышении общей квалификации пользователей, прошедших через Mandrake или Red Hat, и разочарованных их дружелюбием, местами навязчивым до неприличия. Что, однако, не умаляет его значения: с точки зрения понимания устройства системы опыт пользователя Gentoo уступает, пожалуй, только сборщику LFS.

Достижение гармонии

Однако и тут все оказалось не так гладко, как виделось поначалу. Будучи типичным представителем "дистрибутивов для себя", Gentoo весьма мало подходил на роль системы общего пользования. Установка его (точнее, сборка из исходников) вполне могла длиться сутками, после чего требовалась еще и ручная доводка — правкой конфигов в текстовом редакторе. А выигрыш от оптимизации "под железо" оказывался все более иллюзорным, нивелируясь ростом общей вычислительной мощности компьютерного парка. И среди пользователей началась неясная сначала тоска по прошлому — простым решениям "из коробки", позволяющим развернуть систему и начать работать в ней за считанные часы, а уже потом, при необходимости и по возможности, шлифовать ее до немыслимого совершенства (а какой линусоид не стремится к оному?).

И тут наступил час систем, которым на всем протяжении своего развития удавалось счастливо балансировать на зыбкой грани между дистрибутивами "для себя" и "для всех", между универсализмом и индивидуализмом, не склоняясь ни к "популизму" Red Hat сотоварищи, ни к "кастовости" Slackware (а позднее и Gentoo). И здесь в первую голову нужно назвать дедушку дистростроения — Debian. Разработка в 1999 году apt (Advanced Packaging Tools) — универсального набора инструментов для управления пакетами, — сделала его лидером в пакетном менеджменте. Не случайно apt был использован в rpm based дистрибутивах (впервые — в бразильской Connectiva, затем — в российском Altlinux). И, более того, полужил прототипом для универсальных систем управления rpm-пакетами, таких, как yum (Red Hat/Fedora, ASPLinux) и urpmi (Mandrake).

И именно поэтому Debian дал в нашем тысячелетии наибольшее число активно развивающихся потомков. С одной стороны, от него отделились дистрибутивы коммерческого типа — Xandros (бывший Corel Linux), Mepis и Linspire (ранее скандально прославившийся как Lindows). С другой — он лег в основу знаменитого LiveCD Knoppix, давшего, в свою очередь, многочисленные ответвления. С третьей же, на базе Debian образовалось немало свободных дистрибутивов общего назначения, из которых наибольшая известность суждена была семейству Ubuntu.

Другим примером удачного баланса оказался Archlinux. Созданный Джаддом Винетом по мотивам CRUX Пера Лидена — типичного, можно сказать рафинированного, дистрибутива "для себя", он, сохранив все черты системного конструктора, оказался пригодным к использованию "для всех", не в последнюю очередь — также благодаря системам пакетного менеджмента (pacman и ABS), в сумме сочетающим простоту Debian'овского apt и гибкость портов FreeBSD.

И опять же справедливости ради... На том же самом лезвии, рассекающем универсализм и индивидуализм, испокон веков (со дня своего создания) балансировала FreeBSD. И единственная причина, по которой она не стала массовой пользовательской платформой, — в том, что ее разработчики не приложили к тому ни малейших усилий.

Подведение итогов

Каков итог почти пятнадцати лет Linux-дистрострения? На мой взгляд, в достижении гармонии между составляющими "для себя" и компонентами "для всех", между универсализмом и индивидуализмом. В понимании того, что лучше использовать автоматизированные конфигураторы там, где это целесообразно, и прибегать к ручной правке конфигов тогда, когда это необходимо. Использовать системы управления бинарными пакетами по возможности, и собирать программы из исходников по потребности. И главное — в признании того факта, что Linux остается Linux'ом, вне зависимости от того, разворачивается ли он из rpm- или deb-пакетов, собирается через систему портежей или просто компилируется вручную "с нуля".

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

Заинтересовались историческими версиями дистрибутивов и хотите увидеть их вживую? Обратите внимание на проект История Linux.

Назад Дальше


Впоросы истории Unix, Linux и Open source, затронутые в настоящих заметках, можно обсудить на форуме posix.ru в специальной теме: http://forum.posix.ru/viewtopic.php?id=111

[ опубликовано 10/02/2006 ]

Алексей Федорчук (alv@posix.ru) - Linux: история дистростроения   Версия для печати