Введение в POSIX'ивизм

       

Проблема выбора


В рамках второй истины остается рассмотреть последний вопрос - о выборе водоема для обучения плаванию. Один из наиболее распространенных вопросов на форумах: какой дистрибутив Linux выбрать? Или - более редкая его вариация: что выбрать, Linux или Free- (Open-, Net-) BSD?

В ответ на такой вопрос пользователь может получить кучу вполне конкретных советов, типа: Gentoo - потому что это круто, или Red Hat - потому что это рулез, или FreeBSD - forever (список можно расширять неограниченно). И среди них наверняка будет один совет - универсальный: использовать ту систему, которая стоит у ближайшего Unix-гуру.

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

Дело в том, что пользователь любой POSIX-системы по мене накопления опыта и знаний обрастает комплексом не только привычек, но и готовых решений - сценариев, конфигурационных файлов и тому подобного хозяйства, которое (и это - отличительная особенность дивного POSIX-мира) будут в дальнейшем годами кочевать у него из версии к версии, от дистрибутива к дистрибутиву, а то и из одной операционки в другую. И в результате он может просто элементарно забыть, как настраивается, скажем, модемное соединение в данной версии конкретного дистрибутива (даже если пользует именно его). Другое дело - исходя из понимания общих принципов, он может это достаточно быстро сообразить. Однако - захочет ли? И главное - справедливо ли будет заставлять его (из хорошего отношения к вам) заставлять его вторично проделывать эту работу?

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

Так что - на гуру надейся, а сам не плошай. И потому рискну предложить свой, также претендующий на универсальность, совет: нужно попробовать разные дистрибутивы (возможно, даже разные ОС). И выбрать подходящий методом проб и ошибок. Тем не менее, с чего-то нужно начинать. И здесь самое главное - определиться со своими потребностями и возможностями.

В дальнейшем я буду исходить из того, что начинающий пользователь любой POSIX-системы ставит своей целью (в том числе и) ее изучение - поверьте, в конце концов без этого не обойтись даже при работе в самом дружественном из user-ориентированных дистрибутивов Linux. И здесь очень важно - как этот самый пользователь хочет (а главное, может) осуществлять это изучение.

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

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

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




То есть сразу по установке системы ему нужно иметь некий минимум функций, настроек, приложений.

Именно на такую категорию пользователей рассчитаны такие пакетные user-ориентированные дистрибутивы, как Red Hat, Mandrake, их более или менее отдаленные клоны (Altlinux, ASPLinux). Каковые, казалось бы, и будут оптимальным выбором для большинства начинающих пользователей, не правда ли?

Однако все не так просто. Потому что в расплату за простоту установки и быстроту "вхождения в тему" пользователь получает по умолчанию некую Windows-подобную систему, перегруженную программами, ему, возможно, не нужными (а главное - программами, назначение которых он рискует не узнать никогда). Систему, модификация которой отнюдь не прозрачна. По крайней мере, для начинающего - вопреки существующему мнению, вносить изменения в конфигурацию user-ориентированного дистрибутива гораздо сложнее, чем заниматься настройкой с нуля дистрибутива Source Based. Тем, кто не верит, предлагаю посмотреть конфигурационные файлы Suse (если вы - пользователь Red Hat) или Mandrake (если вы - пользователь Suse). И, при указанных условиях, попытаться внести в них осмысленные изменения.

