DragonFlyBSD. Первые шаги: порты и пакеты

Алексей Федорчук

Освоившись со спецификой консольного режима 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:

dfbsd-37_057Однако сейчас в /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

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

Предварение | Оглавление | Продолжение следует