LINUX.ORG.RU

Оптимизация списка зеркал (Arch).

 , ,


0

1

До этого дня просто копировал российские зеркала в начало списка, но в последнее время скорость установки пакетов упала до неприличия и я решил список оптимизировать и воткнуть суточный таймер в systemd. Поковырял reflector, но он какой-то медленный, формирует список 20 минут. Набашил себе деревянный велосипед, который пингует по списку и сортирует по среднему значению скорости. В сетях вообще не разбираюсь, мой уровень - роутер настроить. Поэтому вопрос: правильно ли ориентироваться именно на этот параметр? Или есть что-то более подходящее, что позволит за минут пять получить более оптимальный список?

Скрипт:

#!/bin/bash
 
#cкачиваем списoк зеркал и убираем лишние строки
 curl -s "https://archlinux.org/mirrorlist/?country=all&protocol=https" | grep Server >> mirrorlist_all
 
#считаем количество строк для вывода
 NUMBER_OF_LINES=$(wc -l mirrorlist_all)
 
#разделитель меняем на символ перевода строки, чтоб цикл читал всю строку
 IFS="
 "
#построчно обрабатываем список
 for LINE in $(cat mirrorlist_all); do
    #счётчик строк
    COUNT=$((${COUNT} + 1))
    #вытаскиваем адрес из строки
    URL=$(echo ${LINE} | sed 's|^.*:\/\/||; s|\/.*$||')
    #пингуем ссылку и вытаскиваем из результата среднее значение
    PING="$(ping -q -w 1 -i 0.2 "${URL}" | sed "1,4d; s|.*\/\(.*\)\/.*\/.*$|\1|")"
    #для наглядности выводим порядковый номер, результат пинга и адрес сервера
    echo "${COUNT}/${NUMBER_OF_LINES%% *} ${PING} ${URL}"
    #вставляем результат пинга в начало строки в списке
    sed "${COUNT}!d; s|^\(.*\)$|${PING} \1|" mirrorlist_all >> ping_list
done
 
#сортируем по скорости, убираем молчащие сервера и формируем итоговый список
sort -n ping_list | sed "/^ /d; s|^.*Server = |Server = |" > mirrorlist_all
 
#копируем список в систему
#cp mirrorlist_all /etc/pacman.d/mirrorlist

#убираем за собой
#rm -rf mirrorlist_all ping_list

А ты что где то а Африке живешь что так упала скорость? Сижу на марже и как то не замечаю этого.

dumauz ★★
()
Ответ на: комментарий от basarga

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

dumauz ★★
()
Ответ на: комментарий от basarga

правильно ли ориентироваться именно на этот параметр?

На этот вопрос. Пинг это про latency, а не скорость.

ox55ff ★★★★★
()
Ответ на: комментарий от xDShot

Спасибо, нашёл. mirrorlist-manager, есть в aur. Он графический и отожрёт 200+ метров. Я уж лучше скриптом как-нибудь.

basarga
() автор топика
Ответ на: комментарий от basarga

Нет, у нас есть консольные утилиты pacman-mirrors (старая на Python) и shiny-mirrors (новая на Rust), но скорее всего без изменений исходников они не будут работать с Arch.

LordTermor ★★
()
Последнее исправление: LordTermor (всего исправлений: 1)
Ответ на: комментарий от basarga

Скачиванием пакета с этого сервера. Как ещё.

ox55ff ★★★★★
()
Ответ на: комментарий от basarga

Это не то. Тулза помню была консольная.

xDShot ★★★★★
()

Поковырял reflector, но он какой-то медленный, формирует список 20 минут

Может что то делаешь не так? Пользуюсь рефлектором, когда плохо работают зеркала. Занимает около полторы минуты времени.

sudo reflector –verbose –latest 20 –protocol https –sort rate –save /etc/pacman.d/mirrorlist

sergio1204 ★★★
()

Как-то так же можно было:

pacman-mirrors --fasttrack 10 && sudo pacman -Syyu

Linuxman
()

По три месяца примерно зеркала не обновляю. Уже где-то лет 5. Пользуюсь mirror list generator на сайте. Все работает. А со скоростью в последнее время правда нестабильно.

Jeronimo ★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.