Для установки пакетов программного обеспечения для FreeBSD из локальных файлов или с
сервера в сети вы можете использовать утилиту pkg_add(1).
Пример 4-1. Загрузка пакета вручную и его локальная установка
# ftp -a ftp2.FreeBSD.org
Connected to ftp2.FreeBSD.org.
220 ftp2.FreeBSD.org FTP server (Version 6.00LS) ready.
331 Guest login ok, send your email address as password.
230-
230- This machine is in Vienna, VA, USA, hosted by Verio.
230- Questions? E-mail freebsd@vienna.verio.net.
230-
230-
230 Guest login ok, access restrictions apply.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> cd /pub/FreeBSD/ports/packages/sysutils/
250 CWD command successful.
ftp> get lsof-4.56.4.tgz
local: lsof-4.56.4.tgz remote: lsof-4.56.4.tgz
200 PORT command successful.
150 Opening BINARY mode data connection for 'lsof-4.56.4.tgz' (92375 bytes).
100% |**************************************************| 92375 00:00 ETA
226 Transfer complete.
92375 bytes received in 5.60 seconds (16.11 KB/s)
ftp> exit
# pkg_add lsof-4.56.4.tgz
Если у вас нет исходных текстов локальных пакетов (например, набор CD-ROM с FreeBSD),
то проще всего, наверное, воспользоваться опцией -r для pkg_add(1). Это
приведёт к тому, что утилита автоматически определит правильный формат объектных файлов и
релиз, а затем загрузит и установит пакет с сервера FTP.
# pkg_add -r lsof
В примере выше нужный пакет будет сгружен и установлен без всякого дополнительного
взаимодействия с пользователем. Если вместо основного сайта вы хотите указать другое
зеркало пакетов FreeBSD, то для переопределения используемых по умолчанию значений вам
необходимо задать соответствующим образом значение переменной PACKAGESITE. Для загрузки файлов утилита pkg_add(1) использует
функцию fetch(3), которая
принимает во внимание различные переменные окружения, включая FTP_PASSIVE_MODE, FTP_PROXY и FTP_PASSWORD. Если вы находитесь за сетевым экраном или для работы с
работы с FTP/HTTP вам необходимо использовать прокси, то определите соответствующие
переменные. Обратитесь к справочной странице по fetch(3) для получения
полного списка переменных. Заметьте, что в примере выше вместо lsof-4.56.4 используется lsof. При
использовании функций загрузки с сети номер версии в имени пакета должен быть опущен.
Утилита pkg_add(1)
автоматически загрузит последнюю версию приложения.
Файлы пакетов распространяются в форматах .tgz и .tbz. Вы можете найти их по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages или взять с
дистрибутива FreeBSD на CD-ROM. Каждый CD из комплекта FreeBSD на 4 дисках (а также
PowerPak и тому подобное) содержит пакеты в каталоге /packages.
Расположение пакетов похоже на то, как организовано дерево /usr/ports. Каждая категория имеет собственный каталог, и каждый
пакет помещается в каталог All.
Структура каталогов системы пакетов соответствует структуре системы портов; они
взаимодействуют друг с другом для формирования единой системы пакетов/портов.
pkg_info(1) является
утилитой для вывода списка и описаний различных установленных пакетов.
# pkg_info
cvsup-16.1 A general network file
distribution system optimized for CV
docbook-1.2 Meta-port for the different versions
of the DocBook DTD
...
pkg_version(1)
является утилитой для вывода отчёта о версиях всех установленных пакетов. Она сравнивает
версию имеющегося пакета с текущей версией, находящейся в дереве портов.
# pkg_version
cvsup =
docbook =
...
Символы во второй колонке указывают сравнительную разницу в возрасте установленной
версии и версии, находящейся в локальном дереве портов.