Управление пакетами во FreeBSD при помощи утилиты pkg
Как известно, во FreeBSD можно использовать пакеты как бинарные, так и собранные из исходных кодов при помощи портов. Устройство портов за последнее время ничем не изменилось. А вот на смену утилитам для управления бинарными пакетами pkg_add, pkg_info и прочим pkg_* в последних версиях FreeBSD пришел новый пакетный менеджер pkg (также известный как pkgng). Данная небольшая заметка рассказывает о том, как им пользоваться.
Примечание: Узнать о том, как во FreeBSD раньше происходило управление бинарными пакетами, и о том, как пользоваться портами, вы можете из заметки Установка и обновление софта во FreeBSD. Не исключаю также, что вас могут заинтересовать статьи Использование FreeBSD на десктопе, версия 2.0 и Памятка по обновлению ядра и мира FreeBSD.
Итак, при первом запуске pkg без параметров вы скорее всего увидите такое сообщение:
The package management tool is not yet installed on your system.
Do you want to fetch and install it now? [y/N]:
Отвечаем утвердительно, и ждем, пока pkg установится.
Затем читаем справку:
$ pkg help
Посмотреть справку по конкретной команде можно так:
$ pkg help update
Обновляем информацию о доступных пакетах:
$ pkg update
Смотрим список установленных пакетов:
$ pkg info
Обновляем установленные пакеты:
$ pkg upgrade
Ищем пакет по названию:
$ pkg search xorg
Установка пакета/пактетов и всех его/их зависимостей:
$ pkg install xorg
$ pkg install git-lite vim-lite sudo
Удаляем пакет:
$ pkg delete xorg
Удаляем пакеты, которые больше не нужны:
$ pkg autoremove
Смотрим, к какому пакету относится файл:
$ pkg which /usr/local/bin/git
Посмотреть полный список файлов в пакете можно так:
$ pkg info -l mesa-demos
Загружаем базу известных уязвимостей:
$ pkg audit -F
Проверяем установленные пакеты на предмет наличия известных уязвимостей, с ссылками на подробные отчеты:
$ pkg audit
Проверяем все установленные пакеты на предмет валидности контрольных сумм входящих в пакеты файлов:
$ pkg check -s -a
Проверяем все установленные пакеты на предмет отсутствия требуемых зависимостей:
$ pkg check -d -a
Удаляем из кэша старые пакеты:
$ pkg clean
Смотрим статистику:
$ pkg stats
Запрещаем/разрешаем обновление конкретного пакета:
$ pkg lock syncthing
$ pkg unlock syncthing
Посмотреть список «залоченых» пакетов:
$ pkg lock -l
Откатиться к более старой версии пакета:
$ sudo pkg remove chromium
$ sudo pkg install /var/cache/pkg/chromium-51.0.2704.106_2.txz
В целом я хочу сказать, что управление пакетами во FreeBSD стало намного лучше, чем оно было раньше. Прям действительно есть нормальный пакетный менеджер, не только не уступающий линуксовым Yum и Apt, но в чем-то даже и превосходящих их. Например, интерфейс у pkg прост, понятен и единообразен, чего уж точно нельзя сказать об Apt. Пакеты весьма свежие. Например, когда я разбирался с pkg, с его помощью можно было установить последний на тот момент Go версии 1.5, а в Ubuntu из коробки был доступен только древнейший Go 1.2. Аналога pkg audit в мире дистрибутивов Linux мне вот так с лету и вовсе неизвестно.
Все подробности, как обычно, вы найдете в man pkg.