С другой стороны, чисто "исходнячные" дистрибутивы для начинающего пользователя также, скорее всего, не приемлемы. И дело даже не в том, что уже установка таких систем требует определенных знаний: знания - дело наживное, для их приобретения достаточно умения читать. А документированы Source Based дистрибутивы обычно очень хорошо - лучше, чем многие пакетные дистрибутивы (кто не верит - опять же, сходите на Gentoo.org - http://www.gentoo.org/doc/en/index.xml, есть там немало и русскоязычных материалов). Нет, причина - в том, что любой Source Based дистрибутив требует кропотливой настройки до запуска первого практически нужного приложения (собственно, в этом и есть их цимес). А мы уже выяснили, что свежеустановленную ОС обычно приходится начинать использовать для всамделишней работы сразу.

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


И такой компромиссный вариант реализуется в виде FreeBSD: сразу после установки этой ОС пользователь получает в свое распоряжение разумно сконфигурированную (по умолчанию), корректно русифицированную систему, снабженную необходимым минимумом (а при желании - и максимумом) приложений. Которая в дальнейшем легко может быть перенастроена в соответствие с его возросшими (или, наоборот, снизившимися - что очень немаловажно, чистое удаление установленных ранее излишков составляет в пакетных дистрибутивах Linux не меньшую проблему, чем в Windows) потребностями.

Конечно, для установки FreeBSD пользователю необходимо несколько больше предварительных знаний, чем для установки user-ориентированного пакетного дистрибутива Linux. Однако за источником таких знаний далеко ходить не нужно - проект FreeBSD прекрасно документирован, и большая часть его материалов доступна ныне и на русском языке. А серия руководств, как переводных (например, Иллюстрированное руководство по установке FreeBSD, не говоря уже о Handbook), так и исходно русскоязычных (например - FreeBSD: быстрое развертывание) делает инсталляцию ее ничуть не сложнее, чем развертывание Mandrake или Red Hat.

Теперь посмотрим, каковы возможности выбора для пользователя, предпочитающего более или менее глубоко изучить POSIX-систему, прежде чем применить ее на практике. И здесь, казалось бы, лучший выбор - это именно Source Based дистрибутивы Linux? Не буду с этим спорить: установка и индивидуальная настройка, например, Gentoo способна дать в этом плане очень много. Однако...

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

И тут мы опять вспоминаем о BSD.


Конечно, BSD- системы вообще имеют свою специфику по сравнению с Linux (и по сравнению с остальными, проприетарными, POSIX-системами, генетически происходящими от классического Unix System V). Однако специфика эта, в сравнении с многообразием дистрибутивов Linux, весьма невелика. А уж внутри BSD-клана различия просто исчезающе малы. И для начинающего пользователя очень существенно, что все наличные источники информации по любой BSD-системе гарантировано посвящены именно этой ОС. Тогда как авторы толстых книг про Linux далеко не всегда последовательно подчеркивают, что в их описаниях является общим для POSIX-систем, что - характерно для Linux вообще, и что - специфично для конкретного дистрибутива.

Какую из BSD-систем выбрать как объект углубленного изучения? Теоретически рассуждая, чуть ли не любую. Хотя следует учитывать, что OpenBSD и NetBSD относительно слабо освещены в русскоязычных источниках, имеют проблемы с русификацией. А главное - их достоинства (защищенность и кросс-платформенность) для индивидуального пользователя несущественны. Так что на выбор остаются - FreeBSD или DragonFlyBSD. Мой личный выбор - в пользу последней, но это сугубо дело вкуса...

Так что же, дружно бросаем Linux и переходим на BSD, спросите вы меня? Я не хотел бы, чтоб вышесказанное оставило такое впечатление. Хочу лишь подчеркнуть, что нужно быть готовым к тому, что первый выбранный для установки дистрибутив Linux вряд ли окажется вашим окончательным выбором. Вполне возможно, что вам придется перепробовать несколько дистрибутивов (или даже пару-тройку ОС), прежде чем будет выбрана система, наиболее отвечающая вашим задачам (и гармонирующая с внутренним мироощущением).

И, тем не менее, рискну предложить свой вариант выбора среди дистрибутивов Linux из бесчисленного их множества. И будет это Archlinux, занимающий в определенной мере промежуточное положение между пакетными и "исходнячными" системами. Сам по себе он распространяется в виде iso-образа, содержащего исключительно прекомпилированные пакеты.


Из которых он и может быть развернут - благодаря простой, но гибкой установочной программе, буквально в считанные минуты. Даже стадия сборки собственного ядра, неизбежная в большинстве Source Based дистрибутивов, тут обязательной не является (хотя и не возбраняется): прекомпилированное умолчальное ядро обеспечивает близкое к оптимальному соотношение функциональности и компактности.

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

Вот, пожалуй, и все относительно второй из моих вечных истин - установки системы. Ко всем из затронутых здесь вопросов нам еще придется возвращаться, однако мне кажется, что сказанного достаточно для того, чтобы бестрепетно вставлять в CD дистрибутивный компакт Linux или BSD и смело жать на три сакраментальные клавиши. Делая тем самым первую свою попытку заплыва в стиле кроль.


Содержание раздела