Алексей Федорчук
[email protected]
Я уже упоминал, что при инсталляции системы устанавливается более чем аскетический набор программ. Так что практически первое действие, после начального конфигурирования - это установка всех необходимых утилит и приложений.
Делается это двояким способом. Во-первых, именно для этой цели служит знаменитая система портов. Очень, по отзывам, удобная, но желающая постоянного подключения к Сети.
О системе портов у меня, за недоступностью Сети, впечателний нет. Поэтому остановлюсь на ней вкратце, в меру своего понимания (и на основе данных, приведенных в письме Павла Кайгородова, за которое выражаю ему свою признательность). Это - система сборки программ из исходных текстов, находящихся на ftp-серверах где угодно в Сети. Адреса этих серверов прописываются в т.н. коллекции портов.
Сама по себе коллекция портов - это архив ports.tar.gz, находящийся на дистрибутивном CD в каталоге ~/2.8 (для текущей версии). Архив этот должен быть переписан на диск (иначе он отказывается распаковываться) и развернут соответствующей командой, например
tar -xzf ports,tar,gz
После этого в каталоге /usr обнаруживается подкаталог ports, включающий, в свою очередь, многочисленные вложенные подкаталоги.
Дальнейшие действия, при наличии постоянного подключения к Сети, очень просты: выбирается нужная категория (например, editors), в ней - подкаталог, соответствующий требуемой программе, скажем, nedit, и после перехода в него дается команда
make install
Все дальнейшее - заботы системы. Она самостоятельно попробует скачать их, причем на каждый port имеется солидный список мест, где можно взять исходники. В частности, они обязательно есть на ftp://ftp.openbsd.org/pub/. Попутно будут скачаны нужные патчи и все остальное необходимое для сборки.
Затем обязательно будут проверены контрольные суммы для скачаных файлов, что позволит избежать всякого рода ошибок при передаче. Затем автоматически выполняется распаковка архивов, на них накладываются все нужные патчи, вызываются все требуемые скрипты конфигурации, команда make для сборки и все прочее, что потребуется. Далее - собственно инсталяция, приложение будет зарегистрировано в системе (в каталоге /var/db) как обычный пакет.
Если собираемый пакет зависит от других, отсутствующих в системе (например, библиотек), они также будут установлены автоматически (через тот же ports). По окончании процесса, можно избавиться от ненужных файлов (типа объектных модулей) командой make clean.
А в дальнейшем открывается неплохая возможность держать все существующие в системе приложения (а также прочие компоненты ее, например, ядро) всегда в актуальном состоянии.
Приведенное описание способно вызвать приступ черной зависти у пользователя Linux. Однако реализовать такую систему при отутствии постоянного подключения к Сети несколько затруднительно.
Конечно, исходники можно заблаговременно скачать (по указанным в ports адресам) и разместить в каталоге /usr/ports/distfiles, Однако, согласитесь, что это уже не совсем то: при неудовлетворенных зависимостях (а это может обнаружиться только в ходе установки) потребуется скачивать и дополнительные пакеты. Если же локализация машины и выхода в Сеть разнесены в пространстве (как это имеет место быть у меня), идея вообще почти теряет смысл.
Однако отчаиваться не стоит - есть выход в виде коллекции пакетов. Понятие пакета совпадает практически с принятым в Linux, особенно в таких дистрибутивах, как Slackware. Это - откомпилированные бинарные программы, собранные в виде компрессированных архивов tgz. Содержащих, кроме собственно файлов программ, также сценарии для их правильной (в соответствии со структурой каталогов OpenBSD) установки.
На инсталляционном диске пакеты расположены в каталоге /2.8/packages/i386. Правда, свалены они здесь в одну кучу, без всякой систематизации. И никак не аннотированы. Однако некую информацию о пакетах получить можно.
Для этого предназначена утилита pkg_info. Запушенная из этого каталога с аргументом в виде имени пакета (обязательно полного), она выдает краткую его (пакета) характеристику. А также, иногда, некоторые сведения о зависимости данного пакета от других. Правда, в очень общей форме, вроде того, что редактор NEdit требует библиотеки Motif.
Тем не менее, работает система пакетов весьма эффективно. Выбрав требуемый пакет, его можно установить командой
pkg_add имя_пакета
(опять же полное). При этом в случае, если устанавливаемый пакет требует наличия каких-либо других пакетов (библиотек, например), они будут инсталлированы автоматически.
По умолчанию пакеты из коллекции устанавливаются в подкаталоги каталога /usr/local (/usr/local/bin, usr/local/lib и т.д.). Что, соответственно, требует прав администратора. Однако пути инсталляции можно и изменить. Для этого команда pkg_add должна быть запущена с опцией -p (prefix - путь для инсталляции пакета). Правда, работосопосбность программы после этого, насколько я понял, не гарантируется...
Установленный с помощью pkg_add пакет фиксируется в базе данных (в каталоге /var/db/pkg. И информация о нем может быть получена той же утилитой pkg_info по полному имени в качестве аргумента, то есть чем-то вроде
pkg_info nedit-5.1.1
Если полное имя вспомнить затруднительно, его можно выудить из того же /var/db/pkg.
При необходимости пакет может быть удален посредством pkg_delete, для чего также следует указать полное имя. Делается это автоматически и довольно чисто, не затрагивая, однако, разделяемые компоненты, необходимые для функционирования других программ. Поэтому кое-какие хвосты неизбежны. Правда, от них можно избавиться запустив pkg_delete с соответствующими параметрами (каковые можно посмотреть в man pkg_delete).
Ну и конечно служебные файлы и подкаталоги в пользовательских каталогах (которые так любят плодить, например, приложения KDE) придется удалять вручную.
Если и коллекции пакетов окажется недостаточно для полного счастья - всегда есть возможность прибегнуть к сборке необходимых приложений из исходников. Вероятно, в некоторых случаях это потребует каких-то правок текстов или Makefile. Однако у меня все обошлось малой кровью - те несколько приложений, которые я полагал для себя необходимыми (XNC, например, или fookb) скомпилировались без всяких проблем.
И последняя возможность пополнить свой арсенал - запуск бинарных программ для Linux. Что в принципе вполне возможно, так как по умолчанию OpenBSD устанавливается с поддержкой ее совместимости с Linux (и возможностью доступа к файловой системе ext2fs).
Продолжение
К предыдущему