Зазеркалье: настраиваем локальное зеркало 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

Leave a Reply