Если вы часто обновляете исходники или порты (может быть вас не устраивает portsnap и вы хотите это делать через cvs), то вам будет полезна эта статья. Она рассказывает, о том, как можно каждый раз выбирать сервер обновлений, причём тот, который “ближе” именно к вам, то есть скорость до него найбольшая, среди всех возможных. Это поможет сделать утилита fastest_cvsup, которая находится в портах. По своей сути это простой скрипт на языке perl, который в случае необходимост можно изменить под себя. Ну что, ставим её:
#cd /usr/ports/sysutils/fastest_cvsup && make install clean
Появляется окошко в котором выбираем опцию
[x] ROUNDTRIP "Build with round-trip patch"
После установки можно протестировать её. Для этого запустим её с параметром ‘ua’ (код вашей страны)
$fastest_cvsup -c ua
>> Querying servers in countries: ua
--> Connecting to cvsup.ua.freebsd.org [83.218.232.71]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 12.03 ms
--> Connecting to cvsup2.ua.freebsd.org [62.244.55.197]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 4.63 ms
--> Connecting to cvsup3.ua.freebsd.org [212.42.64.9]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 4.88 ms
--> Connecting to cvsup4.ua.freebsd.org [82.193.96.50]...
* error: connect: timeout
--> Connecting to cvsup5.ua.freebsd.org [213.186.196.224]...
* error: connect: timeout
--> Connecting to cvsup6.ua.freebsd.org [62.149.2.9]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 4.52 ms
--> Connecting to cvsup7.ua.freebsd.org [213.186.196.224]...
* error: connect: timeout
--> Connecting to cvsup8.ua.freebsd.org [83.218.232.71]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 4.22 ms
--> Connecting to cvsup9.ua.freebsd.org [80.249.224.11]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 14.44 ms
--> Connecting to cvsup10.ua.freebsd.org [78.152.160.14]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 16.13 ms
--> Connecting to cvsup11.ua.freebsd.org [217.20.163.35]...
- server replied: OK 17 0 SNAP_16_1h CVSup server ready
- time taken: 4.13 ms
>> Speed Daemons:
- 1st: cvsup11.ua.freebsd.org 4.13 ms
- 2st: cvsup8.ua.freebsd.org 4.22 ms
- 3st: cvsup6.ua.freebsd.org 4.52 ms
Конечный результат говорит сам за себя. Теперь можно смело прописывать у себя этот сервер. Но! Каждый раз это делать весьма неудобно. Для этого я немного добавил функционала. Пример. Вы запускаете обновление следующей командой:
#csup /etc/csup.conf
Что бы обновляться через быстрое зеркало, пишем такое:
#csup -h `fastest_cvsup -c ua | grep '1st:' | awk '{print $3}'` /etc/csup.conf
Ключом ‘-h’ мы переопределяем тот хост, который указан в конфигурационном файле /etc/csup.conf. Либо можно пойти ещё дальше, создадим скрипт c названием fcsup:
#!/bin/sh
/usr/bin/csup -h `fastest_cvsup -c ua | grep '1st:' | awk '{print $3}'` /etc/csup.conf
Теперь осталось его положить, например, в /usr/local/bin/ и потом при надобности запускать так:
#fcsup
Как по мне, то стало намного удобнее.