Теоретические рассуждения предыдущей заметки о несравненных достоинствах FreeBSD как настольной платформы, следовало бы подкрепить практическими примерами. А поскольку практика эта основывается на примере себя, любимого, сделаю маленький биографический экскурс как я, не будучи ни сисадмином, ни developer'ом (и не имея ни малейшего желания становиться ни тем, ни другим), использую FreeBSD в своей обыденной жизни. Но перед этим следует слегка определиться с вопросом,Из чего сделана FreeBSD
Понять, из чего сделана FreeBSD, проще всего в сравнении ее с Linux'ом. В отношении последнего существует две противоположные точки зрения. Первая, высказываемая Ричардом Столлменом, гласит, что Linux это ядро системы, а все прочее, объединяемое в дистрибутивы его, суть отдельные пакеты проекта GNU (по преимуществу). Вторая точка зрения неявно подразумевается многочисленными составителями дистрибутивов. Согласно ей, Linux это все, что майнтайнер дистрибутива в оный включил (вплоть до оконной системы X, интегрированных сред типа GNOME и KDE, и прочего, обнаруживаемого на 5-10-дисковых наборах).
В свое время я исследовал этот вопрос в серии заметок на UNIX4All и пришел к выводу, что, подобно Шарикову, не согласен ни с тем, ни с другим мнением. Ибо Linux системная целостность, образованная ядром и исторически сложившимся комплексом поддержки, обеспечивающим старт машины и инициализацию системы, работу с устройствами и файловыми системами, а также средства для наращивания ее функциональности (по простому компилятор и системные библиотеки). Все это вместе можно объединить в понятие Base Linux в противоположность всему тому множеству открытого и свободного софта, который может функционировать (в том числе и) под Linux.
Во FreeBSD противопоставление базиса системы и пользовательских приложений проводится еще более последовательно. Первый объединяется в понятие Distributions, приложения же охватываются термином Ports, то есть программы, портированные (в том числе и) на FreeBSD.
В Distributions, то есть собственно систему FreeBSD par exellence, включаются
- ядро системы;
- комплекс низкоуровневых утилит поддержки;
- набор аналогов классических Unix-утилит для работы с файлами и текстами;
- системные библиотеки BSD libc и r_libc;
- базовые средства разработки (компилятор Си);
- базовые средства безопасности (включая OpenSSH и OpenSSL).
Компоненты Distributions в подавляющем своем большинстве оригинальные разработки проекта FreeBSD и его исторических предшественников. Говоря о классических утилитах Unix, я не случайно употребил термин «аналоги» это, как правило, функционально расширенное их воспроизведение (достаточно посмотреть на утилиту more, которая по своим функциям гораздо более походит на Linux'овый less, нежели на свою тезку из систем-потомков System V). Самобытность компонентов Distributions подчеркивается лицензией, под которой они распространяются, и которая носит имя BSD-лицензии. В отличие от широко известной лицензии GPL, она не возбраняет распространение основанных на ней разработок без исходных текстов (здесь не место обсуждать вопрос о том, какая из этих лицензий более соответствует идеалам свободы и демократии).
Справедливости ради нужно заметить, что в состав FreeBSD Distributions исторически входит некоторое количество компонентов, заимствованных из разработок проекта GNU и, соответственно, подпадающих под лицензию GPL (наиболее показательный пример компилятор gcc: это тот же самый компилятор, который входит в состав любого дистрибутива Linux). Однако существует устойчивая тенденция по замене GNU-программ оригинальными разработками FreeBSD (правда, именно до gcc, похоже, дело дойдет не скоро).
Еще одна отличительная особенность компонентов FreeBSD Distributions система их документации. Все они сопровождаются полным описанием в классическом для POSIX-систем формате man-страниц. В программах GNU в последнее время можно заметить тенденцию подмены manual pages на документацию в формате info (ИМХО, самая GNU'тая из всех GNU-разработок). Однако даже GNU-программы, включенные в Distributions, содержат подробнейшие man-страницы для примера сравните man (1) gcc из современных версий FreeBSD с оригинальным GNU man-pages для этого же пакета.
Компоненты Distributions при инсталляции системы разворачиваются из бинарных тарбаллов. Однако предусмотрен механизм их автоматической тотальной пересборки с учетом пользовательских настроек make world. Ну и, разумеется, перекомпиляция ядра системы (в текущих версиях операция make buildkernel) неотъемлемый атрибут индивидуального конфигурирования FreeBSD.
Порты FreeBSD концепция, воздействие которой на мир Open Sources трудно переоценить, и потому заслуживает особого рассмотрения. В текущем же контексте достаточно сказать, что это система автоматического получения исходников (по Сети, с мастер-сайтов разработчиков), отслеживания их зависимостей, адаптации (то есть наложения FreeBSD-специфичных патчей), сборки (компиляции и линковки с разделяемыми библиотеками) и установки (то есть инкорпорации в файловую систему FreeBSD) практически любых программ, свободно распространяемых и доступных в исходных текстах. Она предусматривает также генерацию бинарных пакетов, пригодных для автономного (с учетом зависимостей) распространения именно в таком виде портированные программы входят в состав полного дистрибутива FreeBSD.
Важно подчеркнуть, что если сама по себе система портов неотъемлемая часть FreeBSD Distributions, то порт любой программы из ее состава не содержит ни исходных текстов, ни исполнимых модулей: исходники любой портированной программы абсолютно те же самые, на которых основаны пакеты любого Linux-дистрибутива, а бинарники генерируются автоматически из системы портов. И потому во FreeBSD в принципе доступно все то же многообразие открытых и свободных программ, что и в Linux.
Обособленность портированных программ от FreeBSD Distributions подчеркивается отличием лицензионных соглашений: все портированные программы распространяются под теми лицензиями, которые определены для них авторами (GPL для программ из проекта GNU и соплеменных, лицензия X-консорциума для оконной системы X, и так далее).Distributions обзор возможностей
Сам по себе FreeBSD Distributions весьма мощный программный комплекс, пригодный для решения многих пользовательских задач. Разумеется, в его составе низкоуровневые системные утилиты, утилиты для управления файловыми системами, процессами, получения информации и т.д.
Однако в Distributions можно найти множество пользовательских утилит средства работы с файлами, включая столь универсальное, как find, весьма сложные программы обработки текстов от экранного редактора ee и строчных редакторов ed и sed до awk, средства поиска текстовых фрагментов grep, а также инструменты форматирования текстов (семейство groff). Имеется ftp-клиент, почтовая система sendmail, базовые средства работы с сетями (в том числе и для модемного соединения).
Наконец, средств Distributions вполне достаточно для наращивания функциональности системы путем сборки программ. Для этого в нем предназначены компилятор gcc и полный комплекс утилит поддержки, начиная с языковых анализаторов и кончая универсальной make.
Тем не менее, для комфортной работы (не говоря уже о развлечениях) средств Distributions явно недостаточно. И тут на помощь приходит система портов FreeBSD в виде ли средства получения и сборки исходников, или как метод генерации бинарных пакетов.
Установка программ из системы портов или в виде прекомпилированных пакетов во FreeBSD чрезвычайно проста настолько, что прямо-таки провоцирует пользователя устанавливать и устанавливать программы. А поскольку она еще включает и развитые средства для «чистого» удаления всего того, что оказалось ненужным, развлечения эти проходят практически безболезненно. И потому очень важно сразу же определиться с набором жизненно важных приложений. Обзор их, исходя из собственного опыта, и будет темой дальнейшего рассмотрения.
Сразу оговорюсь все сказанное ниже лишь мое субъективное мнение, заслуживающее подзаголовка типа «Мои любимые программы». Я не навязываю своего выбора, но в каждом конкретном случае постараюсь обосновать, почему его сделал. Возможно, это поможет вам сделать выбор собственный.Shells
Командная оболочка (она же командный интерпретатор, по простому shell) первая программа, с которой пользователь сталкивается в любой POSIX-совместимой системе. Правда, именно во FreeBSD эта первая программа способна обескуражить даже многоопытного линуксоида: вместо принятого в большинстве дистрибутивов Linux мощного и интерактивно удобного bash ему предлагается /bin/sh, чьи интерактивные возможности навевают воспоминания о первозданном shell'е товарища Борна. Правда, для суперпользователя есть дополнительная привилегия по умолчанию ему назначается нечто под именем /bin/csh, понимающее, по крайней мере, автодополнение путей и помнящее историю команд.
Надо сказать, что ни та, ни другая из умолчальных оболочек не является копией своих престарелых тезок (и shell Борна, и изначальный берклианский csh не принадлежат к числу свободно распространяемых программ). Оболочка /bin/csh это просто тот же командный интерпретатор tcsh в облегченном виде. Ну а /bin/sh это искусственная конструкция, призванная реализовать мифический POSIX shell со всеми заложенными стандартом возможностями (точнее, их отсутствием).
Использование интерактивно очень слабого /bin/sh в качестве системной оболочки (напомню, что принятый в этом качестве в Linux bash неизмеримо мощнее) имеет целью не только соответствие стандартам: это очень маленькая и компактная оболочка, которая не поглощает ресурсов при запуске ее в качестве интерпретатора сценариев (а все системные сценарии FreeBSD это скрипты /bin/sh). Ведь при shell-скриптинге интерактивные возможности оболочки несущественны, отступая перед требованиями совместимости и быстродействия.
В качестве же пользовательской (то есть login shell) никто не возбраняет применять любую другую оболочку, с более мощными интерактивными возможностями. Благо в портах FreeBSD можно обнаружить и милый сердцу линуксоида bash, и полномерный tcsh, и pdksh свободный клон оболочки Корна (именно она послужила прототипом POSIX shell, а не исходный shell Борна, как часто полагают). Есть и много весьма экзотических оболочек, перечислять которые я не буду.
Однако среди этого списка, а увидеть его можно командой $ ls /usr/ports/shells
особое внимание привлекает (надеюсь) одна оболочка zsh. Именно она, вне зависимости от используемой операционной системы, бессменно стоит у меня в качестве login shell на протяжении уже нескольких лет. В чем ее преимущества?
Во-первых, принадлежа к семейству Bourne Shell совместимых, она не менее пригодна для shell-скриптинга, чем bash. Во-вторых, по своим интерактивным возможностям zsh не имеет себе равных. Возможности настройки автодополнений самых разных видов просто необъятны. Например, набрав в командной строке что-нибудь вроде $ cd /u/sr/sy
и нажав клавишу табуляции, можно чудесным образом перенестись в каталог с исходниками ядра FreeBSD. Далее автокоррекция ошибок, как при указании путей, так и имен команд, и даже их опций и аргументов; мощные средства наращиваемого поиска в командах; система глобальных псевдонимов, не имеющая, насколько я знаю, аналогов. И многое, многое другое.
И, наконец, в третьих, zsh обладает максимальными возможностями настройки приглашения командной строки, позволяющими сделать его максимально информативным. В общем попробуйте, не пожалеете.
К слову сказать, не уйдут обиженными и те, кто в качестве пользовательской оболочки предпочитают файловые менеджеры командирского стиля. Из числа сыновей и внуков командира Нортона во FreeBSD обнаруживается не только традиционный Midnight Commander (правда, тут его реализация оставляет желать лучшего, существенно уступая Linux'овой), но и весьма своеобразный Deco (Demos Commander детище отцов Российского Интернета). При внешнем сходстве с прототипом он не столько файловый менеджер, сколько визуализатор действий в командной строке.Оконные менеджеры и интегрированные среды
Роль, отведенная в консоли командным оболочкам, в графическом режиме (то есть в оконной системе X) призваны играть оконные менеджеры или (для тех, которые с претензиями) интегрированные графические среды.
Здесь трудно дать однозначные рекомендации выбор среды обитания графического режима дело не просто субъективное, я бы сказал, даже интимное. Впрочем, для поклонников истинной интегрированности он однозначен: KDE. GNOME в этом отношении до нее далеко не дотягивает (да простят меня его поклонники), а XFce функционально много беднее (хотя и она может быть интересна интеграторам с аскетическими склонностями).
Впрочем, и с GNOME не все так однозначно. Дело в том, что эта среда базируется на библиотеке Gtk, лежащей в основе многих других (напрямую с GNOME не связанных) приложений. Из которых минимум одно будет абсолютно необходимо знаменитый Gimp (о котором будет говориться в разделе про графику). Так что если нет желания (возможности) плодить всякого рода библиотеки почему бы не остановиться и на GNOME...
С оконными менеджерами еще сложнее, ибо имя им легион: от совсем простых, ничего, кроме манипулирования окнами, делать не умеющих, до вплотную приближающихся по функциональности к интегрированным средам.
Примером последних выступает WindowMaker, очень элегантный внешне и за годы своего существования обросший многочисленными дополнительными модулями.
Впрочем, и простые исходно оконные менеджеры из семейства Blackbox'а можно, затратив некоторые усилия, превратить в интегрированные среды индивидуального (можно сказать штучного) разбора. И здесь пальма первенства за Fluxbox благодаря его удобной системе закладок и возможности группировать приложения. Во всяком случае, именно это мой любимый оконный менеджер...Текстовые редакторы
Текстовый редактор один из главных орудий труда пользователя POSIX-совместимых систем. Не случайно в этой среде культивируется трепетное, даже сакральное к ним отношение. А дискуссии на тему vim vs. emacs по накалу страстей приближаются к разговорам футбольных болельщиков.
Однако я к участию в священных войнах призывать не буду. И Vim, и Emacs мощные орудия для работы с текстами, далеко переросшие (особенно последний) рамки просто редакторов. И именно потому избыточные для большинства пользователей-непрограммистов.
А потому в качестве консольного редактора, взамен штатного для FreeBSD Distributions редактора ee, рискну предложить скромного трудягу joe. Он легок в килобайтах, легок в освоении, легок в настройке. А благодаря простому до прозрачности макроязыку и возможности протоколирования действий еще и легко расширяется функционально до пределов, ограниченных только задачами и фантазией пользователя. По крайней мере, превращение его, скажем, в специализированный редактор html-кода осуществляется легким движением руки и в считанные минуты. И в итоге joe в равной мере подходит как для правки пары строк в конфигурационном файле, так и для сочинения весьма объемных манускриптов (проверено лично все мои книги и 90% статей написаны в нем).
Работа в консоли замечательно удобна и полезна для здоровья, однако может показаться несовременной (да и лишние гигагерцы с гигабайтами надо ведь куда-то девать). И потому может возникнуть желание работать с текстами в графическом режиме. Что ж, выбор редакторов для оконной системы X еще более обширен, чем для консоли.
Во-первых, в X'ах (как-нибудь я расскажу, почему это жаргонное словечко лучше отражает суть явления, чем всякие коряво-пуристические переводы) можно запустить любой редактор консольного режима (приобретя иногда некоторые дополнительные возможности). Во-вторых, такие консольные монстры, как Vim и Emacs, будучи собраны должным образом (то есть с поддержкой X'ов) приобретают столько новых функций, что вполне сойдут за самостоятельные программы. И в третьих, для системы X разработано множество редакторов, исконно использующих возможности графического режима.
И тут должен высказать свое мнение: если дискуссии о первенстве среди консольных редакторов будут продолжаться ad finem seculorum, то в отношении редакторов графического режима споры неуместны. Ибо пальма первенства в этом клане, безусловно, за Nedit. Расписывать его достоинства можно было бы долго. Достаточно сказать, что при внешне непритязательном интерфейсе (что само по себе есть плюс простор творческой мысли не стеснен иконками, рюшками и менюшками) он использует возможности истинно X'ового графического режима на все 100%. В частности, в нем существует несколько способов выделения текста мышью, задействующее все три потенциальные ее кнопки. А если прибавить сюда развитой макроязык с возможностью протоколирования действий и возможность интеграции любых shell-сценариев мое утверждение о превосходстве Nedit'а не покажется через чур смелым.Офис
Хотя текстовый редактор неизмеримо превосходит любой ворд-процессор при создании текстов, претендующих на оригинальность содержания, время от времени приходится заниматься и их оформлением. Для этого во FreeBSD можно отыскать множество исконно Unix'овых текстовых процессоров (то есть, если следовать оригинальной терминологии, неинтерактивных систем разметки и форматирования текстов), начиная с groff и заканчивая TeX'ом. Если последний покажется через чур сложным доступна и графическая надстройка над них, Lyx, в которой за результат можно не беспокоится даже при отсутствии всяких представлений о полиграфии: шедевра верстального искусства, может, и не получится, но и от откровенно отвратительного макета он спасет. Есть и малоизвестный гомолог TeX'а lout, более легкий в освоении и использовании, но вполне достаточный для тех, кому не нужны трехэтажные конструкции из интегралов по траектории.
Не возбранно, однако, и использование традиционных (для Windows/Mac/иже с ними) ворд-процессоров WISIWIG-типа. Здесь первым следует помянуть OpenOffice: его версия под Linux, собранная с поддержкой всей кириллической специфики (например, в сборке Altlinux) вполне справно функционирует под FreeBSD в т.н. режиме совместимости. Ничуть не менее быстро (вернее, не более медленно), чем в родной операционке. Да и собственный FreeBSD-порт этого монстра конторской интеграции давно доступен.
Если, однако, быстродействия OpenOffice покажется недостаточно, то имеются и альтернативы. Например, KOffice последние его версии приобрели устойчивость, позволяющую заниматься редактированием и форматированием без боязни через полчаса потерять все результаты работы. Ну и средства Gnome Office ворд-процессор Abiword и электронная таблица Gnumeric, при своей относительной простоте и компактности вполне справляются с большинством конторских задач.Средства интернет
С чем особенно хорошо в мире Open Sources (и, соответственно, во FreeBSD тоже) так это со средствами навигации по интернету. Начать тут следует с двух браузеров текстового режима lynx и links. Воспроизвести красоты web-дизайна они, разумеется, не способны. Зато эффективно избавляют от дизайнерских уродств. А заодно весьма способствуют экономии трафика, делая ненужными всякого рода баннеро-резки, отключение графики и тому подобные дела. Links к тому же вполне может воспроизводить таблицы и фреймы, имеет удобное меню, легкую систему настройки и отлично разбирается в кодировках кириллицы.
Браузеров же графического режима труднообозримое количество. Здесь и Mozilla со всеми ее plug-in'ами (в том числе для просмотра Macromedia Flash, графики в формате DjVu, прокручивания RealAudio и RealVideo), и построенный на том же движке, но более быстрый galeon, и предельно облегченный, а потому просто стремительный dillo. Я, однако, в качестве браузера в X'ах использую konqueror из KDE он вполне заслуживает причисления к лику лучших программ всех времен и народов. Будучи настроен должным образом, он совмещает в одном лице и браузер, и файловый менеджер, и универсальный визуализатор любых операций в командной строке последнее благодаря полноценному окну эмулятора терминала.
На почтовых программах и ftp-клиентах задерживаться не буду: прошу поверить на слово, их вдоволь, и для консоли, и для графического режима. Правда, традиционная во FreeBSD схема настройки почты с собственным почтовым сервером Sendmail, в домашних условиях может напоминать срельбу из пушки по воробьям. Однако никто не мешает настроить для доставки/отправки почты легкие почтовые клиенты типа mutt или pine. А в графическом режиме доступны и почтовый клиент из Mozilla, и штатный почтовый клиент из KDE KMail. В первую же очередь замечательно быстрый Sylpheed, при простоте использования обеспечивающий функциональность, сравнимую со знаменитым The Bat.Графика
Средства работы с графикой традиционно считались слабым местом открытых и свободных Unix-подобных систем. Однако в области растровой графики подвижки на лицо: не случайно растровый графический редактор Gimp признан одним из самых удачных проектов в мире Open Sources. И, к слову сказать, портирован и под Windows, где недостатка программ такого рода никогда не наблюдалось. Не буду вдаваться в дискуссию лучше он Photoshop'а или нет: для профессиональной подготовки web-графики и любительских манипуляций со всей прочей графикой его хватает за глаза. А высокая полиграфия... что же, это отнюдь не целевая ниша FreeBSD, для того Mac'и придуманы.
Уникальная особенность FreeBSD возможность делать скриншоты текстовой консоли. Для этой цели в ней есть программа scr2png, преобразующая экранные дампы (создаваемые средствами обычного консольного драйвера syscons) в истинные графические изображения. Правда, только в png-формате, но много ли систем могут похвастаться и этим?
С векторной графикой несколько хуже: традиционные векторные редакторы типа sketch или tgif могут вызвать только скептическую улыбку у пользователя последних версий Corel Draw, Illustrator, Freehand. Однако и здесь не все безнадежно: рисовальный модуль из пакета OpenOffice вполне пригоден для того же любительского живописания (а также для вполне профессиональной технической графики). Плюс к тому он обладает уникальной особенностью возможностью создания (причем очень легкого) истинно трехмерной (основанной на OpenGL) графики.Мультимедиа
В аудиосфере FreeBSD если и не впереди планеты всей, то весьма к тому близка: количество cd- и mpeg-проигрывателей можно сопоставить только с суммарным числом текстовых редакторов и браузеров. Лично я пользуюсь для этих целей консольной программой, простой, как три пальца, и соответственно этому именуемой mpg123. Есть, однако, и более сложные плееры, в том числе и для графического режима. Тут достаточно упомянуть Xmms, обладающий всеми функциями известного winamp'а.
Столь же хорошо обстоит дело с cd-грабберами и mpeg-аудиокодеками. Процедуру о-граббления легко выполнить с помощью cdparamoia, а перегнать на-граббленное в mpeg универсальной lame или более простым bladeenc. Не забыты и средства конвертации в истинно свободный аудиоформат ogg, для чего служит пакет vorbis-tools.
В области видеовоспроизведения можно назвать три программы: Noatun из KDE, xine, основанный на Gtk и, пожалуй, наиболее универсальный из всех Mplayer. К любой из них легко подключаются кодеки для воспроизведения всевозможных видеоформатов, включая DivX. Говорят, и для просмотра DVD их можно использовать, но не пробовал за неактуальностью...
Надеюсь, моя легкая пробежка трусцой по необъятным просторам портов FreeBSD убедила читателя, что в этой системе есть все необходимое для работы и большая часть роскошного для развлечения. В принципе, каждая из упомянутых здесь программ заслуживает отдельной статьи, и подчас не одной. Но и сказанного, думаю, достаточно для того, чтобы попробовать свои силы в ее установке, что и будет темой нескольких ближайших заметок.