Зазеркалье: настраиваем локальное зеркало CVSUP
Если машин с FreeBSD в локалке больше одной, то встает вопрос – можно ли обновлять порты и исходные коды с одной выделенной машины? Во-первых, экономится трафик. Во-вторых, меньше загружается канал во внешний мир.
Для подобных целей в портах предусмотрена утилита cvsup-mirror:
snake@snake [snake]# cd /usr/ports/
snake@snake [ports]# make search name=cvsup-mirror
Port: cvsup-mirror-1.3_8
Path: /usr/ports/net/cvsup-mirror
Info: A kit for easily setting up a FreeBSD mirror site using CVSup
Maint: jdp@FreeBSD.org
B-deps:
R-deps: cvsup-without-gui-16.1h_4
WWW: http://www.cvsup.org/
snake@snake [ports]# cd /usr/ports/net/cvsup-mirror
snake@snake [cvsup-mirror]# make install clean
Отвечаем на вопросы мастера:
Master site for your updates [cvsup-master.freebsd.org]? cvsup5.ru.FreeBSD.org
# Сервер обновлений, с которого будем качать обновления.
How many hours between updates of your files [1]?
# как часто запускать обновление
Do you wish to mirror the main source repository [y]?
# обновлять порты и исходники.
Where would you like to put it [/home/ncvs]? /usr/local/www/cvsupd
# папка, где будет лежать скаченное (порядка 3-4ГБ)
Do you wish to mirror the installed World Wide Web data [y]? n
# сделать зеркало сайта http://www.freebsd.org
Do you wish to mirror the GNATS bug tracking database [y]? n
# зеркало базы багов
Do you wish to mirror the mailing list archive [y]? n
# e-mail рассылки
Далее подтверждаем создание пользователей и групп, под которым будет работать cvsup-mirror, подвтерждаем внесение измений в crontab (для регулярного запуска обновлений) и в syslog.conf для настроек логирования.
Программа сконфигурирована и в дальнейшей настройке не нуждается.
пишем в rc.conf: cvsupd_enable=”YES”
Запускаем:
snake@snake [snake]# /usr/loca/etc/rc.d/cvsupd start
Проверяем:
snake@snake [/etc]#/usr/local/etc/rc.d/cvsupd status
cvsupd is running as pid 16512.
snake@snake [/etc]#sockstat -l4 | grep cvsup
cvsup cvsupd 16512 3 tcp4 *:5999 *:*
Запускаем скрипт обновления:
snake@snake [snake]# /usr/loca/etc/cvsup/update.sh
Обязательно пишем полный путь, иначе скрипт не запустится
Идем пить кофе, потому что тянуть в первый раз программа будет очень много – порядка 3,5 гигабайт. При этом программа может выдать что-то типа такого:
[root@webdes cvsup]# /usr/local/etc/cvsup/update.sh
CVSup update begins at 2006-10-18 18:37:22
lockf: /var/spool/lock/cvsup.lock: already locked
CVSup update ends at 2006-10-18 18:37:22
А может, как в моем случае, совсем ничего не выводить.
Настраиваем соотвествующим образом sup-файлы для утилиты cvsup:
ports-supfile
*default host=localhost
*default base=/var/db
*default prefix=/usr
*default release=cvs
*default delete use-rel-suffix
*default compress
ports-all tag=.
src-supfile
*default host=localhost
*default base=/var/db
*default prefix=/usr
*default release=cvs tag=RELENG_7_2
*default delete use-rel-suffix
*default compress
src-all
Настраиваем, кто может от нас обновляться: /usr/local/etc/cvsup/cvsupd.access
-0.0.0.0/0 8 # Общее ограничение одновременных подключений
-0.0.0.0/0/32 1 # только одно подключение с хоста
+10.12.5.0/24 8 # Локалка
+10.12.51.0/24 8 # Локалка
+10.12.4.0/24 8 # Локалка
+127.0.0.1/32 1 # localhost
И еще одно маленькое замечание: у меня при обновлении с серверов cvsup1.ru.freebsd.org-cvsup4.ru.freebsd.org программа полностью не обновляла репозиторий, и csup выдавал нечто вроде ports-all: unknown ports collection. В интернетах советуют использовать использовать утилиту cvsupdpasswd, чтобы сгенерировать пароль и отослать его в саппорт cvsup-серверов freebsd. Общение с этим самым саппортом убедило в обратном – для локальных серверов пароль не нужен 🙂 достаточно сменить cvsup-сервер, с которого льем обновления на “менее престижный” (например, cvsup5.ru.freebsd.org).
Проверяем работу сервера, запустив утилиту csup:
snake@snake [/etc]#snake@snake [snake]#csup -g -L 2 /home/snake/local-supfile
Parsing supfile "/home/snake/local-supfile"
Connecting to localhost
Connected to 127.0.0.1
Server software version: SNAP_16_1h
Negotiating file attribute support
Exchanging collection information
Establishing multiplexed-mode data connection
Running
Updating collection src-all/cvs
Edit src/UPDATING
Add delta 1.507.2.23.2.7 2009.10.02.18.09.56 simon
Edit src/sys/conf/newvers.sh
Add delta 1.72.2.11.2.8 2009.10.02.18.09.56 simon
Edit src/sys/fs/devfs/devfs_vnops.c
Add delta 1.149.2.8.2.2 2009.10.02.18.09.56 simon
Edit src/sys/kern/kern_exec.c
Add delta 1.308.2.8.2.2 2009.10.02.18.09.56 simon
Shutting down connection to server
Finished successfully