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

04.01.2010 20:09 Администратор
Печать

Использование утилиты CVSup

Автор: lissyara.
Оригинал: http://www.lissyara.su/articles/freebsd/tuning/cvsup/

CVSup - это утилита для обновления исходных кодов ядра и самой сиcтемы, дерева портов и документации входящей в состав FreeBSD. C её помощью можно обновиться как до текущей стабильной ветки так и до одного из релизов. Вообще-то, в хандбуке эта тема довольно подробно разобрана, но тем не менее информации по этому вопросу в инете довольно мало. Здесь это изложено ради того, чтобы показать - порты нужно обновлять, и сделать это совсем несложно.
Всё что тут описано - делалось на системе FreeBSD 4.11, но отличия от других версий должны быть минимальны, если они будут вообще, во всяком случае в пределах всей 4-й ветки всё делается точно также, а пятую пока не использую - не нравиться она мне.../usr/home/lissyara/>cd /usr/ports/
/usr/ports/>make search name='cvsup'
Generating INDEX - please wait..^C
/usr/ports/>


Встревон. Нету индекса. Можно дать ему сделать его самостоятельно, но даже на 4 пне это занимает пару часов. Поэтому чтобы не мучать животину зазря надо это дело прервать (Ctrl-C) и скачать его:/usr/ports/>make fetchindex
INDEX.bz2 100% of 668 kB 19 kBps 00m00s
/usr/ports/>


Что тоже не есть хорошо. Скачается индекс для текущей версии портов... Обычно - прокатывает :) Ищем путь к порту:/usr/ports/>make search name='cvsup'
Port: cvsup-16.1h_2
Path: /usr/ports/net/cvsup
Info: General network file distribution system optimized
for CVS (GUI version)
Maint: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
B-deps: XFree86-libraries-4.5.0 expat-1.95.8_3 ezm3-1.2
fontconfig-2.2.3,1 freetype2-2.1.10_1 pkgconfig-0.17.2
R-deps: XFree86-libraries-4.5.0 expat-1.95.8_3 fontconfig-2.2.3,1
freetype2-2.1.10_1 pkgconfig-0.17.2

Port: cvsup-mirror-1.3_3
Path: /usr/ports/net/cvsup-mirror
Info: A kit for easily setting up a FreeBSD mirror site
using CVSup
Maint: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
B-deps:
R-deps: cvsup-without-gui-16.1h_2

Port: cvsup-without-gui-16.1h_2
Path: /usr/ports/net/cvsup-without-gui
Info: General network file distribution system optimized
for CVS (non-GUI version)
Maint: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
B-deps: ezm3-1.2
R-deps:

Port: fastest_cvsup-0.2.9_1
Path: /usr/ports/sysutils/fastest_cvsup
Info: Finds fastest CVSup server
Maint: Этот e-mail адрес защищен от спам-ботов, для его просмотра у Вас должен быть включен Javascript
B-deps:
R-deps: p5-PathTools-3.09 p5-Scalar-List-Utils-1.14,1
p5-Time-HiRes-1.72,1

/usr/ports/>


Я на серваке ГУИ не ставлю, потому выбираю /usr/ports/net/cvsup-without-gui. Если у Вас стоят иксы - значит надо просто cvsup ставить./usr/ports/>cd net/cvsup-without-gui
/usr/ports/net/cvsup-without-gui/>make && make install && make clean
===> Vulnerability check disabled, database not found
=> cvsup-snap-16.1h.tar.gz doesn't seem to exist in /usr/ports/distfiles/.
=> Attempting to fetch from ftp://ftp.FreeBSD.org/pub/FreeBSD/development/CV


