Установка и использование в FreeBSD 9.1 нового пакетного менеджера pkgng
Введение
Мой опыт использования 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/
Потом, следуя инструкции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
И ещё много полезного...