Мы — долго запрягаем, быстро ездим, и сильно тормозим.
www.lissyara.su —> статьи —> FreeBSD —> программы —> cvsupd

cvsupd - зеркало обновлений

Автор: Abigor.


У меня в подчинении ранее находилось несколько серверов под управлением FreeBSD различных веток развития 5.x и 6.x. Порты и исходные тексты я обновлял через cvsup. Все было хорошо пока в соседнем отделе админ то же свои сервера не стал обновлять. После этого было принято решение поднять локальный репозиторий обновлений. В портах был найден cvsup-mirror, для простого создания зеркала.
Что ж, начнем. Ставить будем из портов.

[root@webdes ~]# cd /usr/ports/
[root@webdes ports]# make search name=cvsup-mirror
Port:   cvsup-mirror-1.3_5
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_2
WWW:    http://www.cvsup.org/

[root@webdes ports]# cd /usr/ports/net/cvsup-mirror
[root@webdes cvsup-mirror]# make

Здесь установщик задаст пару вопросов, на которые можно отвечать [y]. Нас интересуют только вот эти вопросы:
Master site for your updates [cvsup-master.freebsd.org]? cvsup4.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]? /var/cvsupd
# задаем, где будут это все храниться
Do you wish to mirror the installed World Wide Web data [y]? n
# предлагает сделать зеркало сайта http://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
# mail рассылки

Дальше ставим.
[root@webdes cvsup-mirror]# make install clean

Там будут лишь подтверждения о создании юзверей и групп. Внесение изменений в /etc/crontab, /etc/newsyslog.conf и /etc/syslog.conf. Так что везде отвечаем [y] и ставим.
дальше не в какой конфигурации сервер не нуждается, Первое скачивание должно запуститься автоматически. Проверить это можно так.
[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
[root@webdes cvsup]# ps ax |grep cvsup
17761  ??  Is     0:00,00 /bin/sh -c /usr/local/etc/cvsup/update.sh
17762  ??  I      0:00,00 /bin/sh /usr/local/etc/cvsup/update.sh
17765  ??  I      0:00,00 lockf -t 0 /var/spool/lock/cvsup.lock /bin/sh
17767  ??  I      0:00,01 su -f -m cvsupin -c exec env HOME=/home/cvsupin cvsup -1gL 
 1 -b /usr/local/etc/cvsup -c sup.client  -h cvsup4.ru.
17768  ??  D      0:03,69 cvsup -1gL 1 -b /usr/local/etc/cvsup -c sup.client -h 
 cvsup4.ru.freebsd.org /usr/local/etc/cvsup/supfile
17814  p3  S+     0:00,00 grep cvsup

Как видите процесс пошел, осталось дождаться, когда выльется чуть больше 3 гигов.
После того как скрипт /usr/local/etc/cvsup/update.sh закончит свою работу, в файле лога /var/log/cvsup.log должен появиться текст следующего содержания:
[root@webdes cvsup]# cat /var/log/cvsup.log
Updating from cvsup4.ru.freebsd.org
Connected to cvsup4.ru.freebsd.org
Updating collection cvs-all/cvs
 Append to CVSROOT-src/commitlogs/bin
 Append to CVSROOT-src/commitlogs/sys
 Edit src/bin/rm/rm.c,v
 Edit src/sys/netgraph/ng_socket.c,v
-------------------------------------------
SKIP
-------------------------------------------
Skipping collection gnats/current
Updating collection www/current
Skipping collection mail-archive/current
Updating collection distrib/self
Finished successfully
CVSup update ends at 2006-10-18 17:57:05
CVSup update begins at 2006-10-18 18:37:00
[root@webdes cvsup]#

Теперь запустим сервер обновлений:
[root@webdes ~]# echo 'cvsupd_enable="YES"' >> /etc/rc.conf
[root@webdes ~]# /usr/local/etc/rc.d/cvsupd rcvar
# cvsupd
$cvsupd_enable=YES
[root@webdes ~]# /usr/local/etc/rc.d/cvsupd start
Starting cvsupd.
[root@webdes ~]# /usr/local/etc/rc.d/cvsupd status
cvsupd is running as pid 18000.
[root@webdes log]# sockstat -4 -p 5999
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
cvsup    cvsupd     18000 3  tcp4   *:5999                *:*

Теперь можно проверить работу нашего сервера обновлений =)
[root@webdes etc]# cvsup -L 1 /usr/local/etc/cvsup.conf
Connected to 127.0.0.1
Updating collection src-all/cvs
Updating collection ports-all/cvs
 Edit ports/UPDATING
 Edit ports/databases/evolution-data-server/Makefile
 Checkout ports/databases/evolution-data-server/files/patch-camel_camel-object.c
 Edit ports/deskutils/tomboy/Makefile
 Checkout ports/deskutils/tomboy/files/patch-Tomboy_Utils.cs
 Edit ports/devel/gauche-readline/Makefile
 Edit ports/editors/openoffice.org-2.0/Makefile
 Edit ports/editors/openoffice.org-2.0/distinfo
 Edit ports/editors/openoffice.org-2.0/pkg-descr
 Edit ports/editors/openoffice.org-2.0/pkg-plist
 Edit ports/finance/gnucash/Makefile
 Edit ports/games/alephone/Makefile
 Edit ports/irc/dancer/Makefile
 Edit ports/misc/kdehier/Makefile
 Edit ports/misc/kdehier/files/dirlist
 Edit ports/misc/kdehier/pkg-plist
 Edit ports/net/rboot/Makefile
 Edit ports/net/rboot/distinfo
 Edit ports/net/rboot/pkg-descr
 Edit ports/x11/XFree86-4-clients/Makefile
 Edit ports/x11/kdebase3/Makefile
 Edit ports/x11/kdelibs3/Makefile
 Edit ports/x11/kdelibs3/pkg-plist
 Edit ports/x11-toolkits/py-gtk2/Makefile
 Edit ports/x11-toolkits/py-gtk2/distinfo
 Edit ports/x11-wm/afterstep-stable/Makefile
