Алексей Федорчук
Освоившись со спецификой консольного режима DragonFlyBSD, можно заняться делом первой очереди — наладкой доступа к портам dports
и пакетам pkgng
. В качестве исторической справки напомню, что унаследованные от FreeBSD порты были первой системой управления программами в DragonFly — здесь они получили имя dfports
. Причём рассматривались как паллиатив, до изобретения собственной системы пакетного менеджмента — эта цель, поставленная в 2003 году, не выполнена до сих пор: воистину, нет ничего устойчивей паллиативов.
По моему мнению, dfports
показали себя не плохо: именно с оснащённой ими системой (и ноутбуком Toshiba) судьба оставила меня в конце 2005 года в отрыве от мировых коммуникаций. И ничего, всё работало без малейших нареканий, хотя перед тем, в процессе сборки из портов, проблемы возникали нередко.
Однако в DragonFly эти dfports
продержались не долго — уже в релизе 1.4, вышедшем в начале 2006 года, на смену им пришли pkgsrc
, заимствованные из NetBSD, которые прослужили около восьми лет. В DragonFly же релиза 3.4 начался отход от неё, и возвращение к истокам — к адаптированной системе портов FreeBSD, под именем dports
, и системе менеджмента бинарных пакетов — pkgng
, также заимствованной из FreeBSD. В текущей версии они предлагаются по умолчанию — pkgsrc
поддерживаются в качестве опции. Так что мы о них говорить не будем.
В свежеустановленной DragonFly никаких dports
и pkgng
нет и в помине — их надо установить. Что, впрочем, не сложно. Для начала получаем права root’а командой su
(sudo
по умолчанию тоже отсутствует) и переходим в нужный каталог:
# cd /usr
Где даём команду
# make dports-create
И ждём её завершения — результатом будет развёртывание дерева дерева dports
в каталоге /usr
и файловой иерархии в /usr/local
. Последний и стане в дальнейшем местом размещения всех программ, выходящих за пределы базового комплекта DragonFly (место «базиса» — в подкаталогах непосредственно внутри /usr
). Причём вне зависимости, будут ли «сторонние» программы собираться из портов или устанавливаться из бинарников. Поэтому иерархия подкаталогов в /usr/local
примерно совпадает с таковой /usr:
Однако сейчас в /usr/local
мало чего есть, кроме инструментария pkgng и минимально необходимых конфигурационных для его работы конфигурационных файлов и примеров тех конфигов, которые понадобятся для работы полноценной. Поэтому руководство по Dports рекомендует сразу выполнить апгрейд системы:
# pkg upgrade # rehash
Обращаю внимание на вторую команду — перечитывания хеша: при использовании csh-совместимых оболочек, в том числе и tcsh
(а другого шелла у нас нет), она обязательна после установки любых программ. Иначе login shell без своего перезапуска не увидит путей к вновь установленным исполняемым файлам, хотя они и попадут в те же каталоги /usr/local/bin
и /usr/local/sbin
, прописанные в переменной path
окружения администратора. Это тоже специфика BSD-систем (точнее, используемого в них по умолчанию шелла), о которой следует не забывать.
Однако можно поступить иначе (и я сделал именно так) — сразу довести до ума необходимые конфиги. Кроме сокращения количества операций (хоть и всего на одну), это позволит использовать для скачивания не довольно медленный (у меня) американский сервер, прописанный по умолчанию, а один из тех, которые лучше выполняет свои обязанности.
Для этого отправляемся вот сюда:
# cd /usr/local/etc/pkg/repos/
Где видим следующее:
# ls df-latest.conf.sample df-releases.conf.sample
Первый из этих файлов и есть пример того конфига, который нам нужен, поэтому копируем его под «правильным» именем:
# cp -v df-latest.conf.sample df-latest.conf df-latest.conf.sample -> df-latest.conf
Опция -v
здесь обеспечивает вывод информации о совершенном деянии. Теперь присваиваем новому файлу «правильные» права доступа, допускающие его редактирование (исходный предназначался только для чтения):
# chmod -v 644 df-latest.conf df-latest.conf
И смотрим на его содержимое. Приводить его полностью нет смысла — достаточно сказать, что в нём прописаны репозитории, лежащие на четырёх серверах — «мастерском» на Американщине — avalon.dragonflybsd.org, и трёх европейских: ircam.fr, schlundtech.de и wolfpond.org. Первый включён по умолчанию:
enabled: yes
Остальные отключены:
enabled: no
Так что следует «пропинговать» каждый
# ping avalon.dragonflybsd.org
и так далее, выявить самый быстрый и сделать его умолчальным, отключив остальные. В порядке обмена опытом скажу, что у меня все европейские сервера показали примерно одинаковые результаты, а американский отстал от них раза в три.
Вот теперь и настаёт психологический момент дать команду:
# pkg upgrade
И подождать её завершения — она, кроме обновления базовой системы, установит несколько пакетов типа perl’а и так далее, которые потянут за собой хвост зависимостей, так что процедура займёт определённое время. После этого остаётся только перечитать хэш:
# rehash
После чего и порты, и пакеты полностью готовы к использованию. Как — расскажу на ближайшей странице.
Предварение | Оглавление | Продолжение следует