Установка и использование в FreeBSD 9.1 нового пакетного менеджера pkgng

 
ОС: FreeBSD 9.1
Последнее существенное изменение: 2013-04-24

Введение

Мой опыт использования FreeBSD не превышает нескольких дней, поэтому подразумевается, что в тексте обильно рассыпаны фразеологизмы "насколько я понял", "если я правильно понял" и т.п. Если их не видно, это не значит, что их там нет.

Пакетный менеджер pkgng пришёл на смену pkg_install и более старым способам сборки портов прямо на компьютере. Изначально процесс установки пакета состоял из скачивания исходников пакета на компьютер и сборку пакета через make и т.д. Потом автоматизировали процесс, появился пакетный менеджер pkg_install, который позволил скачивать готовые собранные пакеты и устанавливать их через команду pkg_add, удалять через pkg_delete и т.д. Но и этот менеджер пакетов не был пределом мечтаний и в году 2010 начали создавать новый пакетный менеджер pkgng, который мне напоминает apt в debian.

Установка

На чистой FreeBSD предусмотрительно надо установить несколько пакетов, которые облегчат в дальнейшем переход на pkgng:

# pkg_add -r wget screen mc

Установку нового pkgng я произвёл посредством старого pkg_install:

# pkg_add -r pkg

Потом, по инструкции, конвертировал базу установленных пакетов в новый формат:

# pkg2ng

В файл /etc/make.conf добавил строку:

WITH_PKGNG=yes

Формат баз установленных портов для pkgng и pkg_install разные, поэтому после установки pkgng и конвертации базы в новый формат нельзя использовать старый pkg_install(?). Я пока не знаю как полностью избавиться от pkg_install, да и подозреваю, что на данный момент этого делать не стоит.

Настройка

Файл настроек находится в /usr/local/etc/pkg.conf, который я сделал из тут же лежащего pkg.conf.sample. Вначале я ничего не менял в этом файле и помучился с сообщениями об отсутствии в репозитории файла repo.txz, когда попытался установить mc:

# pkg install mc

Потом прочитал, что открылся специальный репозиторий для pkgng3 и внёс изменения в файл pkg.conf, в соответствии с мануалом4. Вот что там у меня сейчас:

# cat pkg.conf
# System-wide configuration file for pkg(1)
# For more information on the file format and
# options please refer to the pkg.conf(5) man page
# Configuration options
PACKAGESITE         : http://ftp.pcbsd.org/pub/mirror/packages/9.1-RELEASE/amd64/
#PACKAGESITE         : http://mirror.corbina.net/pub/pcbsd/packages/9.1-RELEASE/amd64/
#PKG_DBDIR          : /var/db/pkg
PKG_CACHEDIR        : /usr/local/tmp
#PORTSDIR           : /usr/ports
PUBKEY              : /usr/local/etc/pkg-pubkey.cert
#HANDLE_RC_SCRIPTS   : NO
#PKG_MULTIREPOS     : NO
#ASSUME_ALWAYS_YES   : NO
#SYSLOG             : YES
#SHLIBS             : NO
#AUTODEPS           : NO
#PORTAUDIT_SITE     : http://portaudit.FreeBSD.org/auditfile.tbz

# Repository definitions
#repos:
#  default : http://example.org/pkgng/
#  repo1 : http://somewhere.org/pkgng/repo1/
#  repo2 : http://somewhere.org/pkgng/repo2/
Может такое статься, что этот репозиторий закрыт по географическому признаку, поэтому я подготовил заремаренную ссылку на корбиновский репозиторий. Прочие российские зеркала pkgng репозитория можно найти здесь: http://www.pcbsd.org/getmirrors.php?url=packages.

Потом, следуя инструкции4, я скачал открытый ключ репозитория и поместил его здесь:

# cd /usr/local/etc
# wget http://trac.pcbsd.org/export/21629/pcbsd/current/src-sh/pc-extractoverlay/desktop-overlay/usr/local/etc/pkg-pubkey.cert

И обновил установленные пакеты до версий из нового репозитория:

# pkg upgrade -fy

Использование

Справки по командам можно получить, например:

# man pkg-upgrade

или

# pkg help upgrade

Обновление пакетов:

# pkg upgrade

Первый апгрейд у меня не получился из-за нарушения зависимостей. Мешал пакет pkg-config. Я решил его удалить, но он был нужен для работы tcpdump, wget и ещё пары пакетов. Я удалил все четыре мешающих пакетов:

# pkg delete libidn libsmi tcpdump wget

после чего произвёл удачный апгрейд. Далее удалил pkg-config. И, на всякий случай, восстановил все четыре ранее удалённых пакетов, включая tcpdump. Не спрашивайте почему я сразу не удалил pkg-config вместе с четырьмя прочими пакетами. В тот момент мне казалось это неплохой идеей.

Установка пакета:

# pkg install package

Информация по пакету:

# pkg info package

Удалить пакет:

# pkg delete package

Также в pkgng есть своя проверка пакетов на уязвимости, которая заменяет portaudit. Проверить пакеты на уязвимости:

# pkg audit -F

И ещё много полезного...

Ссылки

  1. Using pkgng for Binary Package Management
  2. 04.09.2012 14:04 Вышел pkgng 1.0, новый пакетный менеджер для FreeBSD
  3. 19.04.2013 09:56  Введён в строй постоянно обновляемый pkgng-репозиторий для PC-BSD и FreeBSD 9.1
  4. Switching to the PC-BSD® pkgng Repository