Валентин Синицын
Arch Linux: руководство к быстрому старту
Выбор пакетов для Slackware, на ваш взгляд, скудноват, а Gentoo собирается целую вечность? Попробуйте Arch Linux – удачное сочетание гибкости и скорости развертывания.
В этой статье мы поговорим об Arch Linux (www.archlinux.org) – сравнительно молодом, первопринципном (то есть не базирующемся ни на какой из ныне существующих) дистрибутиве Linux. Это не совсем обзор – по ходу изложения будут даваться советы и рекомендации по практической работе с системой. Поскольку Arch Linux, как и большая часть современных ОС, не явно подразумевает, что пользователю не составляет труда выкачать из Интернета 100-200 Мб обновлений, мы специально остановимся на специфике его использования в условиях нашей страны. Сразу же скажу, что речь не идет о локализации – в этом смысле Arch Linux не отличается от любого другого дистрибутива, а данная статья не преследует цель дублировать существующую документацию.
Основателем Arch Linux является Джудд Винет (Judd Vinet). Первая версия дистрибутива под номером 0.1 увидела свет 11 марта 2002 года, а текущая версия имеет номер 0.7.1 и датирована 5 января 2006 года.
Arch Linux является i686-оптимизированным дистрибутивом. Что понимается под этими словами? Это значит, все пакеты собираются с ключом «-march=i686», то есть используют набор инструкций Pentium II и выше. Как следствие, этот процессор является «минимальным системным требованием» к оборудованию. Как знают пользователи Gentoo, пересборка Linux под свою архитектуру позволяет достичь определенного (порой – весьма незначительного) прироста производительности, поэтому можно предположить, что на новых компьютерах Arch Linux будет работать быстрее, чем, например, Slackware (оптимизация i486) или SUSE/Mandriva (i586). На самом деле на скорость работы влияет множество параметров, и оптимизация здесь – далеко не главное. Существуют также порты Arch Linux на x86-64 и i586, однако мне не приходилось работать с ними поэтому в дальнейшем мы будем говорить только об основной ветви.
Arch Linux – дистрибутив для опытного пользователя. Вы не найдете в нем графических мастеров-конфигураторов вроде YaST или Mandriva Control Center: все операции по администрированию производятся тем путем, который предусмотрел автор той или иной программы. Arch Linux вообще старается выдерживать «авторскую» линию – на пакеты почти не накладываются патчи (кроме тривиальных) и т.п. Как утверждает Винет, основные идеи он позаимствовал у CRUX (www.crux.nu) и Slackware (www.slackware.com) – так что антураж соответствующий.
Arch Linux имеет оригинальную организационную структуру. Поскольку он в некотором смысле является детищем одного человека, здесь есть четко очерченный набор «официальных» пакетов (коих в версии 0.7.1 насчитывается 357 штук) и, как некогда заметил Алексей Федорчук: «ни малейшей тенденции к увеличению их числа не просматривается». Официальный Arch Linux скормен и строг: помимо базовой системы (arch-base) сюда входит графическая среда и легкие оконные менеджеры (FVWM, IceWM, WindowMaker), а также средства разработки, сервера и основные графические приложения: AbiWord, Gimp, Mozilla Firefox и Thunderbird. Ни KDE, ни Gnome, ни OpenOffice.org в этом списке нет, но это не значит, что их нет вообще: у «официального» Arch Linux существуют «полуофициальные» сателиты, в первую очередь – репозитарий Extra. Это – весьма объемная коллекция пакетов, не поддерживаемая гном Винетом лично. Не стоит думать, что Extra – нечто вроде linuxpacages.net – это просто репозитарий, поддерживаемый другими людьми, что и придает ему «полуофициальный», но отнюдь не «неофициальный» статус. Между репозитариями существует тесное взаимодействие, и многие рассматривают Extra как неотъемлемую часть Arch Linux.
Перечень репозиатриев Arch Linux не исчерпывается Extra и Current (это тот самый «официальный» Arch Linux, из которого в определенные моменты времени делают ISO-образы). Упоминания заслуживает Testing, в котором появляются новые, еще не «обкатанные» версии программ (так, например, в состав Arch Linux 0.7.1 входит X11R6.8.2, но на момент выхода дистрибутива в свет X.Org 7.0 уже был доступен в Testing, а в Current он появился лишь в середине февраля) и AUR (Arch User Repository) – по-настоящему неофициальный репозитарий, поддерживаемый пользователями Arch Linux. Содержимое AUR, за редким исключением – не готовый бинарный пакет, а его сборочный сценарий, так называемый PKGBUILD. Arch Linux стремится предоставить самые последнии версии программ, поэтому выход бинарных пакетов обычно происходит вскоре после релиза исходных текстов (все зависит от конкретного maintainer): так, пакеты с KDE 3.5.2 появились в Extra спустя четыре дня после анонса, а в Testing они были еще за восемь дней до него.
Раз уж мы заговорили о бинарных пакетах и сборке, имеет смысл сказать пару слов и о пакетном менеджере. Для управления двоичными пакетами в Arch Linux используется утилита с забавным названием pacman. Сами пакеты имеют неудобный суффикс .pkg.tar.gz. Поддерживаются зависимости (исключительно жесткие – это вам не Debian) и имеются средства их автоматического разрешения – при помощи того же pacman. Если вы привыкли собирать программы из исходных кодов – нет проблем: для этих целей предназначена благозвучная уху автолюбителя система ABS (Arch Build System) – аналог портов BSD, позволяющая быстро и эффективно собрать готовый пакет из авторских исходных текстов. Можно сказать, что Arch Linux – это бинарный дистрибутив, поощряющий сборку из исходных текстов: этакий Gentoo со stage3, раздутым до размеров дерева Portage.
Arch Linux использует rc-скрипты в стиле BSD и охотно перенимает свежие решения. Так, Arch Linux 0.7.1 был одним из первых (но не первым) дистрибутивом, отказавшимся от Hotplug в пользу Udev, что весьма ускорило загрузку. В него входит собственная система распознавания оборудования (HWD) и поддержка сетевых профилей на уровне стартовых сценариев.
Все это хорошо, спросит внимательный читатель, но где же взять Arch Linux? Канонический ответ сводится к следующему: скачать с сайта проекта ISO-образ arch-0.7.1.iso или arch0.7.1-base.iso (только базовая система), а затем догрузить все необходимые пакеты (KDE/Gnome, OpenOffice.org и т. д.) из Extra. К сожалению, для большинства российских пользователей это неприемлемо, но выход все же есть. Начиная с января этого года ежеквартальные срезы репозитариев Arch Linux можно заказать по почте (http://www.linuxcenter.ru/?good=1332). Будем считать, что вам удалось раздобыть Arch Linux тем или иным способом. Что дальше? Конечно же, установка! Весь процесс подробно описан на самом диске, в файле archdoc.txt (потрудившись, его можно найти и на (ftp.archlinux.org). Мы же сосредоточимся на некоторых тонкостях, знание которых позволит сделать развертывание системы достаточно быстрым и безболезненным.
Установка
Инсталлятор Arch Linux выдержан в духе Slackware: те же сценарии на языке оболочки плюс утилита dialog. Создатели дистрибутива настоятельно рекомендуют установить только базовую систему, а оставшиеся пакеты добрать вручную после перезагрузки системы и, как выясняется, не зря. Просматривая плоский список из 350 с лишним пакетов, не мудрено и утомиться, а выбор двух несовместимых вариантов (например, hotplug и udev – см. выше) приведет к тому, что программа откажется продолжать свою работу и предложит начать все сначала. Зависимости тоже разрешаются автоматически – никакой возможности поучаствовать в этом процессе вам не предоставляется, а потому случайный выбор, скажем Mozilla Firefox приведет к тому, что на вашем компьютере появится вполне полноценная X Window System не самой свежей версии (опять же см. выше). В общем, даже если у вас на руках полноценный DVD со всеми пакетами, будьте осторожны и не пренебрегайте «советами бывалых».
В остальном инсталлятор Arch Linux мало чем отличается от того же Slackware. Меню организовано чуть-чуть по-другому, но человека, претендующего на работу в дистрибутиве для опытных пользователей, это вряд ли смутит.
Первая загрузка
После перезагрузки системы (которая, кстати, произойдет весьма быстро) вашему взору будет представлена чистая текстовая консоль. Впрочем, если вы все же не послушались старших товарищей и попросили инсталлятор развернуть что-то помимо базовой системы, у вас вполне может оказаться и X с простеньким оконным менеджером, но речь сейчас не о том. Независимо от того, ограничились ли вы пресловутым arch-base или же выбрали все пакеты без разбора, наверняка вы захотите установить дополнител ные программы из репозитария Extra. Допустим также, что у вас, как и у подавляющего большинства населения России, нет быстрого (и дешевого) канала в Интернет, поэтому вы где-то раздобыли текущий срез Arch Linux. Что дальше? Устанавливать пакеты, разрешая зависимости вручную или не учитывая их вообще, – не выход. Нужно прописать путь к вашему локальному репозитарию Arch Linux (который, кстати, может располагаться в локальной же сети – подумайте об этом, если планируете установить Arch Linux на три и более компьютеров).
К сожалению (или к счастью), специального источника «cdrom», как в apt, в pacman не предусмотрено – программе совершенно не важно, где находится зеркало, заданное тем или иным URL (и это правильно, иначе URL не был бы Универсальным локатором ресурсов). Таким образом, чтобы научить pacman обновляться с CD/DVD-ROM, достаточно прописать путь к локальному репозитарию, используя протокол file://. Зеркала просматриваются в порядке их объявления в соответствующих секциях файла /etc/pacman.conf, поэтому, добавив нужную строчку в самое начало, вы навсегда отучите pacman «лазать по Интернету». Впрочем, советую вам приберечь «жесткие меры» на крайний случай: вполне может статься, что вы захотите обновить какую-нибудь небольшую программу именно из репозитария current, а не с локального диска. Исходя из этого, секция current файла /etc/pacman.conf может иметь следующий вид:
[current]
# Список «настоящих» интернет-серверов
Include=/etc/pacman.d/current
Server= Ошибка! Недопустимый объект гиперссылки.
В результате при отсутствии подключения на консоль будет выдаваться множество сообщений о невозможности соединиться с ftp.foo.bar, а затем pacman установит нужный пакет с DVD-ROM.
С репозитариями Extra и Testing можно поступить также, а можно – еще проще – просто добавить:
Server=file://<путь к локальному репозитарию>
в начало соответствующей секции. Для пущей уверенности можно закомментировать все остальные сервера. Альтернативный подход к развертыванию локального репозитария изложен в файле archdoc.txt.
Первую половину пакетного менеджмента мы, таким образом, настроили. Осталось вторая – ABS. К счастью, она требует гораздо меньшего внимания. В первом приближении (особенно если вы не собираетесь пересобирать пакеты вручную) можно вообще забыть о ее существовании. Но я бы рекомендовал все же синхронизировать дерево ABS, так сказать, на будущее. Эта задача выполняется командой abs, которая в свою очередь использует cvsup, поэтому более-менее заметный трафик (порядка 1020 Мб без учета сжатия) будет сгенерирован только в первый раз. Вы же получите в свое распоряжение полностью готовый к использованию каталог /var/abs, а также два файла: PKGBUILD.proto и install.proto, которые можно использовать для компиляции своих собственных пакетов.
Эта операция (как, впрочем, и пересборка уже имеющихся в системе пакетов) происходит следующим образом. Вы переходите в подкаталог /var/abs, отвечающий нужному вам приложению. Если речь идет о компиляции нового пакета «с нуля», каталог для него следует создать в /var/abs/local. Затем в этом каталоге последовательно размещаются: добытый где-либо архив с исходными текстами программы в любом «разумном» формате (.tar.gz, .tar.bz2, zip) и PKGBUILD.proto, если речь идет о новом пакете, после чего PKGBUILD.proto переименовывается в PKGBUILD и правится в соответствии с вашими требованиями. В сложных случаях может потребоваться использовать сценарий install, который легко создать на базе install.proto. Написание сценариев PKGBUILD находится за рамками данной статьи.
О том, как писать сценарии PKGBUILD, можно узнать из документации, поэтому ограничимся лишь общими замечаниями:
- В первую очередь необходимо исправить значение переменных pkgname (имя пакета) и pkgver (версия). Эти переменные используются для заполнения массива source, содержащего имена архивов с исходными текстами. Если формат нужного вам архива отличается от .tar.gz, нужно внести соответствующие изменения.
- Естественно, необходимо описать саму процедуру сборки – подпрограмму build(). В большинстве случаев требуется лишь изменить параметры configure.
- Необходимо сгенерировать md5-суммы для каждого архива – массив md5sums. К счастью, эта задача автоматизирована и выполняется стандартной командой:
makepkg -g >>PKGBUILD
При этом подразумевается, что вы находитесь все в том же подкаталоге /var/abs, отвечающем вашему приложению.
Если вы – счастливый обладатель широкого и недорогого интернет-канала, эти манипуляции будут для вас излишними – makepkg сам загружает из Интернета нужные исходные тексты.
Теперь можно собрать пакет:
makepkg
Или же сразу и собрать, и установить:
makepkg -i
Если вы собрали что-то уникальное и считаете, что ваш PKGBUILD может быть полезен другим пользователям Arch Linux, подумайте о его публикации в AUR.
Все! Подготовительные этапы пройдены, и теперь вы можете оснащать свою систему всеми необходимыми приложениями.
Используйте автоматическое разрешение зависимостей (pacman -S) – это сделает вашу жизнь проще, а блоки «конструктора», с которым приходится работать, крупнее.
Рисунок 1. Рабочий стол Arch Linux – ничего необычного. Все самое интересное – за кулисами
Рисунок 2. Сине-бело-черная гамма – визитная карточка Arch Linux. Сайт проекта выдержан в том же стиле
Рисунок 3. Не нашли нужную программу в основном дистрибутиве. Пришло время обратиться к помощи сообщества – ArchLinux User-community Repository
Заключение
Теперь вы представляете себе, что такое Arch Linux. Устанавливать ли эту систему на свой компьютер – решать только вам. Думается, что Arch Linux хорошо подойдет «продвинутым пользователям» Linux, которые производят большую часть настроек из конфигурационных файлов и не слишком связаны временными рамками, то есть могут позволить себе «доводить» систему в свободное от работы время.
Если же, напротив, речь идет о предприятии, где на первый план выходит скорость развертывания, простота управления, «дуракоупорность» и уж тем более сертификация сторонних производителей, Arch Linux – не самый лучший выбор. В общем, если вы ищете простой настольный/серверный дистрибутив с большим количеством свежих пакетов, не отягощенный средствами автоматической настройки и связанным с ними «жирком», возможно, Arch Linux – это то, что вам нужно.