FreeBSDСистема управления пакетами во FreeBSD уже довольно старая, и, по сравнению  с современными системами управления в мире Linux вроде apt-get или yum, честно говоря, выглядит убого. Поэтому было решено обновить менеджер пакетов. Новые менеджер пакетов назвали по-простому PKG Next Generation или pkgng. Старая система будет поддерживаться до сентября 2014 года. При сборке и обновлении портов сейчас выдается сообщение:

/!\ 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

В конце концов переходить все равно придется, поэтому не будем затягивать. Установим собственно 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

Добавить комментарий