Updating collection ports-base/cvs
Finished successfully
[root@webdes etc]#

В это время вот вывод sockstat:
[root@webdes log]# sockstat -4 -p 5999
USER     COMMAND    PID   FD PROTO  LOCAL ADDRESS         FOREIGN ADDRESS
cvsup    cvsupd     18394 7  tcp4   127.0.0.1:5999        127.0.0.1:55764
root     cvsup      18393 6  tcp4   127.0.0.1:55764       127.0.0.1:5999
cvsup    cvsupd     18000 3  tcp4   *:5999                *:*

Вот и все, у нас теперь есть свой сервер обновлений.



размещено: 2006-10-19,
последнее обновление: 2006-10-19,
автор: Abigor


vlad11, 2006-10-19 в 21:00:37

Запускать надо
/usr/local/etc/cvsup/update.sh &

Abigor, 2006-10-20 в 7:34:50

Не обязательно

vlad11, 2006-10-23 в 18:15:05

В статье не указано, как ставить ограничения на количество сессий с одного IP, а также как открывать доступ только "дружественным" сетям для апгрейда.
Также в конфиге придется немного побороться с неправильным ресолвингом имени cvsup-сервера.

Abigor, 2006-10-24 в 6:49:23

>В статье не указано, как ставить ограничения на количество >сессий с одного IP, а также как открывать доступ только >"дружественным" сетям для апгрейда.
у меня небыло в этом необходимости, внутри локальной сети прятоться не от кого, да  из инета можно всем обновляться с меня.

Дмитрий, 2006-12-26 в 16:01:26

Отличная статья! Большое спасибо автору! :)

Гол, 2007-01-18 в 16:56:25

Просто так апдейт не запустился. Потребовалось кое-что добавить.
Нужна авторизация для узла freefall.freebsd.org, это делается вот так:
Вводим команду

cvpasswd <наш_email> freefall.freebsd.org

запрашивается пароль, вводим.
Выводится табличка

Send this line to the server administrator at freefall.freebsd.org:
------------------------------------------------------------
<наш_email>:<md5hash>::
------------------------------------------------------------
Be sure to send it using a secure channel!

Add this line to your file "$HOME/.cvsup/auth", replacing "XXX"
with the password you typed in:
------------------------------------------------------------
freefall.freebsd.org:<наш_email>:XXX:
------------------------------------------------------------
Make sure the file is readable and writable only by you!

Т.е. копируем строку
Бнаш_email:<MD5hash>::
и высылаем её на почтовый адрес cvsup-master@FreeBSD.org

Должен прийти ответ что нас добавили.
Далее копируем строку
freefall.freebsd.org:<наш_email>:XXX:
заменив XXX на введённый пароль в файл
"$HOME/.cvsup/auth"
, т.е. у меня это в /home/cvsupin/.cvsup/auth

Вроде всё. Ждёмс ответа от freebsd.org

AlkoGekS, 2007-08-09 в 0:54:51

Вопрос!
Как часто запускаются сами обновления репозитория?
Или они вообще не запускаются и приходиться самому постоянно юзать /usr/local/etc/cvsup/update.sh ?

Kolesya, 2007-09-17 в 12:28:53

to AlkoGekS
посмотри /etc/crontab :)

Al, 2007-10-30 в 19:04:27

бывает,что обновляться с зеркала получается несразу.Надо подождать или переставить....У меня не заработало-сначала переставил-потом подождал..

