Собери свою Ubuntu

Алексей Федорчук
8 августа 2006 г

Со времени сочинения этой заметки прошло много времени. И нынче Свою Убунту не собирает только супер-ленивый. Однако с точки зрения методики эта заметка сохраняет актуальность — с поправкой на изменившиеся реалии, разумеется.

Содержание

Введение

Дистрибутивы семейства Ubuntu, по словам основоположника этого проекта, Марка Шаттлворта (см. интервью в журнале LinuxFormat, #2(71), 2005), рассчитаны на две категории пользователей: тех, кто только начинают свое приобщение к Linux и Open Source, и тех, которые многое знают и умеют в этой сфере.

Основные представители этого семейства — собственно Ubuntu и Kubuntu — потребности первой группы удовлетворяют во все возрастающем объеме: графический инсталлятор текущей версии (6.06 Dapper) с CD Desktop позволяет установить систему буквально шестью кликами мыши, а фиксированный набор приложений охватывает все сферы настольного применения Linux.

Что же жо категории пользователей опытных — их такое положение дел часто не устраивает. Каждый из них за годы работы в Linux обзавелся собственным устойчивым кругом постоянно используемых программ, далеко не всегда совпадающим с умолчальным выбором майнтайнеров любого дистрибутива. И потому предпочитает собирать себе систему по кирпичикам.

Появление еще одного представителя семейства, Xubuntu, было в определенной мере реакцией на потребности именно таких пользователей. Предоставляя легкий, не обремененный встроенными приложениями, десктоп — XFce, и минимальный набор пользовательских программ, дальнейшую комплектацию системы он возлагает уже на пользователя.

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

Так можно ли на базе Ubuntu собрать, как конструктор, собственную систему, следующую пути разумного минимализма? Систему, в которой, как в рюкзаке хорошего туриста, не должно быть ничего лишнего — но все необходимое — должно быть?

Можно. Потому что любой из «главных» дистрибутивов семейства предоставляет и еще одну возможность подбора собственного комплекта приложений. Это — так называемая серверная установка, доступная из инсталлятора текстового режима с CD Alternate.

Базис Ubuntu

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

Пользователи, знакомые с устройством сайта cdimage.ubuntu.com, наверняка знают, что на нем, кроме собственно Ubuntu, Kubuntu etc., можно найти образы дисков под названием ubuntu-server. Так вот, это совсем не то, что серверная установка в обычных дистрибутивах, ибо как раз и включает в себя специфически серверные пакеты, ориентированные на так называемый LAMP (устоявшееся название для связки Linux, Apache, MySQL и PHP — то, под чем крутится подавляющее большинство web-серверов мира).

Итак, для установки базиса Ubuntu нам потребуется любой из универсальных дистрибутивов этого семейства — но обязательно в варианте CD Alternate (CD Destop опции серверной установки не имеет). Под систему нужно иметь, в зависимости от потребностей в дополнительном софте, от 1 до 2 Гбайт свободного дискового пространства). Ну и конечно же, хороший (то есть быстрый и дешевый) канал в Интернет: без него за собирание собственной Ubuntu лучше не браться.

Так что — загружаемся с установочного компакта и после появления меню загрузчика посредством — переходим в режим командной строки, где в ответ на приглашение ее вводим:

boot: server

при необходимости дописывая требуемые опции, например, на некоторых ноутбуках, noapic.

Далее выполняется выбор языка, раскладки клавиатуры и страны пребывания. Нелюбителям рiдной мовы можно сохранить умолчальные язык и раскладку — English и en(us), соответственно, — но страну, тем не менее, лучше сменить на Россию (Russia), в противопложноном случае для настройки времени будут предложены только часовые пояса США.

Можно, однако, выполнить и русификацию системы, установив родной язык и кириллическую раскладку — предпочтителен вариант Russian (Winkeys), — при локали UTF-8, как это сделал я. Правда, в дальнейшем такое решение потребует некоторой коррекции, но, как будет видно, ничего страшного в этом нет.

В остальном процедура установки происходит как при обычной пользовательской инсталляции, только гораздо быстрее, ибо пакетов разворачивается всего на 330-340 (в зависимости от выбора языка) Мбайт — без Иксов, десктопа, OOo и прочих обязательных при обычной инсталляции приложений.

