5.4. Использование бинарных пакетов

Текст предоставил Chern Lee.

Во FreeBSD есть несколько утилит для управления пакетами:

5.4.1. Установка пакета

Для установки бинарного пакета FreeBSD из локального файла или с сервера в сети используйте pkg_add(1).

Пример 5.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. В случае загрузки из сети номер версии в имени пакета должен быть опущен.

Примечание:

Если вы используете FreeBSD-CURRENT или FreeBSD-STABLE, то утилита pkg_add(1) загрузит последнюю версию устанавливаемой программы. Если же вы используете версию -RELEASE, то pkg_add(1) установит версию пакета, который был собран для конкретного релиза. Это поведение возможно изменить переопределив значение PACKAGESITE. Например, в системе FreeBSD 8.1-RELEASE pkg_add(1) по умолчанию попытается скачать пакеты с ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8.1-release/Latest/. Чтобы обязать pkg_add(1) загружать пакеты для FreeBSD 8-STABLE, присвойте PACKAGESITE значение ftp://ftp.freebsd.org/pub/FreeBSD/ports/i386/packages-8-stable/Latest/.

Файлы пакетов распространяются в форматах .tgz и .tbz. Пакеты находятся по адресу ftp://ftp.FreeBSD.org/pub/FreeBSD/ports/packages или в каталоге /packages дистрибутива FreeBSD на DVD. Структура каталогов с пакетами подобна тому, как организовано дерево /usr/ports. Каждая категория имеет собственный каталог, и каждый пакет помещается в каталог All.

5.4.2. Управление пакетами

Для вывода перечня установленных пакетов и их описаний может быть задействована pkg_info(1).

# pkg_info
colordiff-1.0.13    A tool to colorize diff output
docbook-1.2         Meta-port for the different versions of the DocBook DTD
...

Утилита pkg_version(1) выводит отчёт о версиях всех установленных пакетов и сравнивает их версии с текущими версиями соответствующих приложений, доступных из локального дерева портов.

# pkg_version
colordiff                   =
docbook                     =
...

Символы во второй колонке указывают сравнительную разницу в возрасте установленной версии и версии, находящейся в локальном дереве портов.

СимволЗначение
=Версия установленного пакета соответствует версии, находящейся в локальном дереве портов.
<Версия установленного пакета старее, чем та, что имеется в локальном дереве портов.
>Версия установленного пакета новее чем та, что есть в дереве портов. Скорее всего, локальное дерево портов устарело.
?В индексном файле портов установленный пакет не найден. Это может случиться если установленный порт был переименован или удалён из Коллекции Портов.
*Имеется несколько версий пакета.
!Установленный пакет есть в индексном файле, но по какой-то причине утилите pkg_version не удалось сравнить номер версии установленного пакета и соответствующей записи в файле.

5.4.3. Удаление пакета

Для удаления ранее установленных пакетов с программным обеспечением используйте утилиту pkg_delete(1).

# pkg_delete xchat-1.7.1

Следует отметить, что для pkg_delete(1) требуется полное имя пакета и номер версии; вышеприведенная команда не сработала бы, если б ей было указано xchat вместо xchat-1.7.1. Для нахождения версии установленного пакета задействуйте утилиту pkg_version(1). Или же, напечатайте групповой символ (wildcard) вместо номера версии:

# pkg_delete xchat\*

в этом случае будут удалены все пакеты, имена которых начинаются на xchat.

5.4.4. Разное

Вся информация о пакетах, включая перечни файлов и описания каждого установленного пакета, хранится в каталоге /var/db/pkg.

Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.

По вопросам, связанным с FreeBSD, прочитайте документацию прежде чем писать в <questions@FreeBSD.org>.

По вопросам, связанным с этой документацией, пишите в рассылку <doc@FreeBSD.org>.