pkgng — это усовершенствованный инструмент, пришедший на смену традиционным утилитам управления пакетами FreeBSD. Он обладает множеством функциональных возможностей, ускоряющих и облегчающих работу с бинарными пакетами. Первый релиз pkgng состоялся в августе 2012 года.
pkgng не является заменой для утилит
управления портами, таких как
ports-mgmt/portmaster
или
ports-mgmt/portupgrade
. В то время,
как ports-mgmt/portmaster
и
ports-mgmt/portupgrade
позволяют
устанавливать приложения сторонних разработчиков как из бинарных
пакетов, так и из
Коллекции Портов, утилита pkgng
дает возможность устанавливать приложения исключительно из бинарных
пакетов.
Во FreeBSD 9.1 и более поздние включена программа "самонастройки" ("bootstrap") pkgng. Она скачивает и устанавливает основную утилиту pkgng.
Для запуска самонастройки, выполните:
#
/usr/sbin/pkg
Для более ранних версий FreeBSD утилиту pkgng необходимо установить из Коллекции Портов или из бинарных пакетов.
Для установки pkgng из порта, запустите следующее:
#
cd /usr/ports/ports-mgmt/pkg
#
make
#
make install clean
Для установки из бинарного пакета, выполните:
#
pkg_add -r pkg
Действующие инсталляции FreeBSD требуют преобразования базы данных установленных пакетов утилиты pkg_install к новому формату. Для выполнения конвертирования, запустите:
#
pkg2ng
Вышеприведенный шаг не требуется для новых инсталляций, в которых не было установлено программ сторонних разработчиков.
Этот шаг необратим. После перевода базы данных установленных пакетов к формату pkgng утилитами pkg_install более пользоваться не следует.
В процессе конвертирования базы данных установленных пакетов
могут возникать сообщения об ошибках. На данном этапе их можно
игнорировать, так как перечень программ сторонних разработчиков,
информация о которых не была преобразована, будет перечислен
по завершении работы pkg2ng
. Над этим перечнем
придется поработать вручную.
Чтобы убедиться, что Коллекция Портов FreeBSD регистрирует
новые программы при помощи pkgng, а не
pkg_install, для версий FreeBSD, предшествующих
10.X
, в файл
/etc/make.conf
необходимо внести следующую
запись:
Система управления пакетами pkgng
при выполнении большинства операций обращается к пакетному
репозиторию. Адрес используемого по умолчанию репозитория указан
в /usr/local/etc/pkg.conf
или в переменной
окружения PACKAGESITE
. Последняя переопределяет
адрес, указанный в конфигурационном файле.
Дополнительные опции конфигурации pkgng описаны в pkg.conf(5).
Информацию по работе с pkgng можно
найти на странице справочника pkg(8), или в выводе утилиты
pkg
, запущенной без аргументов.
Каждый аргумент команды pkgng описан на
соответствующей странице справочника. Например, чтобы ознакомиться
со страницей справочника для pkg install
,
запустите любую из двух нижеследующих команд:
#
pkg help install
#
man pkg-install
Информация об установленных в системе пакетах может быть
отображена при помощи команды pkg info
. Подобно
до pkg_info(1), в выводе перечисляются версии и описания всех
установленных пакетов.
Если необходима информация о конкретном пакете, выполните:
#
pkg info packagename
Например, для получения версии pkgng, который установлен в системе, запустите:
#
pkg info pkg
pkg-1.0.2 New generation package managerВ общем, бинарные пакеты устанавливаются при помощи:
#
pkg install packagename
Команда pkg install
обращается к пакетному
репозиторию, это упоминалось в Раздел 5.5.2, «Настройка окружения pkgng».
Команда pkg-add(8), напротив, не выполняет обращений к пакетному
репозиторию, а также игнорирует переменную
PACKAGESITE
. Как следствие — зависимости
не отслеживаются, и необходимые зависимые компоненты не скачиваются
с удаленного источника. В этом разделе описана работа с
pkg install
. За подробностями работы с
pkg add
обратитесь к справочной странице по
pkg-add(8).
Утилита pkg install
может устанавливать
дополнительные бинарные пакеты. Например, для установки
curl, выполните:
#
pkg install curl
Updating repository catalogue
Repository catalogue is up-to-date, no need to fetch fresh copy
The following packages will be installed:
Installing ca_root_nss: 3.13.5
Installing curl: 7.24.0
The installation will require 4 MB more space
1 MB to be downloaded
Proceed with installing packages [y/N]: y
ca_root_nss-3.13.5.txz 100% 255KB 255.1KB/s 255.1KB/s 00:00
curl-7.24.0.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Installing ca_root_nss-3.13.5... done
Installing curl-7.24.0... doneНовый пакет, как и любые дополнительные пакеты, которые были установлены как зависимости, перечисляются в списке установленных пакетов:
#
pkg info
ca_root_nss-3.13.5 The root certificate bundle from the Mozilla Project
curl-7.24.0 Non-interactive tool to get files from FTP, GOPHER, HTTP(S) servers
pkg-1.0.2 New generation package managerПакеты, в которых более нет необходимости, могут быть удалены
при помощи pkg delete
. Например, если выяснится,
что curl не нужен:
#
pkg delete curl
The following packages will be deleted:
curl-7.24.0_1
The deletion will free 3 MB
Proceed with deleting packages [y/N]: y
Deleting curl-7.24.0_1... doneПакеты, версии которых устарели, можно найти при помощи команды
pkg version
. Версии установленных пакетов
сравниваются с версиями приложений из локального дерева портов,
а в случае отсутствия портов pkg-version(8) обращается к удаленному
репозиторию пакетов.
При помощи pkgng можно обновлять пакеты до новых версий. Предположим, вышла новая версия curl. Установленный пакет можно обновить к новой версии, выполнив:
#
pkg upgrade
Updating repository catalogue
repo.txz 100% 297KB 296.5KB/s 296.5KB/s 00:00
The following packages will be upgraded:
Upgrading curl: 7.24.0 -> 7.24.0_1
1 MB to be downloaded
Proceed with upgrading packages [y/N]: y
curl-7.24.0_1.txz 100% 1108KB 1.1MB/s 1.1MB/s 00:00
Checking integrity... done
Upgrading curl from 7.24.0 to 7.24.0_1... doneИзредка в приложениях из Коллекции Портов обнаруживаются
уязвимости. В pkgng встроена возможность
выполнять аудит безопасности, действующая подобно приложению из
ports-mgmt/portaudit
. Для
выполнения аудита установленных в систему программ, выполните:
#
pkg audit -F
После удаления пакета в системе могут остаться неиспользуемые
зависимости, наподобие security/ca_root_nss
из примера выше.
Такие пакеты остаются установленными, несмотря на то, что они
более не требуются другим пакетам. Определить и удалить
неиспользуемые пакеты, которые были установлены как зависимости,
можно при помощи:
#
pkg autoremove
Packages to be autoremoved:
ca_root_nss-3.13.5
The autoremoval will free 723 kB
Proceed with autoremoval of packages [y/N]: y
Deinstalling ca_root_nss-3.13.5... doneВ отличие от традиционной системы управления пакетами, pkgng располагает своим собственным механизмом резервного копирования базы данных. Для ручного создания резервной копии базы данных установленных пакетов, выполните:
#
pkg backup -d pkgng.db
Замените имя файла pkgng.db
на
более подходящее.
В дополнение, pkgng содержит скрипт
periodic(8), позволяющий выполнять ежедневное автоматическое
копирование базы данных установленных пакетов.
Для активации данной возможности задайте переменной
daily_backup_pkgng_enable
значение
YES
в файле periodic.conf(5).
Для предотвращения периодического запуска аналогичного скрипта
системы pkg_install, также выполняющего
резервное копирование базы данных установленных пакетов, задайте
переменной daily_backup_pkgdb_enable
значение
NO
в файле periodic.conf(5).
Для восстановления содержимого базы данных установленных пакетов из резервной копии, выполните:
#
pkg backup -r /path/to/pkgng.db
По умолчанию, pkgng сохраняет копии
установленных бинарных пакетов в каталог, указанный переменной
PKG_CACHEDIR
в pkg.conf(5). При обновлении пакетов
командой pkg upgrade
старые версии обновленных
пакетов автоматически не удаляются.
Для удаления устаревших версий бинарных пакетов из кеш-каталога, выполните:
#
pkg clean
Со временем программы из Коллекции Портов могут претерпевать
изменения старшего (major) номера версии. В отличие от
pkg_install,
pkgng располагает встроенной командой для
обновления информации о происхождении (origin) пакета. Например,
изначально порт lang/php5
был версии 5.3
. Позже этот порт был переименован
в lang/php53
, а под именем
lang/php5
был создан порт версии
5.4
. Утилитам системы
pkg_install для обновления информации
о происхождении (origin) пакета в собственной базе данных
установленных пакетов потребовалась бы помощь дополнительного
программного обеспечения, такого как
ports-mgmt/portmaster
.
В отличие от
ports-mgmt/portmaster
и
ports-mgmt/portupgrade
для
портов, порядок перечисления новой и старой версий отличаются.
Для pkgng необходим следующий
порядок:
#
pkg set -o category/oldport
:category/newport
Например, в вышеприведенном случае для замены информации о происхождении пакета, выполните:
#
pkg set -o lang/php5:lang/php53
Еще один пример: для изменения информации о происхождении
пакета с lang/ruby18
на
lang/ruby19
, выполните:
#
pkg set -o lang/ruby18:lang/ruby19
И последний пример: для замены информации о происхождении пакета
разделяемой библиотеки libglut
с
graphics/libglut
на
graphics/freeglut
,
запустите:
#
pkg set -o graphics/libglut:graphics/freeglut
Выполняя замену информации о происхождении пакетов, в большинстве случаев также требуется переустановить пакеты, которые зависят от изменившегося пакета. Для принудительной переустановки зависящих пакетов, выполните:
#
pkg install -Rf graphics/freeglut
Этот, и другие документы, могут быть скачаны с http://ftp.FreeBSD.org/pub/FreeBSD/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.