Алексей Федорчук
Впервые опубликовано: LinuxFormat #76 (февраль 2006)
В этой статье речь пойдет о семействе дистрибутивов Ubuntu, включающем, кроме эпонима, также Kubuntu и Edubuntu, а также несколько национально-специфических систем и сторонних разработок (среди которых недавно появилась разработка Google, Goobuntu).
Об Ubuntu и Kubuntu
Основатель этого семейства дистрибутивов — южноафриканец Марк Шаттлворт, один из разработчиков Debian и по совместительству — бывший глава бывшей Интернет-компании Thawte Consulting. Деятельность которой была столь успешна, что на закате эпохи dot-com’ов ее приобрела известная корпорация VeriSign за астрономическую сумму, сделавшую Марка весьма богатым человеком. После чего он повел себя не очень стандартным для акулы капитализма образом.
Что надлежит сделать порядочному человеку в случае нежданного богачества? Перво-наперво, «поделиться с пацанами». И каждый из бывших сотрудников Thawte Consulting получил премию — миллион рэндов (более US $100000). Во-вторых, следует осуществить голубую мечту своего детства. И Марк слетал в космос туристом, оказавшись в этом качестве вторым человеком в истории Земли. В-третьих, стоит подумать о тех, кому не повезло стать миллионерами. И Марк создает и финансирует несколько некоммерческих организаций — по развитию образования в Африке, помощи развивающимся странам, и так далее. И, наконец, вернуться к тому, с чего начинал — в данном случае в начале всех начал оказался Linux, на котором был построен бизнес компании Thawte. А посему Марк собирает команду для разработки собственного дистрибутива Linux. В основу которого, естественно, кладется Debian — собственно, Ubuntu и характеризуется как Debian с «человеческим лицом». Говорят, что само слово Ubuntu на одном из африканских языков означает нечто подобное нашему понятию гуманизм.
При создании дистрибутива была сразу четко определена его целевая аудитория. Сам Марк в интервью журналу Linuxformant на вопрос, для каких пользователей предназначен Ubuntu, отвечает, что Ubuntu ориентирован, с одной стороны, на тех, кто сам все знает и умеет, с другой — на тех, кто ничего о компьютерах не знает, знать не хочет, но готов положиться на знающих.
Забегая вперед, заметим, что представление об Ubuntu как о дистрибутиве для неспециалистов не далеко от истины — хотя ряд мелких недоработок (особенно в отношении локализации) не позволяет его пользователю обойтись совсем уж без знаний.
В двух словах, Ubuntu — это почти самый обычный Debian, использующий deb-формат пакетов и систему управления ими — apt, сохраняющий совместимость с огромным его пакетным репозиторием. Отличие от прародителя — во-первых, в том, что он комплектуется самыми свежими версиями пакетов. При этом разработчики декларируют полугодичный релиз-цикл для своего дистрибутива (и пока его придерживаются).
Вторая особенность Ubuntu — в том, что при инсталляции системы по умолчанию автоматически устанавливается и настраивается графическая среда GNOME. Но, поскольку это — лишь один из возможных пользовательских десктопов, немедленно был создан вариант дистрибутива, использующий в качестве рабочего окружения KDE. Который логично получил имя Kubuntu. Подчеркнем, что Ubuntu и Kubuntu — это одна и та же система, использующая общий репозиторий пакетов. И различия их проявляются только в комплектации инсталяционного CD или DVD. Третий же основной представитель семейства, Edubuntu — это Ubuntu, укомплектованный образовательными программами.
В Kubuntu (как и в Ubuntu) в качестве программы установки используется тот же Debian Installer, что и в последней (Sarge) версии материнского дистрибутива. Правда, несколько модифицированный. Если установка Debian выполняется в два этапа, разделенные рестартом машины (первый — разметка диска и установка базовых компонентов, второй — дополнительных пакетов и начальное конфигурирование), то вариант от Ubuntu — как бы в полтора: вся базовая установка и начальное конфигурирование совмещены в один этап, а после перезагрузки происходит только развертывание дополнительных пакетов (GNOME или KDE с соответствующими приложениями — для Ubuntu и Kubuntu, соответственно).
И еще одна важная особенность установщика Ubuntu: в ходе инсталляции по умолчанию не создается аккаунта суперпользователя, и в дальнейшем все действия по администрированию системы выполняются через программу sudo, sudoedit или штатными средствами GNOME или KDE — все они требуют для доступа к правам root ввода обычного пользовательского пароля. Правда, при установке в режиме эксперта root-аккаунт может быть создан — но в дальнейшем это повлечет некоторые сложности, так что начинающему пользователю лучше этого не делать.
Настройка доступа к репозиториям пакетов
По завершении установки пользователь получает в свое распоряжение почти готовую к использованию среду — локализованную (для Руси — локаль UTF8), с офисным пакетом (OpenOffice.org), коммуникационными, графическими и мультимедийными приложениями (таковыми выступают штатные средства GNOME или KDE). Но, к сожалению, именно «почти»: русификация нуждается в некоторой доработке, а использование мультимедийных приложений ограничено, по понятным лицензионным соображениям, только открытыми форматами (типа ogg). Исправление этих мелких и во многом вынужденных недоработок требует доустановки пакетов. И потому одно из первых, что потребуется начинающему пользователю — это освоение системы пакетого менеджмента Ubuntu. И здесь первый шаг — настройка доступа к репозиториям пакетов.
После обычной установки имеется доступ только к одному такому репозиторию — установочному CD или DVD. Но кое-какие компоненты можно получить только из репозиториев сетевых. Делается это с помощью программного комплекса apt.
Источники пакетов, получаемых через apt, описываются в специальном конфигурационном файле — /etc/apt/sources.list. После пользовательской установки по умолчанию он содержит строку вида
deb cdrom:[Kubuntu 5.10 _Breezy Badger_ - Release i386 (20051012)]/ breezy main restricted
плюс еще несколько закомментированных строк, распадающихся на отдельные секции. Формат каждой строки таков (рис. 1):
- тип пакета — deb для бинарников и deb-src для исходников;
- URL архива — в наших условиях это будет http://ru.archive.ubuntu.com/ubuntu;
- имя собственное дистрибутива — для текущей версии breezy (собственно дистрибутив), breezy-updates, breezy-backports, breezy-security (дополнительные компоненты;
- тип репозитория — main и restricted (основная часть дистрибутива, поддерживаемая командой обновления безопасности), universe и multiverse (дополнительная часть, лишенная соответствующей поддержки).
Нам они понадобятся все, включая и те, что являются как бы не совсем официальными (universe и multiverse). Так что достаточно просто снять комментарии со всех строк, начинающихся с deb и deb-src — не исключено, что некоторые пакеты придется строить из исходников.
Сделанного достаточно, чтобы доустанавливать пакеты из дистрибутива, не включенные в комплект установочного компакт-диска, а также получать все штатные обновления. За обновлениями же не вполне штатными (например, KDE последних версий) нужно следить на сайте проекта — там будут исчерпывающие указания по подключению дополнительных репозиториев.
Основы пакетного менеджмента
Теперь необходимо сначала сказать несколько слов о пакетах, используемых в Ubuntu и Kubuntu.
Cемейство дистрибутивов Ubuntu основывается на дистрибутиве Debian и наследует его формат пакетов (deb). Это — архивный файл, включающий скомпилированные исполняемые бинарники (и все необходимые им для работы компоненты), и так называемые управляющие файлы, в том числе описания зависимостей пакета.
В Debian и его клонах зависимости имеют несколько градаций: обязательные (depends), настоятельно рекомендуемые (recommends), рекомендуемые умеренно настойчиво (suggests). Первая градация — это обычные «жесткие» зависимости — пакеты, без которых установка и работа данного невозможна. Ну а настоятельно рекомендуемые и рекомендуемые просто — это две разновидности «мягких» зависимостей, добавляющих пакету те или иные необязательные, но полезные функции. Впрочем, таково субъективное мнение майнтайнера данного пакета — вполне возможно, что мнение пользователя будет иным.
В отношении средств управления пакетами в Kubuntu имеется богатый выбор. Однако в этой статье речь пойдет только о двух из них — dpkg и apt.
Команда dpkg сотоварищи
Команда dpkg — в ряде случаев простейший способ установить единичный пакет и сконфигурировать его, а также получить информацию о нем. Если нам необходимо установить единичный пакет, поступаем так:
$ sudo dpkg -i path2/packagename.deb
и дело в шляпе — через считанные мгновения пакет packagename.deb будет установлен.
В случае нарушения зависимостей dpkg выдаст сообщение об ошибке с полным перечнем того, какие пакеты нужно установить для ее устранения (в списке будут перечислены только обязательные зависимости). И достаточно все необходимые пакеты поместить в командную строку для того, чтобы они были установлены единой операцией.
Обратная процедура — удаление ненужных пакетов. Это делается двояко: команда
$ sudo dpkg -r packagename
удалит пакет, но сохранит настроечные его файлы, а команда
$ sudo dpkg -P packagename
произведет полную очистку системы от компонентов пакета. Правда, только если они не являются зависимостями других пакетов — в этом случае последует сообщение о невозможности удаления пакета и будет выведен список зависимостей, этому препятствующих.
Вообще-то dpkg — это целое семейство команд, включающее, кроме себя самой, еще несколько: dpkg-deb, dpkg-query и так далее. Один из представителей этого семейства, который так и называется — dpkg-reconfigure, служит цели переконфигурирования уже установленных пакетов. Делается это так:
$ sudo dpkg-reconfigure packagename
После этого вызывается диалоговая программа конфигурации — debconf, и ответы на серию более или менее тривиальных вопросов позволяют добиться желаемого результата.
Инструментарий apt
Набор apt (Advanced Packaging Tools) — это программный комплекс, охватывающий все стороны управления пакетами. Он включает в себя почти десяток команд, тесно переплетающихся друг с другом. Так, назначение команды apt-cache — в получении информации о пакетах, причем не только установленных на локальной машине, но и находящихся в сетевых репозиториях. Сведения эти берутся из локальной базы данных, создаваемой во время инсталляции системы, и в дальнейшем обновляемой с помощью apt-get:
$ sudo apt-get update
При этом устанавливается соединение со всеми репозиториями, перечисленными в файле /etc/apt/sources.list, и локальный кэш пакетов приводится в соответствие с их текущим состоянием.
Теперь можно произвести тотальное обновление системы:
$ sudo apt-get upgrade
При этом будет проведено сравнение версий установленных пакетов с обновленным их кэшем, выявит все, нуждающиеся в обновлении, скачает соовтетствующие версии из сети и заменит ими устаревшие пакеты. В случае, если новые версии повлекут за собой и новые зависимости — они также будут скачаны и установлены. Но перед этим будет выведен полный список пакетов, нуждающихся в обновлении, объем, который предстоит скачать, и потребный объем дискового пространства.
В некоторых случаях apt-get upgrade не сможет выполнить обновление каких-либо пакетов, о чем честно и сообщит. Причины этому могут быть разные — например, конфликт новых зависимостей пакетов. На сей случай имеется более радикальное средство — dist-upgrade. Именно к нему следует прибегнуть и при обновлении старой версии дистрибутива до нового релиза:
$ sudo apt-get dist-upgrade
Эта команда просто тотально перепишет все наличные пакеты их обновленными версиями, одновременно разрешая и новые их зависимости (вплоть до удаления конфликтующих пакетов).
Вот теперь можно взяться и за отдельные пакеты. Дистрибутивные deb-пакеты вовсе не совпадают с пакетами авторскими — они намного более дробные. Например, каждый из авторских пакетов KDE, типа kdenetworks или kdegraphics, делится на множество мелких монофункциональных deb-пакетов. И тут на помощь придет команда apt-cache search, которая в качестве аргумента воспринимает ключевое слово. И в ответ на команду вида
$ apt-cache search ftp
последует список всех пакетов, в описании которых фигурирует ключевое слово ftp.
Выявив нужный пакет, следует обратиться к команде apt-get install. посредством которой будет он благополучно скачан и установлен — со всеми обязательными (depends) зависимостями. Перед этим будет опять-таки выведен список подлежащих установке пакетов, объем скачиваемого материала и изменения в занятом дисковом пространстве. А также будет дан список пакетов, связанных с данным разными типами «мягких» зависимостей — пользователю останется только решить, нужны ли они ему.
Инструмент apt-get выполняет и удаление пакетов:
$ apt-get remove packagname
При этом настроечные файлы сохраняются — для их удаления требуется опция —purge, которая выполнит полную очистку системы от всех компонентов пакета.
Очень ценна опция -i, обеспечивающая инверсию действия операторов. То есть команда
$ sudo apt-get remove packagname -i
установит пакет packagename, а команда
$ sudo apt-get install packagname -i
напротив, удалит его. Что очень полезно при экспериментировании с большим количеством пакетов.
Если нужно собрать из исходников много пакетов, пересобрать систему целиком или требуется компиляция с какими-либо особыми условиями, следует прибегнуть к инструменту — apt-build. Это — отдельный пакет, который устанавливается обычными образом, и в ходе установки настраивается. Настройки включают: выбор степени оптимизации, облегченной (соответствующая флагу gcc -O1), средней (флаг -O2) или усиленной (-O3), указание дополнительных флагов gcc, если в них есть необходимость, опций для команды make, выбор процессора (Pentium, Pentium-4 и так далее). Если же для отдельных программ условия компиляции нужно изменить — apt-build можно переконфигурировать обычным образом:
$ sudo dpkg-reconfigure apt-build
Команда apt-build включает ряд операторов, таких, как update — обновление списка доступных пакетов, upgrade — сборка обновленных пакетов, world — полная пересборка всей системы. То есть инструмент apt-build, не смотря на сугубо пакетную природу использующих его дистрибутивов, имеет ничуть не меньшие возможности по индивидуалированной компиляции, чем система портов FreeBSD или аналогичные средства Source Based дистрибутивов Linux.
Kubuntu по русски
Дистрибутив, претендующий на «гуманное отношение к пользователям», должен в обязательно порядке уметь разговаривать с ними на родном их языке. в том числе и русском. И тут Ubuntu и Kubuntu в первом приближении выглядят терпимо: если в ходе установки выбрать русский язык и соответствующую ему страну, то есть Россию, то по завершении процесса мы получаем более-менее русифицированные Иксы с прогрессивной локалью UTF-8.
А вот в консоли дело обстоит из рук вон плохо: шрифт для вывода кириллических символов при старте машины автоматически не подгружается, а попытка ввести русские буквы приводит к появлению на экране вполне нечленораздельной абракадабры. Конечно, Kubuntu не ориентирован на использование в текстовом режиме. Однако и терпеть в консоли такое безобразие тоже не хочется. Так что давайте уж доведем до ума русификацию консоли.
Процедура эта достаточно просто выполняется вручную. Во-первых, обеспечиваем загрузку шрифта со встроенной таблицей sfm (screen font map): вызываем для редактирования необходимый конфиг
$ sudoedit /etc/console-tools/config
и вносим в него строки:
SCREEN_FONT_vc1=LatArCyrHeb-16 SCREEN_FONT_vc2=LatArCyrHeb-16 SCREEN_FONT_vc3=LatArCyrHeb-16 SCREEN_FONT_vc4=LatArCyrHeb-16 SCREEN_FONT_vc5=LatArCyrHeb-16 SCREEN_FONT_vc6=LatArCyrHeb-16
Загружаемый таким образом шрифт выглядит весьма убого, но его можно заменить шрифтами либо из пакета terminus-fonts, либо из коллекции с http://www.posix.ru/download.shtml (последние нужно поместить в каталог /usr/share/consolefonts/ вручную).
Во-вторых, устанавливаем юникодовскую раскладку клавиатуры (ru-utf, скачать ее можно здесь же: http://www.posix.ru/download.shtml):
$ sudo cp path2/ru-utf.kmap.gz /etc/console/boottime.kmap.gz
И после перезагрузки машины убеждаемся, что обрели способность к вводу символов кириллицы. Раскладка — для win-маркированных клавиш (то есть с нормальным расположением знаков препинания), переключение латиница/кириллица — по правому <Control>
Есть и другой способ русификации, более соответствующий Debian Way — установка и конфигурирование пакета console-cyrillic, что предлагается читателю в качестве самостоятельного упражнения.
Вторая проблема из числа локально зависимых, требующая решения, — проверка орфографии. С этим также некоторая напряженка. По умолчанию в этом качестве использует aspell — что естественно при юникодной локали (так как ispell с юникодом до сих пор не работает). Имеется и пакет с русским словарем для него, aspell-ru — но только для архитектуры i386. Для AMD64 же можно предложить два решения.
Первое — через http://rpmfind.net/ отыскать более-менее свежий rpm-пакет для архитектуры AMD64, установить alien — трансформатор пакетов из одного формата в другой и его посредством преобразовать rpm в deb:
$ fakeroot alien aspell-ru-0.99f7-2.x86_64.rpm
Каковой и устанавливается обычным образом:
$ sudo dpkg -i alien aspell-ru-0.99f7-2.x86_64.deb
Второе же решение — просто автоматом построить соответствующий deb-пакет посредством apt-build, после чего остается подключить его к любимому текстовому редактору или просто запускать из командной строки.
Борьба за мультимедиа
Все сказанное ранее относилось к любому из дистрибутивов семейства Ubuntu. Теперь же речь пойдет о специфике Kubuntu. В нем для проигрывания аудио штатно предназначена программа amaroK, а за воспроизведение видео отвечает универсальный медиаплейер Kaffeine. Сразу после установки, что называется, «из коробки», оба они в состоянии только запускать звуковые ogg-файлы, ни mp3, ни Real Audio их восприятию недоступны, как, впрочем, даже ибанальные avi’шки домашнего производства.
Столь нехорошее поведение объясняется отсутствием движков и кодеков. И связано с лицензионными соображениями. Дело в том, что алгоритмы, на которых основываются программы воспроизводства аудио/видео (например, mpeg-кодирования) запатентованы в тех странах, законы которых признают патенты на алгоритмы (или, скажем, законы природы). И майнтайнеры дистрибутивов, ориентированных на международное распространение (а разработчики Ubuntu/Kubuntu именно к тому и стремятся), вынуждены с этим считаться.
Благо законы нашей Родины, вопреки Салтыкову-Щедрину, в такой глупости до сих пор замечены не были, и мы можем слушать музыку или смотреть кино, не чувствуя себя интеллектуальными преступниками. Остается только обеспечить свое право возможностью его использовать.
Для чего нам и потребуется устанавливать эти самые кодеки/движки. Возникает вопрос — какие? Для ответа придется прибегнуть к методу ползучего эмпиризма (рис. 2).
Сначала займемся звуком, воспроизводимом посредством amaroK. Посредством
$ apt-cache search amarok
смотрим, какие движки (engine) к нему можно подключить в принципе. Оказывается, следующие:
amarok-gstreamer - GStreamer engine for the amaroK audio player amarok-arts - aRts engine for the amaroK audio player amarok-engines - output engines for the amaroK audio player amarok-xine - xine engine for the amaroK audio player
Не буду тянуть кота за хвост — я остановился на варианте amarok-xine, дополненном пакетом akode-mpeg — ведь mpeg потребуется в любом случае. После чего amaroK начинает нормально играть не только mp3 и Real Audio, но и, в качестве бесплатного приложения, — классово чуждый WMA. Правда, Kaffeine — категорически отказывается что либо, кроме ogg-файлов — но все-таки основное его назначение — крутить видео. А этого он пока тоже делать не хочет.
Изучение вывода команды
$ apt-cache search kaffeine
приводит к заключению, что нужно установить gstreamer0.8-mpeg2dec — после этого начинается показ фильмов, содранных с VideoCD — но без звука. Ставлю gstreamer0.8-mad — после этого в них появляется звук. Но мои домотканные avi’шки по прежнему не прокручиваются. Последняя надежда — устанавливаю gstreamer0.8-ffmpeg. Теперь, наконец, начинают крутиться и они, так что эксприменты можно прекратить со спокойной душой.