В этой книге собрана большая часть того, что я знаю про Linux, FreeBSD и отчасти про другие системы, задумчиво именуемые Unix-подобными. Называют их также POSIX-совместимыми - и со временем я попытаюсь показать, почему второй термин является предпочтительным. Данное сочинение создается с целью популяризации и даже, не побоюсь этого слова, пропаганды POSIX-систем среди широких кругов компьютерной, околокомпьютерной и некомпьютерной общественности.
В этой преамбуле, а также непосредственно следующих за ней главах, читатель, не сталкивавшийся ранее с Unix-подобными или, иначе говоря, POSIX-совместимыми системами, обнаружит некоторое количество незнакомых слов и терминов (например, POSIX-совместимые системы). Надеюсь, они его не испугают - поверьте, они не заключают в себе ничего сверхъестественного. А смысл их, надеюсь, разъяснится в ближайшее же время (частично - даже в этой преамбуле).
Казалось бы, о Unix, Linux и BSD сотоварищи за последние годы написано множество книг, статей, сетевых материалов - нужно ли еще одно сочинение на заданную тему? Думается, что нужно, и по нескольким причинам.
Первая причина - в том, что феномен Open Source (то есть разработка программ с открытыми исходными текстами) вообще и любые его частные проявления (а Linux и BSD-системы таковыми являются) столь многогранны, что каждый автор, обращающийся к этой тематике, привносит в нее что-то новое (надеюсь, что ваш покорный слуга в своих писаниях не был исключением).
Вторая причина - Linux, BSD и прочие родственные им системы живут и развиваются, и написанное о них даже год назад могло если не устареть (по причинам, которые станут ясными впоследствии, POSIX-системы мало подвержены старению), то в некоторой степени потерять актуальность. И в любом случае будет требовать уточнений, дополнений, корректив, отражающих реалии текущего момента.
Третья причина - в том, что Linux-бум конца ушедшего тысячелетия в определенной мере оставил в тени других представителей семейства открытых POSIX-систем. В результате понятие Open Source прочно контаминировалось с ОС Linux, а последняя - с такими вещами, изначально к Linux'у никакого отношения не имевшими, как оконная система X, интегрированная рабочая среда KDE или офисный пакет OpenOffice.
Четвертая причина - часто встречающееся (и вполне объяснимое) стремление многих авторов объять необъятное. В итоге в толстых книгах о Linux и Unix говорится о таких материях, как программирование, администрирование локальных сетей и Интернет-технологии, да и многих других, не имеющих прямого отношения к операционным системам.
Пятая, и, с моей субъективной точки, главная причина вытекает из третьей. И она такова: подавляющее большинство известных мне толстых книг, затрагивающих указанную тематику (не говоря уже о статьях и заметках, посвященных частным вопросам) опираются, явно или не явно, на опыт работы авторов с каким-либо конкретным дистрибутивом Linux или с одним из иных представителей Unix-клана. Попыток рассмотрения свободных POSIX-систем вообще, без оглядки на конкретные реализации, весьма мало.
В настоящем сочинении я и попытался максимально абстрагироваться от конкретных реализаций, воплощенных в том или ином дистрибутиве Linux или какой-либо BSD-системе. И потому в книге речь пойдет, в первую очередь, о том, что их всех объединяет. Особенности конкретных реализаций POSIX-систем отодвинуты на второй план.
Книга основана на уже более чем пятилетнем практическом использовании свободных ОС семейства Unix - в первую очередь FreeBSD и пары-тройки дистрибутивов Linux, а также ознакомлении (разной степени поверхностности) со всеми прочими представителями BSD-клана и с полутора десятками представителей необъятного мира Linux-дистрибутивов.
Должен подчеркнуть, что по жизни я являюсь "чистым" пользователем, не имеющим опыта сетевого администрирования или разработки программ (и не обнаруживаю ни малейшего желания такой опыт приобретать). А потому и говорить буду только о том, что, по моему скромному мнению, необходимо знать пользователю, а также - о том, что ему может быть полезно или должно быть небезынтересно.
Большая часть обсуждаемых здесь вопросов в той или иной мере затрагивалась в моих прежних "бумажных" и онлайновых публикациях. Однако жизнь не стоит на месте, меняются системы, и мы меняемся с ними, как сказали бы древнеримские греки. И потому я сконцентрируюсь на тех аспектах, которые либо не были в силу различных причин (главная из которых - недостаточное тогда понимание) мной затронуты раньше, либо представления о которых сильно изменились, либо, наконец, на явлениях новых или существенно обновленных.
За последние годы Linux, исторически использовавшийся преимущественно в сфере разработки программного обеспечения и сетевых решениях, все более утверждается в роли операционной системы универсального, в том числе и так называемого домашнего, назначения. BSD-системы в этом аспекте почти никогда не рассматриваются. Однако именно с позиций пользователя разницы между ними почти нет, и они пригодны к настольному/домашнему применению ничуть не меньше, нежели любой из user-ориентированных дистрибутивов Linux. И это я тоже попытаюсь продемонстрировать в настоящем сочинении.
Мое сочинение ориентировано по большей части на пользователей, обладающих некоторым минимумом начальной подготовки (хотя и не обязательно имеющим опыт работы в Unix-подобных системах). Или, по крайней мере, желанием оную приобрести - возможно, в процессе чтения именно этой книги.
Начинающий пользователь POSIX-систем, как правило, обращается к Linux. Причем именно к тем его разновидностям (т.е. дистрибутивам), которые обеспечивают ему наиболее комфортные условия миграции с системы, использовавшейся ранее (рискну предположить, что системой этой, в силу исторических причин, была та или иная версия Windows). Такие дистрибутивы, именуемые user-ориентированными (или дружественными к пользователю), как правило, обладают красивыми и удобными графическими инсталляторами, развитыми средствами универсального конфигурирования системы, богатым наборами утилит для визуального управления программными пакетами, и так далее. И потому их использование на первых порах помогает сломать психологический барьер между привычными объектными интерфейсами и аскетичным на вид исконно Unix-инструментарием.
Однако довольно быстро к пользователю приходит понимание того, что Unix - это не Windows, а Windows - это не Unix. И эффективное использование любого представителя последнего семейства достигается совсем другими способами - на первый взгляд непривычными, но чрезвычайно мощными и, главное, универсальными. Однако user-ориентированные дистрибутивы, как правило, отнюдь не подталкивают пользователя к их изучению. Ибо графические инсталляторы и конфигураторы, облегчая, казалось бы, ему жизнь, затеняют при этом внутреннюю сущность явлений.
К тому же все эти средства установки, настройки и пакетного менеджмента в подавляющем большинстве дистрибутив-специфичны и подчас заимствуют из Windows дурную привычку существенно меняться от версии к версии. Навыки работы с таким инструментарием, приобретенные в одном Linux-дистрибутиве, окажутся мало полезны в другом (и тем более в какой-либо BSD-системе). В результате изначальная универсальность Unix-систем в значительной мере утрачивается.
Ибо один из факторов, определивших популярность Unix - это практически полная неизменность приемов работы во времени - вот уже на протяжении более чем тридцати лет (это не значит, однако, что сами средства работы не совершенствовались) и их независимость от конкретной реализации системы. В итоге пользователь, освоивший традиционный Unix-инструментарий в рамках любой разновидности Linux, будет столь же свободно чувствовать себя не только в ином дистрибутиве этой ОС, но и в любой BSD-системе или каком-либо проприетарном представителе Unix-семейства.
Древние греки считали наименее приспособленными к жизни людей, не умеющих читать и плавать. Нравится это или нет, но компьютеры вошли в нашу жизнь прочно и бесповоротно. Так что теперь к списку необходимых умений следует прибавить навыки работы с компьютерами. А потому очень остро встает проблема компьютерного образования. Причем от решения эта проблема далека - нельзя же в самом деле рассматривать в качестве основ компьютерной грамотности минимальное натаскивание для работы в Windows и конкретной версии Word. Причем - именно натаскивание на уровне нескольких готовых рецептов: мне рассказывали страшную историю про то, как школьная учительница по информатике поставила ученику "двойку" за то, что он вышел из Windows через Alt+F4 (следовало - обязательно сделать это через меню Пуск и его пункт Выход).
И в сфере образования роль свободных Unix-клонов трудно переоценить. Причем - не только для тех, кто собирается выбрать специальность, хоть как-то связанную с компьютерами. Традиционные методы работы в Unix могут использовать представители любых профессий, именовавшихся при советской власти "творческими". Причем - подчас более эффективно, чем стандартные офисные приложения. Не нужно только впадать в другую крайность и объявлять Linux или, тем более, BSD, средством решения любых задач. Unix создавался для работы с текстами (любого рода) и обеспечения коммуникаций, и именно в этом он проявляет свою силу. Однако - разве не для работы с текстами и обеспечения коммуникаций использует компьютер подавляющее большинство людей в своей профессиональной деятельности?
Я адресую эту книгу самым широким народным массам. Основную часть которых, конечно, составят достаточно опытные компьютерные пользователи, не имеющие навыков работы в Unix-системах (но имеющие таковые - в некоторых других системах, которые не будем называть вслух). Тем из них, кому стало тесно в "подоконном" мире, и кто в целях повышения эффективности своей работы (или просто движимый любопытством) хотел бы ознакомиться с миром POSIX-систем. А там, глядишь, и приобщиться к нему.
И потому вторая адресная категория читателей - уже приобщившиеся, но начинающие пользователи Linux или BSD, только приобретающие навыки работы в POSIX-системах. Я надеюсь, что мое сочинение поможет сократить для них срок адаптации и будет способствовать скорейшему осознанию все того же факта, что Unix - это не Windows, и Windows - это не Unix.
Однако я не теряю надежды, что к этому сочинению обратятся и совсем начинающие пользователи компьютера вообще, не затронутые еще тлетворным воздействием Windows. И мечта эта не столь уж утопична, как может показаться - ведь учится новому "с нуля" всегда легче, нежели переучиваться. Для чего достаточно иметь только толику любопытства и склонность к поиску и усвоению новой информации.
Наконец, я не исключаю вероятности, что эту книгу будут читать и, так сказать, действующие пользователи POSIX-систем, вне зависимости от сферы приложения их сил. Мне доводилось сталкиваться (и реально, и виртуально) с квалифицированными разработчиками или системными администраторами, имеющими, как ни странно, весьма неопределенное представление о пользовательских аспектах применяемых ими систем. Более того, многие из них просто искренне убеждены, что Linux или BSD народу (то бишь пользователям) - не нужны. Смею верить, что мое сочинение заронит у них сомнение в правоте такой позиции.
И еще: я не хотел бы, чтобы все сказанное на этих страницах воспринималось как некое поучение гуру. Заявляю определенно: гуру (каковой термин, как и термин "ученый", я вообще отношу к категории ненормативной лексики - к учителям индуистких школ это не относится) не являюсь и быть им не стремлюсь. Все написанное мной - написано для собственного удовольствия и на основании собственного опыта, полученного в ходе жизнедеятельности обычного пользователя.
В любом случае, я надеюсь, что эта книга покажется вам полезной по содержанию и, не в последнюю очередь, интересной по форме. Однако ни того, ни другого гарантировать не могу: вы тратите на нее время исключительно под свою ответственность.
Таким образом, эта книга, помимо чистой занимательности (и, надеюсь, познавательности), претендует еще и на некоторую познавательность. И ее сюжет подчинен логике знакомства пользователя с новой ОС - так, как этот процесс должен был бы проходить в идеальных условиях, скорректированных принудительной силой реальности.
А знакомство пользователя с любой POSIX-системой начинается с ее установки. Конечно, по меткому замечанию Виктора Вагнера (Как стать квалифицированным пользователем - ), это примерно то же самое, что начинать обучение вождению автомобиля с регулировки клапанов или переборки коробки передач. С точки зрения затрат сил и времени хорошо было бы учиться работать на системе, установленной и настроенной специалистом. Однако принудительная сила реальности такова, что, за редчайшим исключением, начинающий пользователь Linux или BSD вынужден перво-наперво сам установить и настроить систему. Что, конечно, требует знаний и умений. Да вот только приобрести их он может, предварительно получив систему в свое распоряжение - то есть установив ее и хоть как-то настроив. Эта "уловка 22 от Linux", по выражению Владимира Попова (Init...etc - ), и составляет одно из главных препятствий для широкого распространения этой ОС (как и других Unix-подобных систем),
Однако, с другой стороны, прорвавшись тем или иным образом (с помощью чтения руководств ли, или посредством user-ориентированного дистрибутива, руководствуясь ли советами знакомого или задавая вопросы в многочисленных форумах), пользователь приобретает незаменимый ничем объем знаний и навыков. И вспомним другую аналогию: обучение верховой езде (по крайней мере, в школах, заслуживающих этого названия, - да и в реальной жизни тоже) начинается именно с обучения чистке, седловке, взнуздыванию (хотя ковать лошадей новичка, пожалуй, заставлять сразу не будут).
Так вот, эта книга и призвана облегчить пользователю понимание процесса установки и настройки произвольной POSIX-системы, а также ее последующего использования.
Большая ее часть представляет собой своего рода общее введение в мир свободных POSIX-систем. Поэтому сначала, в главе 1, я не могу не остановиться на таком явлении, как программы с открытыми исходными текстами вообще (Open Source) и свободные программы (Free Software - не путать с Freeware), поскольку речь здесь будет идти исключительно об открытых и свободных представителях POSIX-семейства.
Затем (в главе 2) вас ожидает рассмотрение вопроса о том, что такое операционная система вообще, POSIX-совместимые (или Unix-подобные) операционки в частности и Linux и BSD-системы - в особенности.
Понимание POSIX-систем невозможно без представления о их истории - хотя эта тема интересна и сама по себе. Так что она будет рассмотрена в главе 3. На чем вводную часть книги можно считать законченной.
В последующих главах следует обзор "вечных истин" POSIX-систем. В частности, глава 4 посвящается специфике POSIX-совместимых систем, и принципиальному отличию методов их использования от ОС семейства Windows.
Дальнейшее изучение любого свободного Unix-клона, как уже было сказано, вынужденно происходит одновременно с установкой и настройкой этой системы. И в главе 5 рассмотрены принципы установки POSIX-совместимой ОС - вне зависимости от конкретной реализации. Поэтому здесь не будет описаний работы инсталляторов и конфигураторов того или иного конкретного дистрибутива Linux или BSD. Вместо этого я постараюсь рассказать о внутренней сущности действий при установке любой POSIX-системы, о том, что обычно в user-ориентированных дистрибутивах Linux (а ведь именно с них, скорее всего, и начнет свое знакомство начинающий пользователь) остается за кадром графического интерфейса.
Главы с 6-й по 10-ю посвящаются "трем китам", на которых зиждется POSIX-мир - понятиям пользователя (глава 6), процесса (глава 7) и файла (глава 8), а также физической (глава 9) и логической (глава 10) организации файлов. Интермедии, вклинивающиеся в основной сюжет, посвящены управлению пользовательскими акаунтами, файлами и файловыми системами.
При этом у читателя не предполагается никаких предварительных знаний на сей предмет. Я постарался описать эти материи в форме, понятной начинающему пользователю - насколько это у меня получилось, судить вам.
В главе 11 описываются связывающие звенья между пользователем системы, протекающими в ней процессами и составляющими ее файлами, охватываемые понятиями терминалов, режимов их работы и их интерфейсов. А в главе 12 подробно описываются принципы основного из пользовательских интерфейсов POSIX-мира - интерфейса командной строки. Следующая за ней интермедия содержит описание одной из важнейших групп пользовательских команд - средствам для работы с текстами.
Глава 13 посвящена принципам настройки системы. Она не подразумевает использования какого-либо определенного дистрибутива Linux или конкретной BSD-системы, будучи применимо ко всем ОС POSIX-семейства. Моменты, специфичные для какой-либо операционки или дистрибутива, выделены особо.
Любая операционная система устанавливается, изучается и настраивается, в большинстве случаев, ради ее практического применения. А это требует понимания принципов управления пакетами - дополнительным программным обеспечением, не входящим в состав собственно операционной системы. Что и составит предмет главы 14.
Глава 15 развивает тему командного интерфейса, и посвящена она первой и одной из важнейших пользовательских программ - командной оболочке (shell), точнее - их многочисленным разновидностям. А в следующей за ней интермедии описывает наиболее развитый и функционально богатый представитель этого семейства - zsh.
Операционные системы POSIX-семейства изначально создавались для работы с текстами (в самом широком смысле слова) и потому родной их режим - текстовый. Однако никаких причин отказываться от использования графики в них также не имеется. И поэтому глава 16 будет посвящена универсальной графической метасистеме POSIX-мира - оконной системе X (или, в просторечии, Иксам). И соответствующая интермедия рассказывает о программах, делающих возможным ее использование - менеджерах окон.
В следующей, главе 17 речь пойдет о среде, обеспечивающей пользователю взаимодействие с этой метасистемой - интегрированном десктопе KDE. Последующая же интермедия описывает главную программу этой среды - konqueror, универсальное средство манипулирования файлами.
Последняя, 18-я, глава, посвещается классу программ, лежащих на грани между общесистемными и пользовательскими - текстовым редакторам. А интермедия к ней - html-редактору Quanta Plus, так как обработка html-документов есть частный случай работы с текстами вообще.
Форма книги связана с одним из фундаментальных понятий Unix - рекурсией. В собственном смысле слова это - специальный программистский термин, и означает он определение функции через саму себя (что такое функция - надеюсь, станет понятным из главы 12).
Однако в Unix-сообществе понятие рекурсии широко применяется в бытовом, так сказать, смысле. Известным чему примером является акроним проекта GNU - GNU is Not Unix (о котором будет говориться в главе 2).
Так вот, весь процесс изучения POSIX-систем пронизан рекурсией. Возьмем для примера три фундаментальных понятия мира Unix - понятие файла, процесса и пользователя, о которых будет говориться в главах 6-8. Отношения между ними неизбежно определяются друг через друга: каждый файл принадлежит какому-либо пользователю в силу того, что он (файл) порожден процессом, запущенным этим пользователем (на самом деле все еще сложнее, но это пока не важно).
То есть: чтобы понять, что такое файл и его атрибуты, нужно предварительно разобраться в том, что такое процесс и атрибуты оного. Что, в свою очередь, невозможно без представления об атрибутах исполняемого файла этого процесса, и атрибутах пользователя, запускающего этот процесс на исполнение. А если вспомнить, что для получения информации о файлах, процессах и пользователях необходимо использовать команды, каковые и сами представляют собой файлы с определенными атрибутами, и при этом используют в качестве своих аргументов файлы же, атрибуты которых также существенны, становится ясным: пользователь, начинающий изучение POSIX-систем, сталкивается не с чем иным, как с рекурсией. Что в простонаречии именуется сказкой про белого бычка, а по наукообразному - проблемой яйца и курицы. Ведь для того, чтобы осознать базовые понятия Unix, необходимо обладать навыками работы с командами, а чтобы понять, как работают команды и использовать их осмысленно, а не чисто механически, требуется знание базовых понятий.
Именно в такой рекурсивной связи и кроется, на мой взгляд, основная сложность изучения POSIX-систем - для начинающих пользователей, и трудность написания книг, этому пользователю адресованных, - для авторов. И в рамках традиционной книжной структуры противоречие это неразрешимо. Ведь книга по определению - линейна, и читается, как правило, с начала и до конца (по крайней мере, авторам книг обычно хочется, чтобы их произведения читали именно так). И как, при линейной-то структуре, прикажете обращаться с рекурсивным определением понятий? Отсылать (так и хочется сказать - посылать) читателя к еще непрочитанным главам, возможно, через многие сотни страниц? Этак он быстро мозоли на пальцах натрет - от листания...
Поэтому я, после долгих размышлений, и отказался от линейного стиля изложения в этой книге, придав ей иерархическую структуру, подобную таковой древовидной файловой системы Unix (о которой будет говориться в главе 10). Каркас этой структуры (то есть подобие корня файловой системы) образуют главы, содержание которых было вкратце охарактеризовано в предыдущем параграфе. Они представляют собой своего рода введение в POSIX'ивизм, рассчитанное, в том числе, и на совсем начинающего пользователя. Главы чередуются с интермедиями, каждая из которых посвящена детализации понятий, рассмотренных в соответствующей главе.
Предполагается, что совсем начинающий пользователь сначала ознакомится с элементами каркаса - главами, после чего перейдет к изучению материала, представленного в интермедиях. Пользователь же, обладающий определенным опытом работы в Unix-подобных системах, возможно, обнаружит в "корневом разделе" мало нового для себя, и обратится сразу к интермедиям.
Важно также, что материал из "корневого раздела" книги, за редкими, специально оговоренными, исключениями имеет силу для любой POSIX-совместимой системы. Аспекты же, специфичные для Linux, отдельных его дистрибутивов или какого-либо представителя BSD, по возможности сосредоточены в интермедиях. Кроме того, в них же мне показалось уместным собрать все конкретные примеры и рекомендации - в том числе на уровне "делай, как приказано" (если, конечно, сам не знаешь, как делать).
Излишне говорить о том, что все это сочинение, от первой до последней страницы, осуществлялось на машине, оснащенной исключительно свободными программами. В качестве операционной системы в разное время написания выступали дистрибутивы Linux - Gentoo (), CRUX () и Archlinux (). Кроме того, изрядная часть книги сочинялась под управлением FreeBSD (). Подготовка электронной версии книги (http://linuxcenter.ru/lib/books/posixbook) была проведена на машине с ОС DragonFlyBSD (). А завершающая доводка и компоновка книги для печатной публикации выполнена в Debian GNU/Linux (). Этим я хочу в очередной раз подчеркнуть, что все POSIX-системы (и все дистрибутивы Linux) практически равноценны с точки зрения настольного применения.
Основным инструментом собственно сочинительства в разное время были текстовые редакторы joe (в консоли), nedit (в системе X с оконным менеджером fluxbox) и kate (в интегрированной среде KDE, ). Текст набирался непосредственно в html-формате с помощью макросов собственного изготовления. Поскольку в этой книге в актуализированном и модернизированном виде использованы кое-какие тексты из ранее мной написанного (как опубликованного, так и неопубликованного), проблема поиска необходимых фрагментов, их модификации и помещения куда следует решалась с помощью командных утилит, пришедших из мира классического Unix: (find, grep, cat, split, sed). Итоговый вариант книги компоновался и доводился в html-редакторе Quanta Plus. Разбиение единого первоначально текста на главы выполнено утилитой split. И, наконец, для передачи книги в издательство пришлось "прогнуться под испорченный мир" - то есть конвертировать html-документы в формат MS Word. Эта нелегкая задача была решена с помощью пакета Openoffice.org.
По всему тексту я старался придерживаться следующих условных обозначений. Наименования клавиш и клавишных комбинаций, а также пунктов меню и прочих визуальных элементов интерфейса выделены полужирным шрифтоначертанием той же гарнитуры, что и основной текст: Enter. Команды в командной строке, примеры их экранного вывода, фрагменты конфигурационных файлов и сценариев, напротив, передаются моноширинными гарнитурами:
Так даются примеры команд, примеры их экранного вывода, конфигурационных файлов, листинги сценариев
При этом команды предваряются символом приглашения командной строки, в качестве которого я принял $. Символ же # закреплен за комментариями в скриптах и конфигурационных файлах. Разумеется, если синтаксис данного скрипта или конфига требует иного обозначения комментария (например, !) - будет использоваться именно он (с соответствующей оговоркой).
Команды, их опции и аргументы, упоминаемые в теле абзацев, также передаются моноширинным шрифтом: имя_команды.
Читатель заметил, что названия программ в предыдущих абзацах также даны моноширинной гарнитурой. Этим я хотел подчеркнуть, что такое название, в большинстве случаев, совпадает с именем ее запускаемого файла - то есть является обычной командой. Если же название программы с запускающей ее командой не совпадает - оно дается обычным начертанием пропорциональной гарнитуры.
Все примеры команд, конфигурационных файлов и сценариев в книге взяты из реальных систем, использовавшихся автором, где они были работоспособны. Конечно, гарантировать их функционирование в произвольной ОС или дистрибутиве я не могу, однако они могут быть использованы как основа для собственных модификаций.
Важную роль в структуре книги играют ссылки на источники информации. В первую очередь это официальная документация к описываемым системам и программам, представленная преимущественно в форме так называемых man-страниц (подробно описанных в главе 12), Ссылки на такие документы выглядят следующим образом: man (#) name, где name - имя объекта документирования (например, команды), а # - номер тематического раздела, если он необходим.
Не менее важны источники информации в Интернете. Они оформлены традиционно, без всяких вытребенок - http://www.posix.ru. Кстати, именно на этом сайте будет дан полный список использованных источников on line.
Я старался не злоупотреблять традиционными смайлики. Надеюсь, что читатель догадается, когда они подразумеваются по умолчанию (а подразумеваются они много где).
Информационные технологии и Computer Sciences имеют международный характер. Однако в силу ряда обстоятельств развивались они преимущественно в англоязычной среде. Можно сказать, что американский английский - родной язык IT-пространства. Особенно ярко это проявляется в мире Open Source, для разработчиков которого, рассеянных по странам и континентам, говорящих на самых разных языках и формально-организационно никак друг с другом не связанных, английский выступает в качестве lingua franca - его можно сравнить с латынью средневековой науки.
В связи с этим перед автором любого сочинения на околокомпьютерную тему вообще, и на тему Open Source в особенности, пишущего на своем родном языке (отличном от американского английского) встает проблема адекватной передачи специфической терминологии, имеющей, за редким исключением в виде латинских и древнегреческих корней, англоязычное происхождение. В отечественной компьютерной литературе (как традиционной, "бумажной", так и Сетевой) сложилось две устойчивые терминологические традиции - пуристическая и жаргонная.
Пуристическая традиция характерна для авторов, ориентирующихся на книжные издательства и "толстые" журналы, позиционирующие себя в качестве профессиональных. Суть ее - в подборе для исходно английских терминов максимально "русских" эквивалентов. Слово "русских" я не случайно взял в кавычки - причина станет ясна через пару абзацев.
Жаргонная (сленговая) традиция преобладает в онлайновых публикациях, роль которых в области Open Source, как минимум, сравнима с ролью традиционных "бумажных" изданий. Она выражена в простой транслитерации (часто с подчеркнутым нарушением ее правил) соответствующих английских слов и аббревиатур.
Пуристическая терминология всегда ведет к утяжелению текста. Например, вместо короткого английского слова software или даже просто soft употребляется неуклюжее описательное определение "программное обеспечение". И это еще не самый тяжеловесный оборот - читатель любого компьютерного издания легко может умножить количество примеров.
Кроме того, борьба за чистоту русского компьютерного языка иногда влечет за собой просто комический эффект - когда один "чуждый по происхождению" термин определяется через слово столь же "заграничное", только, в отличие от первого, вошедшее в русский язык раньше (на века или годы - в данном случае не важно). Тут достаточно вспомнить хрестоматийную аббревиатуру "КД-ПЗУ" начала 90-х годов - догадались, что это значит? правильно, "компакт-диск - постоянное запоминающее устройство", сиречь обычный CD ROM. Или, скажем, просто анекдотичную борьбу за замену чуждого иностранного слова "менеджер" исконно русским - "диспетчер". Что вызывает в памяти известного адмирала Шишкова, боровшегося за чистоту русского языка еще в XVIII веке (хотя подозреваю, что для адмирала это было формой своеобразного юмора).
Второй основной недостаток пуристической терминологии - ее неоднозначность, вплоть до полного искажения смысла. Так, перевод английского термина Window Manager как "диспетчер окон" способен только ввести в заблуждение человека, недостаточно знакомого с предметом.
Поэтому в настоящей книге (как, впрочем, и во всех своих сочинениях) я категорически порываю с пуристической традицией. Хотя это не значит, что я призываю к полному переходу на терминологию жаргонную, также не свободную от недостатков: она не вполне изящна, часто напоминая уголовную "феню", и не всегда понятна начинающим. Однако имеет неоспоримое достоинство - однозначность, унаследованную от англоязычного прототипа; по крайней мере - в контексте данной тематики.
В качестве примера можно рассмотреть попытки подобрать родной эквивалент термину Distributions, что по русски траскрибируется обычно как "дистрибутив" (или даже жаргонное "дистр"). Очевидно, что попытки эти будут тщетны - ведь это слово имеет совершенно различный смысл в разных сочетаниях. Например, значения FreeBSD Distributions, Linux Distributions или Windows Distributions - абсолютно разные: в первом случае имеется ввиду базовая комплектация операционной системы FreeBSD, во втором - один из (многочисленных) способов распространения операционной системы Linux, в третьих же - диск с соответствующими надписью и голограммой либо его более-менее точное пиратское воспроизведение. По английски смысл любого подобного выражения ясен из контекста, русский же их перевод потребует различный (и очень сложных) описательных конструкций.
Кроме того, околокопьютерные жаргонизмы настолько вросли в окружающий нас мир (особенно - в мир онлайновых источников информации), что полный отказ от них возможен только ценой потери ясности изложения. В сущности, жаргонные термины давно уже превратились в своего рода идеограммы, достоинство которых - в однозначности понимания людьми, говорящими на самых разных языках. Тысячелетняя история китайской письменности доказала жизненность идеографического подхода, по крайней мере - в области специальной терминологии.
Примером может служить поиск адекватной русской передачи названия для графического метаинтерфейса Unix - X Window System, по английски называемой также X System или просто X. Обычно в качестве таковой предлагается достаточно неуклюжее словосочетание "система X Window" (а подчас - даже система X Windows). Дословный же перевод здесь будет - "Оконная система X", где компонент X и в английском, и в русском языке выполняет роль идеограммы, а не языковой конструкции (почему - будет рассказано в главе 17). И потому жаргонное выражение "Иксы", как абсолютно адекватный и однозначный, вполне имеет право на существование.
Конечно, использование околокопьютерного (как и любого другого) жаргона требует взвешенного подхода. Нелепо переносить английские кальки в области, где существует развитая, устоявшаяся для русского языка терминология, например, в область полиграфии и шрифтовых технологий. Однако во многих случаях именно жаргонизмы (подобно вышеупомянутым Иксам) позволяют адекватно выразить суть явления.
Поэтому в настоящем сочинении я, достижения адекватности ради, довольно широко употребляю общепринятые (и общепонятные в компьютерных кругах) жаргонизмы. Хотя, каюсь, в ряде случаев использую их и просто для достижения большей выразительности - подобно "местным идиоматическим выражениям" в художественной литературе.
Впрочем, при первом вхождении термина я стараюсь дать все известные синонимы - как пуристические, так и жаргонные, а при необходимости - привожу и оригинальное англоязычное написание. Это вызывается тем, что русскоязычная терминология в околокомпьютерной области далека от унификации, а достижение последней - задача, для одного человека непосильная. Да, возможно, и не нужная - отказ от синонимичности в языке (особенно - в русском, синонимичном по сути своей) часто приводит к потере его выразительности.
Основу этого сочинения составили заметки для серии моих прежних сайтов - перечислять их было бы долго, тем более что на текущий момент функционирует только http://www.posix.ru. Здесь я должен оговориться - в случаях расхождений с ранее мною написанным (а они будут довольно часты), в качестве "истины текущего момента" должен рассматриваться именно настоящий текст.
В своих сочинениях я опирался на множество источников. В первую очередь это официальная документация ко всем упоминаемым по ходу дела программам в формате man и, реже, info, а также html-, xml и pdf-документация на сайтах различных проектов Open Source.
Далее, я использовал бесчисленные on-line материалы с многочисленных русско- и англоязычных сайтов, посвященных тематике Unix, Linux и Open Source, ссылки на которые даются по ходу изложения.
На протяжении последних 10 лет тема Open Source, особенно Linux, занимает все большее место на страницах традиционной "бумажной" компьютерной прессы. Я по мере сил слежу за такими публикациями и при необходимости использую их в своей работе - так что не избежать и ссылок на них (и, по возможности, их онлайновые версии).
Разумеется, не обошелся я и без чтения "толстых" книг по Unix и Linux. Из них наибольшее влияние на меня оказали:
Наконец, множество сведений я почерпнул в ходе переписки с моими многочисленными корреспондентами и в общении на различных форумах.
В заключение раздела стоит привести некоторые ссылки:
Таким образом, для создания этой книги привлекались плоды работы множества людей. И потому, пользуясь случаем, я хотел бы выразить свою искреннюю признательность им всем - знакомым, очно, или заочно, и совсем незнакомым:
Прошу прощения, но полное поименное перечисление в этом реверансе заняло бы не один десяток страниц. Тем не менее, отдельные благодарности (не ищите скрытого смысла в порядке перечисления - он абсолютно случаен):
Особая благодарность: моей жене Лене, и моим детям Оле и Вите, - за сам факт их существования...
Все перечисленные (и не перечисленные) лица оказали в той или иной мере положительное влияние на данное сочинение. Тем не менее, написано оно мною, и я принимаю на себя всю полноту ответственности за его (несомненные) достоинства и (вполне возможные) недостатки.
Окончательный вариант книги был подгтовлен по заказу Линуксцентра и при его поддержке.