Категорії
FreeBSD

Самое быстрое обновление портов/пакетов.

Если вы часто обновляете исходники или порты (может быть вас не устраивает 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

Как по мне, то стало намного удобнее.

 

Аналогично существует и fastest_pkg (/usr/ports/ports-mgmt/fastest_pkg) для обновления пакетов. После установки ищем быстрый сервер. Определяем список имеющихся зеркал и их приоритеты:

$ dig +short _http._tcp.pkg.freebsd.org srv
50 10 80 pkg0.tuk.freebsd.org.
50 10 80 pkg0.nyi.freebsd.org.
50 10 80 pkg0.isc.freebsd.org.
50 10 80 pkg0.bme.freebsd.org.
50 10 80 pkg0.pkt.freebsd.org.
10 10 80 pkgmir.geo.freebsd.org.

и проверяем скорость

$ fastest_pkg
pkg0.nyi.freebsd.org: 447.1 kB/s
pkg0.isc.freebsd.org: 0.0 B/s
pkg0.bme.freebsd.org: 18.4 kB/s
pkg0.pkt.freebsd.org: 367.9 kB/s
pkg0.tuk.freebsd.org: 81.6 kB/s

Как видим, pkg0.nyi.freebsd.org – имеет наилучший результат. И вписываем новую конфигурацию в /usr/local/etc/pkg/repos/FreeBSD.conf (если файл или папка не существует – создайте)

FreeBSD: { url: "http://pkg0.nyi.freebsd.org/${ABI}/latest" }

Залишити відповідь

Ваша e-mail адреса не оприлюднюватиметься. Обов’язкові поля позначені *

Домашняя страничка Andy
Записки молодого админа
Самостоятельная подготовка к Cisco CCNA
Самостоятельная подготовка к Cisco CCNP