Также будет вопрос от gettext что инсталлировать, я выбрал оба пункта - и файлы примеров и справку в html формате. Пригодится.
Он (CVSup) за собой тащит достаточно длинный список того что ему необходимо (суммарный объём скачанных файлов составил 28,2 метров) - /usr/ports/net/cvsup-without-gui/>pkg_info
expat-1.95.8 XML 1.0 parser written in C
ezm3-1.2 Easier, more portable Modula-3 distribution for building CV
gettext-0.14.1 GNU gettext package
gmake-3.80_2 GNU version of 'make' utility
libiconv-1.9.2_1 A character set conversion library
libtool-1.3.5_2 Generic shared library support script (version 1.3)
libtool-1.5.10 Generic shared library support script (version 1.5)


После установки копируем файл настроек и редактируем его:/usr/ports/net/cvsup-without-gui/>cd /usr/share/examples/cvsup/
/usr/share/examples/cvsup/>ls
README ports-supfile standard-supfile
cvs-supfile refuse www-supfile
doc-supfile refuse.README
gnats-supfile stable-supfile
/usr/share/examples/cvsup/>cp standard-supfile /usr/local/etc/supfile
/usr/share/examples/cvsup/>cd /usr/local/etc/
/usr/local/etc/>ee supfile


У меня он получился такой:# cvsup -g -L 2 /usr/local/etc/supfile
#
# Defaults that apply to all the collections
#
# IMPORTANT: Change the next line to use one of the CVSup mirror sites
# listed at http://www.freebsd.org/doc/handbook/mirrors.html.
*default host=cvsup2.ru.FreeBSD.org
*default base=/usr
*default prefix=/usr
*default release=cvs tag=RELENG_4_11
*default delete use-rel-suffix

# If your network link is a T1 or faster, comment out the following line.
*default compress

## Main Source Tree.
#
# The easiest way to get the main source tree is to use the "src-all"
# mega-collection. It includes all of the individual "src-*" collections.
#src-all
ports-all tag=.
#doc-all tag=.


Строка cvsup -g -L 2 /usr/local/etc/supfile сделана только по одной причине - память у меня жутко дырявая и постоянно в нём смотрю с какими опциями его надо запускать :) Какой выбрать сервер, с которого брать обновления - это ваше дело. Я нахожусь в России, поэтому выбрал cvsup3.ru.FreeBSD.org (вообще-то раньше я постоянно пользовался cvsup2.ru.FreeBSD.org - но последнее время он постоянно занят, поэтому я перешёл на cvsup3.ru.FreeBSD.org). Если Вы на камчатке и инет идёт, например, из японии - имеет смысл выбрать японский сервак. После чего можно запускать:/usr/ports/>rehash
/usr/ports/>cvsup -g -L 2 /usr/local/etc/supfile && make fetchindex
Parsing supfile "/usr/local/etc/supfile"
Connecting to cvsup2.ru.FreeBSD.org
Connected to cvsup2.ru.FreeBSD.org
Server software version: SNAP_16_1f
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
......................................


Первый раз на обновление всего дерева портов уходит довольно много трафика, входящего 14.4 - мегабайт, и исходящего 3.8 мег. В дальнейшем его будет гораздо меньше. Также, первое обновление самое долгое. У меня ушло почти 2 часа, и дело не в скорости линии (у меня 20кб/с - за 2 часа на ней можно выкачать 140 мегов), и не в скорости моего компа, тоже не слабый. Как я подозреваю сервак-то один а клиентов много. Он и неуспевает.
Вот, пожалуй и всё. Теперь у Вас свежая версия портов, и можно не волноваться за то, что устанавливаемое ПО давно устарело. Вообще, я завёл себе за правило - перед каждой установкой обновляю порты (разумеется если за один день надо установить 10 приложений, я их не обновляю 10 раз - вполне достаточно одного :)).

P.S. Вообще начиная с 5-ки появилась новая утилита portsnap - но она толи бестолковая какая-то, толи я дурак - но у меня она пытается всё архивное дерево портов затащить - 39 мегов... Нафик оно мне надо, если обновление с помощью cvsup выльется мне в пару мегов? Да и обновлять она может только порты, исходные коды системы не может....

Обновлено 28.05.2010 13:50