Различие с обычной установкой проявляется лишь на последней стадии — при выборе загрузчика. В качестве такового серверный вариант инсталляции по умолчанию предлагает LILO. Он может быть установлен 1) в MBR, 2) в загрузочный сектор раздела, несущего корневую файловую систему, или 3) в другое место. Если общаться с LILO нет желания, то следует выбрать третий вариант, и через пункт Вернуться выйти в главное меню установщика. А уже в нем можно выбрать установку GRUB — также в MBR или загрузочный сектор корневого раздела.

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

Именно это имело место в моем лучае — при установленной Kubuntu Dapper и загрузчике GRUB. Для обеспечения загрузки новой Ubuntu к наличным в файле /boot/grub/menu.lst (от прежней инсталляции, разумеется) строкам

title           Ubuntu, kernel 2.6.15-26-386
root            (hd0,0)
kernel          /vmlinuz-2.6.15-26-386 root=/dev/hda6 ro quiet splash
initrd          /initrd.img-2.6.15-26-386
savedefault
boot

было достаточно добавить такие:

title           My Ubuntu
root            (hd0,3)
kernel          /boot/vmlinuz-2.6.15-23-386 root=/dev/hda4 ro splash
initrd          /boot/initrd.img-2.6.15-23-386
savedefault
boot

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

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

Обустройство консоли

Я уже говорил, что жить в консоли нам некоторое время придется — так что для начала имеет смысл заняться обустройством среды обитания. Первый шаг в этом направлении — ликвидация квадратиков, пока временная. Для чего переопределяем локальнозависимые переменные

export LANG=en_US.UTF-8
export LANGUAGE=en

что дает нам возможность общаться с системой на вражьей мове. А это, согласитесь, лучше, чем не общаться с ней — на рiдной.

Теперь редактируем файл /etc/apt/sources.list. Что сводится к снятию комментариев со всех строк, описывающих репозитории (тех, которые по умолчанию таковые сохранили), и внесению строк:

deb http://us.archive.ubuntu.com/ubuntu/ edgy multiverse
deb-src http://us.archive.ubuntu.com/ubuntu/ edgy multiverse

нужных для доступа к не вполне официальным пакетам — в дальнейшем нам потребуются и другие репозитории. По завершении чего выполняем процедуру

$ sudo aptitude update

и приступаем к установке необходимых пакетов.

Первым из них будет gpm:

$ sudo aptitude install gpm

что сразу же, без всякой перезагрузки, включит нам службу консольной мыши.

Теперь займемся кириллизацией консоли. Для этого устанавливаем пакет

$ sudo aptitude install console-cyrillic

и выполняем его конфигурирование. Сначала — редактируем файл /etc/console-cyrillic, снимая комметарий со строки

# Debconf: YES

Напомню, что редактирование общесистемных конфигов выполняется с помощью команды

$ sudoedit /path2/filename

Следует только предварительно озаботиться, чтобы в пользовательском файле ~/.bashrc наличествовала строка

export EDITOR=nano

Если, конечно, вы не являетесь приверженцем классического vi — при отсутствии явного указания редактор именно он окажется системным редактором по умолчанию.

Теперь выполняем собственно реконфигурирование установленного пакета кириллизации консоли:

$ sudo dpkg-reconfigure console-cyrillic

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

вполне тривиальны, и были описаны ранее.

Теперь остается только выполнить команду

$ cyr

дабы волшебным образом обрести способность читать и писать кириллицу без всякого перезапуска системы. Причем способность к восприятию русского языка сохранится и после рестарта — при положительном ответе на заданный ранее соответствующий вопрос. Правда, это будет иметь место только в том случае, если при редактировании конфигурационного файла GRUB мы отказались от сплэш-картинки, иначе запуск команды cyr нужно будет каждый раз обеспечивать заново после старта системы. Что, впрочем, тоже не смертельно — ее можно внести в профильный файл пользовательского шелла тех юзеров, которые нуждаются к кириллических символах.

Актуализация системы

Все, теперь можно жить нормально. То есть — занимаясь дальнейшим совершенствованием системы, выполнять при этом кое-какую текущую работу. Для меня таковой, например, стало сочинение этой заметки посредством текстового редактора nano.

С работой все ясно — у каждого она своя. А вот совершенствование системы можно начать с разных концов. Например, вооружившись aptitude, избавиться от лишних пакетов — именно в данном случае интерактивный режим этой программы придется очень кстати.

