Главная | Контакты



Главная > Программы

Переход во 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! :)

Материал взят с сайта: http://www.maxblogs.ru/articles/perekhod-vo-freebsd-na-ispolzovanie-pkgng

Установим собственно 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

Материал взят с сайта: http://kidun.ru/index.php/component/content/article?id=171

Главная > Программы