Переход на pkgng во 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)

 

Коментувати

Простий текст

  • Не дозволено жодних HTML теґів.
  • Рядки й абзаци переносяться автоматично.
  • Адреси вебсторінок та адреси електронної пошти автоматично перетворюються у посилання.