Правда, при серверной установки с CD Desktop особых излишеств в пакетном хозяйстве не обнаружится. Разве что можно удалить средства поддержки ненужных файловых систем (первым кандидатом здесь будет JFS) и таких несипользуемых возможностей, как система управления мльтиустройствами EVMS, логическими томами LVM, программными RAID-массивами.

Теперь можно провести тотальное обновление пакетов — это будет актуально, если к моменту установки со времени выхода релиза прошло достаточно времени. При сохранении текущей версии (например, Ubuntu Dapper) для этого достаточно выполнить процедуру

$ sudo aptitude dist-upgrade

или ограничиться

$ sudo aptitude upgrade

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

Однако, при желании находиться на острие прогресса, можно и приподняться до версии тестируемой — то есть, в настоящий момент, до Ubuntu Edgy Etf (будущая 6.10). Что потребует еще одного редактирования файла /etc/apt/sources.list — замены в нем всех вхождений dapper на edgy (в nano это делается клавишной комбинацией +<\>. И теперь уже последовательность процедур

$ sudo aptitude update
$ sudo aptitude dist-upgrade

станет обязательной.

Пересборка ядра

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

Так что устанавливаем инструментарий для сборки ядра:

$ sudo apt-get install kernel-package

который в качестве своих зависимостей втянет компилятор gcc, binutils и все прочее, необходимое для обеспечения процесса сборки любой программы. Однако для сборки ядра этого будет недостаточно. Потребуется также пакет

$ sudo aptitude install libncurses5-dev

отвечающий за построение меню при выполнении make menuconfig, пакет

$ sudo aptitude install debhelper

обеспечивающий получение помощи в этом нелегком деле, и пакет

$ sudo aptitude install modutils

назначение которого вполне прозрачно — это утилиты для управления модулями ядра. Наконец, возможно, не лишним окажется пакет fakeroot, одноименной командой которого создается «правильное» root-окружение, в том числе и доступ к необходимым файлам.

Теперь нужно то, вокруг чего, собственно, все и вертится — исходные тексты ядра. Их мы получаем, установив пакеты

$ sudo aptitude install linux-source-2.6.17

представляющий собой собственно тарбалл исходников ядра (tar.bz2), и

$ sudo aptitude install linux-headers-2.6.17-5-686

с заголовочными файлами. В качестве зависимостей они вытащат нам все, что еще потребуется для сборки ядра.

Что ж, можно начинать процедуру. Переходим в нужный каталог

$ cd /usr/src

и посредством команды ls видим в нем файл linux-source-2.6.17.tar.bz2. Каковой подлежит немедленному распаковыванию:

$ sudo tar xjvf linux-source-2.6.17.tar.bz2

Перемещаемся во вновь возникший каталог

$ cd linux-source-2.6.17

и копируем в него последний из наличных конфигов

$ sudo cp /boot/config-2.6.17-5-386 .config

Он понадобится, чтобы не начинать конфигурирование ядра с «чистого листа».

Теперь все делаем, как обычно, то есть конструируем меню конфигурации ядра:

$ sudo make menuconfig

Во многих источниках указывается, что эту процедуру можно выполнить от лица пользователя. Что неверно: выполнение сценария генерации ядра требует доступа к некоторым файлам, закрытым для обычных пользователей, и потому невозможно без привилегий администратора.

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

$ sudo -s -H

Впрочем, осторожнее поступить так, как я описывал выше — но это оставляю на усмотрение пользователя.

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

Так, в разделе General setup я предпочитаю включить опции

[*] Kernel .config support
[*]   Enable access to .config through /proc/config.gz

что обеспечивает доступ к конфигурации текущего ядра через файловую систему procfs: ее можно будет просмотреть простой командой

$ zcat /proc/config.gz

а не рыться в поисках актуального в данный момент конфига по каталогу /boot или /usr/src/linux-*

В секции Block layer я отключаю строку

[ ] Support for Large Block Devices

за ненадобностью: ну нет у меня дисковых устройств более 2 терабайт объемом.

В секции Processor family следует подобрать возможно близкий тип процессора. В моем случае (32-битный Sempron) это будет, очевидно,

(X) Athlon/Duron/K7

Сам по себе Sempron в списке доступных типов процессоров отсутствует.

Здесь же можно отключить такие явно ненужные вещи, как

< > Toshiba Laptop support
< > Dell laptop support

Если, конечно, ядро не собирается именно для этих ноутбуков. Ну и такие Intel-специфические вещи, как

< > /dev/cpu/microcode - Intel IA32 CPU microcode support
< > /dev/cpu/*/msr - Model-specific register support
< > /dev/cpu/*/cpuid - CPU information support

также выглядят лишними. В общем, для отключения в ядре архитектурных излишеств — перспективы огромные. Главное — не увлечься и не отключить что-либо критически важное. И еще: поскольку ранее решено было отказаться от initrd при загрузке, следует очень внимательно проверить, что поддержка устройств и файловых систем, несущих корневую файловую систему, была встроена в ядро, а не собиралась как загружаемый модуль.

То же самое относится к чипсету — очевидно, что в конкретной машине он будет один, наример, в моем случае

<*> ATI IXP chipset IDE support

Поддержку же прочих, не имеющих быть в наличии, чипсетов можно спокойно отключить. Аналогично поступив и с многочисленными SCSI-адаптерами — хотя сама по себе поддержка SCSI-интерфейса

 SCSI device support

родового класса SCSI-устройств

 SCSI disk support

и SCSI-дисков

 SCSI generic support

в разделе SCSI device support следует оставить — они обеспечивают работу с USB-накопителями любого рода и носителями цифровых камер.

В большинстве случаев можно смело отключать и опцию

[*] Multiple devices driver support (RAID and LVM)

в разделе Multi-device support (RAID and LVM). Если, конечно, LVM и программный RAID действительно не используются.

Наконец, нет ни малейшей необходимости в поддержке всего наличного изобилия сетевых устройств и протоколов.

Закончив конфигурирование, выходим из menuconfig с сохранением изменений и запускаем

$ sudo make-kpkg clean

Необходимость этого на чистом, казалось бы, дереве исходников

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

А вот теперь — собственно сборка:

$ sudo fakeroot make-kpkg --append_to_version
    -sempron --revision=rev.01 kernel_image

Здесь fakeroot, как уже было сказано, задает «правильное» root-окружение, команда make-kpkg выполняет собственно сборку ядра и модулей (подменяя собой обычные make vmlinuz и make modules), --append_to_version, --sempron и --revision=rev.01 задают дополнения к имени собираемого пакета, каковым в качестве basename выступает kernel_image.

Теперь остается только ждать завершения процесса. На моей машине с процессором Mobile Sempron 3300+ (реальная тактовая частота — 2 Ггц) и при моей конфигурации ядра он продолжается около 30 минут. А результатом его будет появление в каталоге /usr/src файла вида linux-image-2.6.17.6-sempron_rev.01_i386.deb, представляющего собой самый обыный deb-пакет, который остается только установить. Что мы и проделываем обчным же образом — переходим «на этаж выше» в файловой

иерархии

$ cd ..

и даем команду

$ dpkg -i kernel-image-2.6.17.6-sempron_rev.01_i386.deb

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

Хотя нет — нам надо предохранить установленный пакет от обновления при глобальной операции типа aptitude dist-upgrade, иначе мы после нее получим следующую сборку умолчального ядра, то есть все наши трды пойдут прахом. В этом деле прибегнем к интерактивному режиму программы aptitude. В ее списке установленных пакетов отыскиваем собранный нами, нажатием клавиши <=> фиксируем его и нажатием горячей клавиши делаем его необновляемым при обычном upgrade системы.

От бинарников — к исходникам

После успешной перезагрузки с новым ядром следует убедиться, что оно работоспособно и поддерживает все нужные нам функции. А вслед за тем открывается два пути.

Первый — очень заманчив: это превращение нашей, казалось бы, сугубо пакетной системы в систему Source Based, по образу и подобию Gentoo сотоварищи. Этот путь потребует сначала установки пакета apt-build и его настройки под реалии системы и собственные пожелания: указание на сборку пакетов под наличный процессор, задание степени оптимизации и, возможно других флагов для компилятора gcc. Черновая настройка выполняется прямо в ходе установки командой

$ sudo aptitude install apt-build

Однако после этого лучше выполнить процедуру реконфигурирования с помощью

$ dpkg-reconfigure apt-build

которая откроет дополнительные возможности для оптимизации собираемых программ. А затем… затем достаточно дать директиву

$ sudo apt-build world

которая и выполнит полную пересборку все ранее установленных пакетов — уже с теми флагами gcc, которые были заданы нами при настройке пакета apt-build, остается только дождаться окончания ее.

Впрочем, длительность пересборки — не единственный недостаток первого пути, раз-другой можно бы и потерпеть. Однако — и это самое главное — отныне мы будем лишены возможности простого обновления системы посредством aptitude upgrade или aptitude dist-upgrade. То есть не то что бы совсем лишены — просто любая из них сведет на нет все усилия по пересборке пакетов. Так что и обновляться отныне можно будет только через apt-build, что становится совсем уж не весело.

Наращивание системы: Иксы и менеджеры окон

Так что оставим слесарево, то есть тотальную сборку, слесарю, взяв себе кесарево, сиречь пакетную установку. Для чего нам понадобятся такие инструменты, как aptitude search для поиска нужных пакетов, aptitude show — для просмотра их свойств и, наконец, aptitude install — собственно для установки того, что мы нашли и сочли для себя подходящим.

Начинаем с оконной системы X, или, по простому, с Иксов. Для начала ищем пакет, который обеспечит нам базовую поддержку X-сервера:

$ aptitude search xorg

что даст нам длинный список оных, в том числе и интегральный xserver-xorg. Просмотр его зависимостей

Зависимости: xserver-xorg-core, xserver-xorg-driver-all |
xserver-xorg-driver, xserver-xorg-input-all |
xserver-xorg-input, x11-common,  laptop-detect, xresprobe, mdetect,
discover1, dmidecode

и описания

Описание: the X.Org X server
This package depends on the full suite of the server and drivers for
the X.Org X server, as well as providing a configuration infrastructure to manage xorg.conf.
It does not provide the actual server itself, but removing it is  strongly discouraged.

приводят нас к выводу, что он-то нам и нужен, почему подлежит немедленной установке:

Впрочем, его недостаточно — требуются еще базовые компоненты Иксов. Отыскиваем соответствующий пакет посредством

$ aptitude search x-window

А из вывода команды

$ aptitude show x-window-system-core

убеждаемся, что это как раз и есть искомое недостающее:

Описание: X Window System core components
This metapackage provides the essential components for a standalone
workstation running the X Window System.  It provides the X libraries,
an X server, a set of fonts, and a group of basic X clients and utilities.

и, значит, также должно быть немедленно установлено:

$ sudo aptitude install x-window-system-core

Теперь, дав в свободной виртуальной консоли команду

$ startx

имеем удовольствие наблюдать чистые Иксы, то есть серое поле с крестообразным курсором мыши. Реакция его на перемещение грызуна означает, что X-сервер функционирует исправно. Впрочем, на от этого ни холодно, ни жарко: едиснтвенное, что можно сделать с чистыми Иксами — это выйти из них. А для практической работы требуется как минимум программа под названием менеджер окон. Можно, конечно, установить и всамделишний десктоп, то есть интегрированную среду, типа KDE, GNOME или XFce — но не для того же мы отказывались от укомплектованных дистрибутивов Kubuntu, Ubuntu или Xubuntu, чтобы ту же кучу приложений устанавливать вручную.

В проблему выбора оконного менеджера вмешиваться не буду — это все равно, что лезть в личную жизнь пользователя. И потому просто продемонстрирую дальнейшую процедуру на некоем подопытном кролике — пусть в качестве такового выступит fluxbox, которого ни один пурист True Unix GUI не заподозрит в Windows-подобии.

Итак, устанавливаем нашего кролика:

$ sudo aptitude install fluxbox

Затем с помощью редактора nano создаем в нашем домашнем каталоге файл .xinitrc, в который вносим единственную (пока) строку:

exec fluxbox

И теперь в ответ на команду startx вместо мертво-серого поля видим элегантное рабочее поле с аккуратной панелькой и контекстным меню по нажатию правой клавиши мышы.

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

Первая проблема решается переконфигурированием X-сервера:

$ sudo dpkg-reconfigure xserver-xorg

В ходе его придется ответить на большое количство вопросов. Я на этом останавливаться не буду: в первом приближении ответы достаточно тривиальны, а детальное описание сути того, что за ними стоит, далеко выходит за рамки этой заметки.

Вопрос же с неполной русификацией fluxbox также решаем — подбором тем и редактированием их описаний на предмет подключения только тех шрифтов, которые содержат символы кириллицы. Я полагаю, что любители этого оконного менеджера знаю, как это делается — тем паче, что в других менеджерах окон все может быть совсем по другому.

Выбор приложений

После того, как мы тем или иным способом справились с настройкам Иксов и нашего менеджера окон, остается только укомплектовать систему необходимыми приложениями. Джентльменский набор коих, по моему мнению, включает:

  • программу эмуляции терминала;
  • текстовый редактор (возможностей nano явно недостаточно для всамделишней
  • работы, да и не для графического режима он);
  • почтовый клиент;
  • браузер.

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

И, наконец, ворд-процессор. Ибо объективная сила реальности такова, что, по выражению Владимира Игнатова aka Old_Cat, нам приходится прогибаться под испорченный мир. То есть, как минимум. читать doc-файлы, иногда — даже править их, или конвертировать в человеческие форматы.

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

Из терминальных программ мне не приходит в голову ничего лучше, чем банальный xterm. Правда, знаток оных, думаю, подберет что-либо посимпатичнее — и к тому же поддерживающее Unicode «из коробки».

А вот в отношении текстового редактора, рассчитанного на работу в Иксах, я готов поспорить с кем угодно: лидером в этой категории выступает NEdit. Не смотря на порочащую его связь с весьма престарелой библиотекой Motif, он остается непревзойденным ни по возможностям, ни по настраиваемости. Если, конечно, не считать гигантов Vim или Emacs — но их использование уже вопрос религиозной принадлежности. И в любом случае, NEdit однозначно выигрывает у обоих по простоте и конфигурирования, и доступа ко всему богатству возможностей.

Почтовых клиентов и браузеров, вписывающихся в минималистическую модель, также не так и много. Среди первых я назвал бы sylpeed и sylpheed-claws, из вторых ничего, кроме dillo, в голову просто не приходит.

Мультимедийная программа, способная воспроизводить и аудио-, и видеоонтент, также практически безальтернативна — это mplayer, причем, по моему мнению, в варианте mplayer-nogui.

С графическими приложениями — несколько сложнее. Вопрос с графикой векторной здесь не обсуждаем вообще — ибо, увы, в мире Open Source не существует векторного редактора, достойного зваться этим именем. Существующие же — мало того, что представляют собой суррогаты, так еще и тянут за собой такое количество библиотек, которое не вписывается в принципы не только разумного минимализма, но и умеренного максимализма.

В отношении же растрового редактора универсального назначения выбор очевиден — это GIMP. Правда, есть еще столь же универсальный пакет ImageMagik, но он ни каким боком к интерактивной работе не пригоден (хотя для многих задач представляется оптимальным выбором, особенно с учетом того, что я скажу вскоре).

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

А вот если нужно «не в шашечки, а ехать», то есть действительно готовить всамделишние документы для печати, оказывается, что нет альтернативы программе Lyx. Конечно, это совсем не ворд-процессор, а скорее визуализатор настоящего текстового процессора — TeX’а (каковой он и тянет за собой в качестве зависимостей), но это — единственный инструмент, с помощью которого полиграфист-любитель может подготовить материал, не вызывающий отвращения своим видом.

Правда, служить целям прогибания под испорченный мир он не может — ибо считывать doc-файлы не способен в принципе. Но если соображения полиграфии перевешивают на Windows-совместимостью, то остановиться придется на нем. Дополнительный плюс его — в виде зависимости с ним идет упомянутый выше ImageMagik, обеспечивающий весьма сложную обработку растровой графики.

Заключение

Вот мы и собрали маленькую, да удаленькую системку на базе Ubuntu, которую с полным правом можно назвать — My Ubuntu. Описанный комплект программ вписывается примерно в 1 Гбайт дискового пространства — из них более 100 Мбайт приходится на Lyx и его зависимости. Тем не менее, в нем есть почти все необходимое для работы, и кое-что полезное — для отдыха. Конечно, во многих случаях его придется поднарастить дополнительными программами — но, как я уже сказал, начинать работать можно и с тем, что есть.

Временные затраты? Да тоже умеренные. Весь описанный комплекс действий (включая неописанную настройку Fluxbox) занял у меня около половины дня. То есть не намного больше, чем доведение до ума штатного Kubuntu. Причем изрядное количество времени я потратил на размышления о том, какой же из оконных менеджеров установить. Ну и прошу не забывать — эта заметка почти целиком, за исключением введения и заключения, была написана параллельно с установкой и настройкой пакетов Моего Ubuntu.