28.04.2023 13:06
OlegON
 
Сегодня в очередной раз споткнулся о то, что обновление стало замедляться из-за кривого местного сервера.
Код:
Curl error (28): Timeout was reached for http://mirror.linux-ia64.org
Стал разбираться. Технология следующая, dnf стучится на mirrors, который по GeoIP отдает xml со списком зеркал. Соответственно, мне отдавал первым делом этот кривой сервер, который подводил меня уже не один раз.

Решение первое:
Внести mirrors.fedoraproject.org в адреса, которые получаются через VPN. Соответственно, mirrors будет видеть адрес выхода из VPN и даст другой список зеркал. Не регулируется толком никак, но, если у вас гора компов, а VPN рулится на рутере, это вариант.

Решение второе:
Среди старых документаций обратил внимание на совет попробовать присвоить mirrorlist еще один параметр. Сначала открыл
Код:
https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-38&arch=x86_64&country=ru
и, тадам-м, выяснилось, что в этом списке для России только одно зеркало, то самое, которое кривое.
Соответственно, решение - замена во всех .repo базовых зеркал строк вида
Код:
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch
на соответствующие строки (обратите внимание, что там название репозитория фигурирует), например,
Код:
mirrorlist=https://mirrors.fedoraproject.org/mirrorlist?repo=fedora-$releasever&arch=$basearch&country=ХХ
Но, как я понял, mirrorlist - устаревший подход, так что неизвестно, сколько он проработает. Страну, понятное дело, вместо ХХ укажите какую-то поближе к себе в двубуквенном обозначении, типа ru.

Решение третье:
Подумал я, а почему бы, собственно, не добавить параметр в metalink? Попробовал, внезапно, работает :)
Код:
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch&country=XX
Страну, понятное дело, вместо ХХ укажите какую-то поближе к себе в двубуквенном обозначении, типа ru. Проверьте, что лучше работает.
Сначала наивно предположил, что есть переменная $country, которая у меня задана в dnf.conf, но, увы, она не работает. Видимо, надо хардкодить в нескольких местах. Если кто-то знает, как задать где-то в конфиге dnf эту переменную - прошу поделиться.
28.04.2023 13:33
OlegON
 
Нашел, как менять страну, для этого достаточно задать переменную с префиксом, то есть, например, пишете в конфиг
Код:
metalink=https://mirrors.fedoraproject.org/metalink?repo=fedora-$releasever&arch=$basearch&country=OKCNT
и запускаете, задав переменную DNF_VAR_OKCNT, глобально или в самой команде
Код:
DNF_VAR_OKCNT=ch dnf --refresh upgrade
Часовой пояс GMT +3, время: 09:36.

Форум на базе vBulletin®
Copyright © Jelsoft Enterprises Ltd.
В случае заимствования информации гипертекстовая индексируемая ссылка на Форум обязательна.