Обновление дерева портов FreeBSD

Обновление портов FreeBSD - необходимая и совсем не сложная задача. Существует как минимум два способа это сделать. Первый способ - можно воспользоваться утилитой cvsup и второй вариант воспользоваться утилитой portsnap.

1. Использование утилиты cvsup

Для использования утилиты cvsup, необходимо установить ее порт, идем в папку /usr/ports и находим данную утилиту, используя команду:

#make search name='cvsup' | grep -v 'deps'

Получаем список портов:

Port: cvsup-16.1h_3
Path: /usr/ports/net/cvsup
Info: General network file distribution system optimized for CVS (GUI version)
Maint: jdp@FreeBSD.org
WWW: http://www.cvsup.org/

Port: cvsup-mirror-1.3_6
Path: /usr/ports/net/cvsup-mirror
Info: A kit for easily setting up a FreeBSD mirror site using CVSup
Maint: jdp@FreeBSD.org
WWW: http://www.cvsup.org/

Port: cvsup-without-gui-16.1h_3
Path: /usr/ports/net/cvsup-without-gui
Info: General network file distribution system optimized for CVS (non-GUI version)
Maint: jdp@FreeBSD.org
WWW: http://www.cvsup.org/

Port: cvsupchk-19990209_2
Path: /usr/ports/net/cvsupchk
Info: Check a CVSup directory hierarchy against the checkouts file
Maint: matthias.andree@gmx.de

WWW: Port: fastest_cvsup-0.2.9_5
Path: /usr/ports/sysutils/fastest_cvsup
Info: Finds fastest CVSup server
Maint: nivo+kw+ports.bfa274@is-root.com
WWW: http://fastest-cvsup.sourceforge.net/

Port: net/cvsupit
Moved:
Date: 2003-08-06
Reason: port was marked broken for 3 months with no fix submitted
#

Первый порт - то что нам нужно, поэтому идем в папку /usr/ports/net/cvsup и устанавливаем порт, выполнив команду:

#make install clean

Замечание: если у вас нет папки /usr/ports, значит в системе нет дерева портов и его необходимо получить, при помощи sysinstall.

Далее необходимо настроить конфигурационный файл утилиты cvsupsupfile. Примеры конфигурационных файлов можно найти в папке /usr/share/examples/cvsup/. Cкопируем standard-supfile в /usr/local/etc/ :

#cp /usr/share/examples/cvsup/standard-supfile /usr/local/etc/

Приведем содержимое standard-supfile к следующему виду

#
# cvsup -g -L 2 standard-supfile
#
*default host=cvsup.de.FreeBSD.org
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default tag=.
*default delete use-rel-suffix
*default compress
#src-all
ports-all
doc-all
#

Распишем подробнее значение параметров конфигурационного файла утилиты cvsup

*default – указание псевдо-коллекции.
host= - указывает откуда будут браться обновления, в нашем случае с cvsup.de.FreeBSD.org
base= - размещение служебной информации cvsup, в данном случае используется стандартный каталог /var/db
prefix= - указывает, где размещать полученные файлы.
tag=. - в руководстве написано, что для дерева портов необходимо использовать tag=.
*default compress – сжимать файлы.
ports-all, doc-all – обновить все порты и документацию.
src-all – обновить тексты исходников

Далее запускаем непосредственно обновление портов, подсунув утилите cvsup конфигурационный файл supfile

#cvsup -g -L 2 /usr/local/etc/standard-supfile

Здесь ключ -g – отключает использование графического интерфейса, -L 2 – устанавливает уровень вывода информации утилитой cvsup на консоль.

Материалы Хэндбука FreeBSD по данной теме:
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/cvsup.html
http://www.freebsd.org/doc/ru_RU.KOI8-R/books/handbook/ports-using.html

2. Использование утилиты слепков дерева портов portsnap

В данном случае все намного проще чем с утилитой cvsup. Утилита portsnap поддерживается, начиная с FreeBSD 6.0. Порядок использования утилиты следующий, для начала необходимо загрузить слепок дерева портов:

#portsnap fetch

По умолчанию слепок помещается в /var/db/portsnap/. Его можно переопределить, используя ключик –d. После загрузки слепка, из него может быть развернуто основное дерево портов. Это необходимо для установления точки отчета.

#portsnap extract

Затем необходимо скачать обновления (fetch) текущего слепка и обновить дерево портов (update). Можно воспользоваться одной командой.

#portsnap fetch update

На мой взгляд использование утилиты portsnap является более предпочтительным, так как она входит в стандартную установку FreeBSD, а также является достаточно простой.