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
необходимо внести следующую
запись:
WITH_PKGNG= yes
Система управления пакетами 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
Этот, и другие документы, могут быть скачаны с https://download.freebsd.org/ftp/doc/.
По вопросам, связанным с FreeBSD, прочитайте
документацию прежде чем писать в
<questions@FreeBSD.org>.
По вопросам, связанным с этой документацией, пишите в рассылку
<doc@FreeBSD.org>.