FreeBSD: переход с pkg_install на pkgng

Автор: | 28/05/2014

freebsd_logoВо FreeBSD версии 9.1 и выше утилиты семейства pkg_* (такие как pkg_install, pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating и pkg_version) были заменены на один инструмент – pkgng (Package New Generationn).

При использовании старой утилиты pkg_install – система постоянно напоминает об этом:

pkg_install EOL is scheduled for 2014-09-01. Please consider migrating to pkgng
http://blogs.freebsdish.org/portmgr/2014/02/03/time-to-bid-farewell-to-the-old-pkg_-tools/
If you do not want to see this message again set NO_WARNING_PKG_INSTALL_EOL=yes in your make.conf

Откладывание обновления системы и так уже привело к нескольким проблемам, например – «/usr/ports/Mk/bsd.sites.mk», line 958: Malformed conditional, и Error: Unable to get ftp://ftp.freebsd.org/pub/FreeBSD/ports./i386/packages-9.0-release/

Перед обновлением системы с 9.0 до 9.2 – было решено всё-таки сначала обновить систему портов.

Устанавливаем утилиту pkg:

# cd /usr/ports/ports-mgmt/pkg && make install clean

Если у вас уже или ещё не работает make – можно установить пакетом:

# pkg_add -r pkg

В конце установки нам сообщат, что:

If you are upgrading from the old package format, first run:

# pkg2ng

В файл make.conf добавляем указание использовать pkgng:

# echo 'WITH_PKGNG=YES' >> /etc/make.conf

ВАЖНО: следующий шаг необратим.

Далее – запускаем конвертацию базы портов:

# pkg2ng
Converting packages from /var/db/pkg
Converting libtool-2.4.2_3...
Installing libtool-2.4.2_3... done
Converting libiconv-1.14_3...
Installing libiconv-1.14_3... done
Converting mc-4.8.12_1...
...
Installing libXaw-1.0.12_2,2... done
Analysing shared libraries, this will take a while... done

В целом – на этом переход можно считать завершённым.

Для примера – получение информации о пакете Dovecot 1.2:

# pkg info dovecot-1.2.17_1
dovecot-1.2.17_1
Name           : dovecot
Version        : 1.2.17_1
Installed on   : Tue May 27 16:49:55 EEST 2014
Origin         : mail/dovecot
Architecture   : freebsd:9:x86:32
Prefix         : /usr/local
Maintainer     : unknown
WWW            : http://www.dovecot.org/
Comment        : Secure and compact IMAP and POP3 servers
...
Description    :
Dovecot is a secure and compact IMAP server which is in the early stages
of development. It supports Maildirs and mbox formats and much of the
IMAP v4 protocol including SSL/TLS. IPv6 support is also included.
Dovecot supports authentication with OpenLDAP, PostgreSQL, MySQL, vpopmail
and PAM.

WWW: http://www.dovecot.org/

Поиск устаревших пакетов:

# pkg version | grep "<"
vim-7.4.110                        <

Или так:

# pkg version -v | grep need
vim-7.4.110                        <   needs updating (port has 7.4.307)

Тогда как ранее это выполнялось практически такой же командой:

# pkg_version -v | grep need

Можно запустить portupgrade, что бы проверить что используется pkgng:

# portupgrade -n dovecot-1.2.17_1
--->  Session started at: Tue, 27 May 2014 17:11:27 +0300
[Reading data from pkg(8) ... - 407 packages found - done]
** None has been installed or upgraded.
--->  Session ended at: Tue, 27 May 2014 17:11:27 +0300 (consumed 00:00:00)

Получить полную справку по командам:

# pkg help

Или по одной команде, например – version:

# pkg help version

Настройки pkgng хранятся в файле /usr/local/etc/pkg.conf, данные в котором записаны в формате YAML.

При первом запуске обновления локальной копии репозитория (да-да, теперь и FreeBSD работает с репозиториями) – будет получено сообщение об ошибке:

# pkg update -f
Updating repository catalogue
No valid repository found.

Копируем файл конфигурации:

# cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf

Для указания главного (или – основного) репозитория – в файл достаточно добавить строку:

# echo "PACKAGESITE: http://pkgbeta.freebsd.org/freebsd:9:x86:32/latest/" >> /usr/local/etc/pkg.conf

Хотя PACKAGESITE уже считается устаревшей опцией.

Найти URL можно зайдя на страницу http://pkgbeta.freebsd.org/ и выбрав нужную версию FreeBSD и архитектуру.

Можно создать несколько репозиториев – смотрите man pkg.conf, там в конце есть несколько примеров.

Ещё раз запускаем обновление:

# pkg update -f
pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file
Updating repository catalogue
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
digests.txz                                                                                                                                  100% 1094KB 364.5KB/s 773.6KB/s   00:03
pkg: Warning: use of http:// URL scheme with SRV records is deprecated: switch to pkg+http://
packagesite.txz                                                                                                                              100% 5043KB 504.3KB/s   1.1MB/s   00:10
Incremental update completed, 23386 packages processed:
0 packages updated, 0 removed and 23386 added.

Ещё одна новая и весьма приятная возможность pkg – проверка установленных портов на наличие известных уязвимостей:

# pkg audit -F
pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file
vuln.xml.bz2                                                                                                                                 100%  440KB 219.8KB/s 389.7KB/s   00:02
0 problem(s) in the installed packages found.

Ссылки по теме:

http://www.maxblogs.ru
https://wiki.freebsd.org
http://www.freebsd.org
https://mebsd.com
https://lists.freebsd.org