Существующий пакетный менеджер в FreeBSD ветки 9 и ниже был предложен Джорданом Хаббардом (Jordan Hubbard) еще в далеком 1994 году. С тех пор многое изменилось, поэтому разработчики FreeBSD, начиная с ветки 10, заменили устаревший пакетный менеджер на новый – PKGNG (package new generation). Для установки бинарных пакетов теперь предлагается использовать удаленные репозитории, например – pkg.FreeBSD.org. Из базовой системы были удалены утилиты pkg_* (такие, как: pkg_install, pkg_add, pkg_create, pkg_delete, pkg_info, pkg_updating и pkg_version).
Теперь при обновлении какого-либо порта вы можете видеть вот такое предупреждающее сообщение:
/!\ WARNING /!\
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
В котором вам предлагается до сентября 2014 года перейти на новый пакетный менеджер, т.к. поддержка старого прекратится.
Переход на новый пакетный менеджер PKGNG в операционных системах FreeBSD версии 9 и ниже осуществляется следующим образом (все нижеперечисленные процедуры осуществлялись на FreeBSD 9.0-RELEASE,FreeBSD 8.4 x64). Сперва установим сам порт PKG:
Для FreeBSD 8.4 x64
1) #cd /usr/ports/ports-mgmt/pkg
2) # make UPGRADEPKG=1
3) #make UPGRADEPKG=1 install
4) #pkg2ng
Для FreeBSD 9.0
# make -C /usr/ports/ports-mgmt/pkg install clean
По окончанию установки вы можете видеть следующее сообщение:
If you are upgrading from the old package format, first run:
# pkg2ng
Но перед началом его использования укажите опцию WITH_PKGNG=YES в своем make.conf:
# echo 'WITH_PKGNG=YES' >> /etc/make.conf
Теперь дадим команду pkg2ng, которая осуществить конвертацию существующей базы установленных портов в новую, для использования с pkgng:
# pkg2ng
Converting packages from /var/db/pkg
...
Converting nmap-6.40_2...
Installing nmap-6.40_2... done
...
Принудительно обновите базу данных установленных портов:
# pkgdb -fu
---> Updating the pkgdb
[Reading data from pkg(8) ... - 46 packages found - done]
В принципе – переход на использование нового пакетного менеджера завершен. Для обновления установленных портов я использую portupgrade. Теперь при ее запуске можно видеть, что используется pkg:
# portupgrade -van
---> Session started at: Mon, 24 Mar 2014 10:05:07 +0400
[Reading data from pkg(8) ... - 46 packages found - done]
** None has been installed or upgraded.
---> Session ended at: Mon, 24 Mar 2014 10:05:24 +0400 (consumed 00:00:16)
Но при попытке обновить базу данных с удаленного репозитария выскочила ошибка:
# pkg update -f
Updating repository catalogue
No valid repository found.
Чтобы явно указать расположение репозитария необходимо выполнить следующее.
Удалить существующий конфигурационный файл для pkg и скопировать его из того, что дан по-умолчанию:
# rm -f /usr/local/etc/pkg.conf
# cp /usr/local/etc/pkg.conf.sample /usr/local/etc/pkg.conf
Создать каталог /usr/local/etc/pkg/repos и разместить в нем конфигурационный файл FreeBSD.conf с указанием расположения удаленного репозитария (обратите внимание на кавычки, они должны быть прямыми " ):
# mkdir -p /usr/local/etc/pkg/repos
# nano -w /usr/local/etc/pkg/repos/FreeBSD.conf
FreeBSD: {
url: “pkg+http://pkg.FreeBSD.org/${ABI}/latest”,
mirror_type: “srv”,
enabled: yes
}
Теперь выполнение обновления базы pkg:
# pkg update -f
Updating repository catalogue
digests.txz 100% 1097KB 1.1MB/s 1.1MB/s 00:00
packagesite.txz 100% 5087KB 5.0MB/s 5.0MB/s 00:00
Incremental update completed, 23432 packages processed:
0 packages updated, 0 removed and 23432 added.
Использование pkg хорошо документировано. Полный список команд вы получите дав просто pkg:
# pkg
...
Commands supported:
add Registers a package and installs it on the system
annotate Add, modify or delete tag-value style annotations on packages
...
Получить помощь по отдельно взятой команде можно так:
# pkg help update
На момент написания статьи версия pkgng:
# pkg -v
1.2.7
Однако, вам теперь необходимо изучить применение новых опций, указываемых в вашем make.conf или при сборке портов. Конструкция типа WITH_NAME, WITHOUT_NAME канула в лету. Теперь вместо, например, WITHOUT_X11=YES необходимо указывать WITHOUT=“X11” и т.д. Более подробно тут: http://wiki.freebsd.org/Ports/Options/OptionsNG.
Некоторые полезные команды из нового менеджера пакетов:
# pkg audit -F
# pkg update -f
# pkg check -Bd
# pkg info | grep nmap
nmap-6.40_2 Port scanning utility for large networks
Вот, пожалуй, и все. А если честно – то пора переходить на FreeBSD 10-RELEASE! :)
http://www.maxblogs.ru/articles/perekhod-vo-freebsd-na-ispolzovanie-pkgng
|