Главная > Программы Переход во FreeBSD на использование PKGNGСуществующий пакетный менеджер в 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). Сперва установим сам порт PKG: # 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! :) Материал взят с сайта:Установим собственно pkgng. Можно установить из портов, можно запустить команду pkg: # sudo pkg The package management tool is not yet installed on your system. Do you want to fetch and install it now? [y/N]: y Bootstrapping pkg please wait Installing pkg-1.2.7_2... done Кроме этого будет выдана краткая подсказка по использованию команды pkg. Если решите устанавливать из портов то: # cd /usr/ports/ports-mgmt/pkg # sudo make install clean Для перехода на pkgng необходимо сконвертировать базу данных по установленным пакетам в новый формат. # sudo pkg2ng pkg: PACKAGESITE in pkg.conf is deprecated. Please create a repository configuration file Как видим, нам предлагаетcя настроить pkg.conf. Сначала удалим файл настроек pkg.conf и настроим репозиторий. # sudo rm /usr/local/etc/pkg.conf # echo "WITH_PKGNG=yes" | sudo tee -a /etc/make.conf # sudo mkdir -p /usr/local/etc/pkg/repos # sudo touch /usr/local/etc/pkg/repos/FreeBSD.conf наполняем файл /usr/local/etc/pkg/repos/FreeBSD.conf следующим содержимым: FreeBSD: {
url: "pkg+http://pkg.FreeBSD.org/${ABI}/latest",
mirror_type: "srv",
enabled: yes
}
Теперь можно воспользоваться новым pkg: # sudo pkg update Updating repository catalogue digests.txz 100% 1091KB 1.1MB/s 450.9KB/s 00:01 packagesite.txz 100% 5042KB 840.4KB/s 1.2MB/s 00:06 Incremental update completed, 23341 packages processed: 0 packages updated, 0 removed and 23341 added. Обновить все пакеты можно так: # sudo pkg upgrade Становиться ненужным пакет portaudit - его заменяет команда pkg audit. Кому-то возможно не понадобиться более portmaster/portupgrade, хотя pkg не является полноценной заменой этим портам. Вот еще некоторые полезные возможности нового pkg. Найти порт: # pkg search portmaster portmaster-3.17.4 Установить (ранее команда pkg_add): # sudo pkg install portmaster-3.17.4 Удалить пакет (ранее команда pkg_delete): # sudo pkg delete portmaster Посмотреть зависимости (ранее команда pkg_info): # pkg info -d rtorrent rtorrent-0.9.2_3: libwww-5.4.0_4 ca_root_nss-3.15.4 xmlrpc-c-devel-1.36.0 libtorrent-0.13.2_1 curl-7.35.0 libsigc++-2.3.1 Просмотреть список установленных пакетом файлов (ранее команда pkg_info): # pkg info -l rtorrent rtorrent-0.9.2_3: /usr/local/bin/rtorrent /usr/local/share/doc/rtorrent/README /usr/local/share/examples/rtorrent/rtorrent.rc Узнать какому пакету принадлежит файл (ранее команда pkg_info): # pkg which /usr/local/lib/libonig.a /usr/local/lib/libonig.a was installed by package oniguruma-4.7.1 Получить список пакетов, нуждающихся в обновлении (ранее команда pkg_version): # pkg version -v -l "<" apache22-2.2.26 < needs updating (port has 2.2.27_2) Более подробно можно почитать в вики PKG Next Generation Материал взят с сайта:Главная > Программы |