Зеркала бинарных пакетов

download.jpg

Выбор зеркала бинарных пакетов

Как известно, в Calculate Linux 15 был полностью переработан механизм обновления системы. Утилита cl-update делает запрос к выбранному зеркалу бинарных пакетов, считывая с него тэги версий портежей и оверлеев. После чего, по необходимости, делает запрос к Git для синхронизации портежей. Благодаря такому подходу появилась возможность задействовать все доступные бинарные зеркала. Второй немаловажный момент заключается в том, что утилиты могут определить наиболее быстрое зеркало, а так же, в случае, если зеркало перестаёт обновляться, утилиты произведут поиск другого, наиболее быстрого, зеркала. Подобный подход повысил отказоустойчивость системы и ускорил обновления, причём снизив не только время загрузки, но и время повторного запроса на обновление, когда на сервере ещё не появились новые пакеты.

В недавних обновлениях утилит Calculate процесс выбора зеркал был оптимизирован. Выбор наиболее быстрого зеркала теперь производится не среди зеркал, содержащих последнюю версию обновления, а среди всех зеркал, при условии, что обновление зеркала было выполнено не позднее, чем 5 суток назад и в момент запроса на зеркале не производилось обновления. Так же зеркало не должно иметь более старую версию пакетов, чем используемая в системе.

Сканирование зеркал выполняется в момент установки системы в случае, если на зеркале отсутствуют обновления в течение 5 суток и более, либо при выполнении “cl-update --sync”. Опция доступна так же в графической консоли утилит в дополнительных настройках раздела обновления системы и носит название “Искать наиболее подходящий сервер обновлений”.

update.png

Начиная с версии утилит Calculate 3.4.5.7 можно посмотреть лог определения наиболее подходящего сервера обновлений в файле /var/log/calculate/binhost-scan.log Пример:

Started scan on: Tue Dec 22 20:51:24 2015, current timestamp: 1450799082
ftp://ftp.sai.msu.su/pub/Linux/calculate                     0.137   1450711501 SKIP
ftp://ftp.linux.kiev.ua/calculate                            0.243   1450711501 SKIP
ftp://ftp.mtu.ru/pub/calculate-linux                         0.251   1450799082 
http://mirror.cnet.kz/calculate                              0.27    1450799082 
ftp://ftp.mgts.by/pub/calculate                              0.341   1450711501 SKIP
http://mirror.umd.edu/calculate                              0.4     1450770764 SKIP
http://calculate.mirror.garr.it/mirrors/calculate            0.755   1450711501 SKIP
ftp://ftp.download.asso-linux-online.fr/download/calculate   0.933   1450711501 SKIP
ftp://ftp.calculate.bks-tv.ru/calculate                      0.361   1450367787 OUTDATED

Первой строкой выводится дата и время сканирования, а так же метка текущего обновления. Далее следует список зеркал, отсортированный в порядке времени доступа, за исключением устарелых зеркал. В первом столбце идёт адрес, далее время доступа, вычисляемое путём запроса на скачивание определённых файлов, затем время модификации зеркала. Четвёртым полем идёт условное обозначение, в котором:

  • SKIP - зеркало пропущено, по причине использования более старой версии пакетов.
  • UPDATING - в момент обращения к зеркалу, в нём производилось обновление.
  • OUTDATED - пакеты на зеркале не обновлялись более 5 суток.

Из лога видно, что система находится в актуальном состоянии, поэтому более быстрые для данного интернет-подключения, но не обновлённые до последней версии зеркала были пропущены. Надо сказать, что разница между выбранным зеркалом ftp.mtu.ru оказалась заметной перед самым быстрым и ещё более заметным, перед наиболее удалённым территориально ftp.download.asso-linux-online.fr.

Можно сделать вывод, что для выбора наиболее быстрого зеркала, сканирование лучше проводить чем через несколько часов после последнего обновления. Учитывая то, что большинство зеркал обновляются 1-2 раза в сутки, приведённый результат сканирования с множеством SKIP выглядит вполне логичным.

И ещё. Время обновления пакетов считывается из файла /timestamp, находящемся в корне зеркала. Для ускорения сканирования, процесс обновления (UPDATING) определяется не для всех зеркал, т.к. может быть получен только при попытке получить с зеркала дополнительную информацию. Факт обновления (UPDATING) определяется при разнице в значениях тэгов в файлах /grp/default/ini.env, /grp/kde/ini.env, /grp/server/ini.env и /grp/x/ini.env.

Локальное зеркало бинарных пакетов

Список доступных зеркал бинарных пакетов находится в переменной cl_update_binhost_list. Её содержимое можно получить выполнив cl-core-variables-show --filter cl_update_binhost_list

 * Список переменных
+-----------------------------+-----+------------+-------------------------------------------------------------------------------------------------------------------------------------------+
|Переменная                   |Режим|Расположение|Значение                                                                                                                                   |
+-----------------------------+-----+------------+-------------------------------------------------------------------------------------------------------------------------------------------+
|update.cl_update_binhost_list| wl  |            |ftp://ftp.mgts.by/pub/calculate,http://calculate.mirror.garr.it/mirrors/calculate,http://mirror.cnet.kz/calculate,ftp://ftp.calculate.bks-t|
|                             |     |            |v.ru/calculate,ftp://ftp.mtu.ru/pub/calculate-linux,ftp://ftp.sai.msu.su/pub/Linux/calculate,http://mirror.umd.edu/calculate,ftp://ftp.linu|
|                             |     |            |x.kiev.ua/calculate,ftp://ftp.download.asso-linux-online.fr/download/calculate                                                             |
+-----------------------------+-----+------------+-------------------------------------------------------------------------------------------------------------------------------------------+

Значение переменной заполняется в оверлее Calculate в файле /var/lib/layman/calculate/profiles/calculate.env

Используемое зеркало прописывается в переменной cl_update_binhost в файле /etc/calculate/calculate.env. Во время обновления портежей пересоздаётся файл /etc/portage/make.conf/binhost, в котором прописывается переменная PORTAGE_BINHOST содержащая пути бинарного зеркала. В заголовке файла прописан путь к сформировавшему его шаблону. Ради интереса вы можете посмотреть. Прописываются два пути для охвата пакетов, собранных в разных окружениях в т.ч. с разными USE флагами.

Чтобы поднять зеркало бинарных пакетов в своей локальной сети, достаточно периодически синхронизировать используя rsync с одного из зеркал его копию и прописать адрес локального зеркала в переменную cl_update_binhost например в файле /var/calculate/remote/calculate.env следующим образом:

[update]
cl_update_binhost = ftp://192.168.0.1/pub/calculate

После этого, вызов cl-update будет сводиться к тому, что утилиты сверят версию пакетов и в случае необходимости обновят дерево портежей и оверлеев из Git, после чего проверят на обновление, получая бинарные пакеты из локального зеркала.