главная пошаговое создание livecd что такое linux ISO образы
Операционная система с графическим интерфейсом
На главнуюКонтактыКарта сайта
Полезное


 

ДОБРО ПОЖАЛОВАТЬ


Ещё один взгляд на base system

Виновником этой заметки можно в большой степени считать Алексея Федорчука. Мысль о её написании возникла после прочтения его статей о концепции base system (в частности, для Linux) на unix.ginras.ru.

Дабы не отсылать к первоисточнику (который просто слишком велик для того, чтобы отвлекаться на него сейчас, но, без сомнения, заслуживает прочтения) приведу здесь его видение. А именно, по мнению Алексея, в base system входят: ядро; загрузчик; стартовые скрипты; средства работы с файловыми системами; средства для сборки программ из исходников, как то компилятор, средства работы с архивами и текстами (в данном случае, исходными), а также средства единения с сетью и вытаскивания из неё файлов; вещь, называемая в русских переводах "оболочкой", а в простонародьи, шелл; и, наконец, система документации, известная опять-таки в простонародьи, как маны.

Я заметил, что в чём-то это понимание, совершенно, на мой взгляд, правильное для "исходняковых" дистрибутивов, не совсем справедливо (по крайней мере, с моей точки зрения) для дистрибутивов пакетных. Как вы уже, возможно, догадались, речь идёт о менеджере пакетов. Таком, как rpm для RedHat и компания и dpkg для Debian сотоварищи. По моему скромному мнению, для пакетного дистрибутива именно менеджер пакетов должен занять место компилятора в купе с сетевыми и текстовыми утилитами. Я выразил это мнение Алексею, после чего у нас разгорелась небольшая дискуссия по этому поводу. Но мои аргументы Алексея не убедили (собственно, как и его мотивации – меня), и он окончил разговор фразой "Если есть желание изложить свое понимание base Linux (или Линукса вообще) для широкой публики – милости просим на Unix4all" (в связи с безвременной кончиной последнего всех желающих высказаться по этому поводу отныне, и присно, и вовек просим на CITKIT - А.Ф.). Итак, своё понимание я высказал, теперь обосную.

Моё мнение основывается на тезисах base system самого Алексея, т.к. с ними я целиком и полностью согласен. Точнее, его рассуждения проводились от вопроса "Что необходимо для ОС?", но построенному в итоге набору компонент было в случае Linux'а дано довольно меткое, на мой взгляд, название "Base Linux". Немного перефразировав его формулировку, можно сказать, что Base Linux – это ядро и самодостаточный комплекс средств, необходимых для функционирования системы на благо пользователя. То есть два требования, предъявляемых к base – это необходимость каждого его компонента и самодостаточность их совокупности.

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

Да и сам компилятор в состав пакетного дистрибутива входить не должен. Так, мне известен по крайней мере один дистрибутив, в котором точно нет компилятора – это Alt Linux Junior. Что же получается? Если в состав base входит компилятор, то такой base сам не всегда входит в состав дистрибутива. Тогда нам остаётся либо отказать таким дистрибутивам в праве называться Linux'ами, либо признать нарушение первого пункта для такого универсального base. По крайней мере, для пакетного дистрибутива компилятор нельзя назвать неотъемлемым компонентом системы.

Перейдём теперь к самодостаточности. Начну, пожалуй, с того, что base "по Федорчуку" подразумевает возможность выхода в сеть. Если учесть то, что было сказано выше про исходники и ftp, становится понятно, что и для пакетного дистрибутива сеть просто необходима. Но, раз уж мы ведём речь о пакетных дистрибутивах, не стоит забывать о такой штуке, как зависимости.

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

Так вот, на примере Debian'а, единственное подходящее мне (да и большинству других домашних пользователей) средство связи с внешним миром – ppp – зависит от dpkg. Можно, конечно, закрыть на это глаза, сказав, что, мол, исходники самого ppp можно достать другим, не зависимым от сети способом. Но тут мы увидим, что кроме ppp от dpkg зависит ещё целая гора пакетов, в числе которых и kernel-image, и sysvinit, и binutils, и man-db, не говоря уже даже об initrd-tools, modutils, console-tools. Конечно, при большом желании всё это хозяйство тоже можно собрать из исходников, да вот только в полученном таким образом base linux от оригинального пакетного дистрибутива почти ничего не останется. Нет, конечно, можно все эти исходники взять из поставки того же пакетного дистрибутива (Debian'а, в нашем случае), но в итоге мы всё равно получим уже другой, совершенно не пакетный, дистрибутив, а какой-нибудь Debian from scratch. Может быть, именно поэтому Алексей и говорит, что вычленить base из некоторых дистрибутивов Linux'а на порядок сложнее. Конечно, вычленить такой base из пакетного дистрибутива – это задачка неслабая, под силу далеко не каждому даже из опытных пользователей. Кроме того, для самого этого вычленения мы должны изначально иметь работоспособную систему, которая, как я показал выше, либо должна была включать в себя dpkg, либо не вправе была бы называться Debian'ом, так как состояла бы восновном из сторонних компонент.

В отношении же компилятора названный мною Alt Linux Junior составляет исключение разве только в том смысле, что в остальных дистрибутивах компилятор всё-же входит в изначальную поставку. Но ведь дистрибутив – это уже далеко не base system. Тем более, что наличие компилятора в поставке вовсе не обязывает вас его устанавливать – кроме чисто девелоперских компонент от него ни в одном пакетном дистрибутиве ничего не зависит.

Признаю, что описанный мной вариант Base Linux в некотором смысле однобок, так как годен только для пакетных дистрибутивов, тогда как base "по Федорчуку" в том же смысле универсален. Но всё же универсализм, по словам самого Алексея, до добра ещё никого не доводил, что подтверждается в данном конкретном случае приведенными выше доводами. Предвижу ещё один аргумент против моего варианта, а именно, апеллирование к духу Open Source. Но на самом деле дух (да и буква GPL сотоварищи - А.Ф.) Open Source требует только доступности исходников всего софта, входящего в систему, и ничуть не запрещает распространять тот же самый софт ещё и в бинарниках. Универсальный Base Linux, описанный Алексеем, является в случае дистрибутивов пакетных, о которых я веду речь, понятием чисто синтетическим: на практике его, как было показано, вычленить практически невозможно, а без привлечения сторонних (либо по отношению к такому base, либо к конкретному дистрибутиву) компонент – невозможно абсолютно.

Base Linux же в моём понимании (точнее его наверное, можно назвать Base package-Linux, чтобы подчеркнуть его отличие от Base source-Linux, описанного Федорчуком), по крайней мере в Debian'е и основанных на нём дистрибутивах, можно получить весьма просто. Этот base создаёт сам Debian'овский установщик, после чего предлагает запустить tasksel и/или dselect – утилиты для выбора так называемых "задач" и отдельно взятых пакетов, соответственно. И от первой, и от второй можно отказаться, и, отказавшись от обеих, вы выпадаете в bash'евскую консоль и становитесь обладателем самого, что ни на есть, Base package-Linux.