Abigor, 2007-10-31 в 8:47:00

[root@webdes abigor]# grep update /etc/crontab
51      *       *       *       *       root    /usr/local/etc/cvsup/update.sh
[root@webdes abigor]#
это добавляется при установе

artem, 2008-01-30 в 17:19:43

1 У меня не пашет пишет
./update.sh
./update.sh: Cannot determine the PREFIX

2 как сделать зеркало портов без исходников а то 2 гига это много качать
3 как сделать зеркало портов и исодников чтоб тока собирать ядро
4 а разве нельзя использовать существующее дерево портов надо его снова выкачивать для зеркала?

Abigor, 2008-01-31 в 4:22:31

Запускать вот так надо
[root@webdes cvsup]# /usr/local/etc/cvsup/update.sh
-----------------------------------
Разделения на src и ports нету, они идут вмести
-----------------------------------
Использовать /usr/ports нельзя, в cvs они как бы в diff  лежат.
-----------------------------------
Только для ядра не получится

Abigor, 2008-01-31 в 4:23:25

И выкачивать придется вот столько
[abigor@webdes ~]$ du -sh /var/files/cvsupd
3,4G    /var/files/cvsupd
[abigor@webdes ~]$

artem, 2008-01-31 в 12:18:07

1 спасибо так пошло тока не пойму в чем отличие?
2 а если как-то файл /usr/local/etc/cvsup/supfile
подправить на выкачку тока портов?
3 По поводу прав доступа согласно man cvsupd
прописать /usr/local/etc/cvsup/cvsupd.acces :
-10.0.0/24    9 # разрешить 9 коннектов на сетку
-10.0.0/24/32 3 #разрешить по 3 коннекта на хост в этой сети

Abigor, 2008-02-01 в 2:59:26

очень плохо, что не понимаешь, загляни в скрипт, он перед запуском определяет переменную prefix, если она не равна /usr/local/etc/cvsup то скрипт стреляется.

Morty, 2008-03-31 в 14:05:17

класный порт, сделал себе зеркало исходников, портов, +сам сайт, жаль только при поиске по портам перебрасывает на офф, а не на зеркалируемом сайте а так - супер

Leo, 2008-08-11 в 4:59:19

Чтобы чуть меньше качать и обновлять можно выкинуть лишние "языки"
%cat /usr/local/etc/cvsup/sup.client/refuse
doc/bn_*
doc/da_*
doc/de_*
doc/el_*
doc/es*
doc/fr_*
doc/hu_*
doc/id_*
doc/it_*
doc/ja*
doc/mn_*
doc/nl_*
doc/no_*
doc/pl_*
doc/pt_*
doc/ro_*
doc/sr_*
doc/tr_*
doc/zh*
ports/arabic*
ports/chinese*
ports/french*
ports/german*
ports/hebrew*
ports/hungarian*
ports/japanese*
ports/korean*
ports/polish*
ports/portuguese*
ports/ukrainian*
ports/vietnamese*

kkk, 2009-08-13 в 13:31:08

И намного меньше получится? Как ещё можно уменьшить объём скачиваемого? Просто уж 3 гига как-то многовато.

abigor, 2009-08-13 в 14:32:12

А вы возможно не там ищите экономии. Вот у меня больше 10 серверов с FreeBSD и если каждый будет хоть раз в неделю будет обновлять ports и раз в месяц src до трафика получается куда больше. Чем один раз стянуть 3,5 гига. А далее лишь изменения. Потом эти все сервера тянут все с внутреннего cvsup зеркала. Вот тут присутствует экономия. А если сервера только два скажем. То смысла нету.

Genas2, 2009-11-26 в 20:39:14

Было бы интересно посмотреть листинг /usr/local/etc/cvsup.conf (:

Al, 2009-11-27 в 8:20:50

>Было бы интересно посмотреть листинг /usr/local/etc/cvsup.conf (:
А ты сначала сам этот файл найди...



 

  Этот информационный блок появился по той простой причине, что многие считают нормальным, брать чужую информацию не уведомляя автора (что не так страшно), и не оставляя линк на оригинал и автора — что более существенно. Я не против распространения информации — только за. Только условие простое — извольте подписывать автора, и оставлять линк на оригинальную страницу в виде прямой, активной, нескриптовой, незакрытой от индексирования, и не запрещенной для следования роботов ссылки.
  Если соизволите поставить автора в известность — то вообще почёт вам и уважение.

© lissyara 2006-10-24 08:47 MSK

Время генерации страницы 0.0412 секунд
Из них PHP: 31%; SQL: 69%; Число SQL-запросов: 77 шт.
Исходный размер: 38717; Сжатая: 9304