gem не может получить доступ rubygems.org
у меня есть сервер с Rackspace, который я использую для нескольких сайтов Ruby. Когда я пытаюсь bundle install
на новом сайте я получаю
Retrying download gem from http://rubygems.org/ due to error (2/4): Gem::RemoteFetcher::UnknownHostError timed out (http://rubygems.org/gems/rake-12.3.1.gem)
или пытаются gem update --system
Я
ERROR: While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
timed out (http://api.rubygems.org/specs.4.8.gz)
что я пробовал:
- использование curl для загрузки GEM URL в первой ошибке (успешно)
- изменить исходный гем от https://rubygems.org до http://rubygems.org
- измените серверы имен на срезе для использования Google
- загрузка и обновление
gem
из источника (на 2.7.6) - Run
apt-get update
- добавлять
AddTrustExternalCARoot-2048.pem
чего я не пробовал:
- жертву животных
- счастливая кроличья лапка
- удаление всех файлов и переустановка изображения
я, наконец, (как раз перед отправкой этого) смог получить bundle install
работать путем извлекать rubygems.org как источник и добавление https://gems.ruby-china.org/. Почему gem не может получить доступ rubygems.org?
4 ответов
api.rubygems.org
в настоящее время возникают проблемы с настройкой IPv6: это имя хоста имеет 4 адреса IPv6, но не отвечает ни на один из них. Ни ping
, ни к попыткам подключения TCP. Когда вы используете gem
ваш gem
сначала пробует IPv6-адреса и тайм-аут на них, не имея времени даже попробовать IPv4-адреса.
решение состоит в том, чтобы снизить приоритет IPv6-адресов для api.rubygems.org
, Так что gem
сначала попробуем IPv4-адреса. Для того, чтобы сделать это, положите эти строки в /etc/gai.conf
:
# Debian defaults.
precedence ::1/128 50
precedence ::/0 40
precedence 2002::/16 30
precedence ::/96 20
precedence ::ffff:0:0/96 10
# Low precedence for api.rubygems.org IPv6 addresses.
precedence 2a04:4e42::0/32 5
Я не нашел /etc/gai.conf
на MacOS, так что в качестве обходного пути я просто отключил IPV6 для загрузки драгоценных камней. Это сработало для меня.
"Системные настройки" - > "Сеть" - > выберите WiFi - > нажмите кнопку "Дополнительно" - > выберите вкладку "TCP/IP" - > установите Configure IPV6 выберите "link-local only".
на эту дату проблемы IPv6 с rubygems.org все еще существуют, хотя кажется, что не все время и не везде. Я столкнулся с ним с VPSs в одном дата-центре, но не в другом. Ответ Алексея Хлебникова выше-это, безусловно, лучший и самый простой способ обойти проблему (по крайней мере, в Linux). Тем не менее, не забудьте сделать свой собственный поиск для api.rubygems.org адреса IPv6; я обнаружил, что конкретные адреса выше больше не являются правильными.
$ dig AAAA api.rubygems.org +short
rubygems.org.
2a04:4e42::70
2a04:4e42:400::70
2a04:4e42:600::70
2a04:4e42:200::70
для пользователей Windows проблема может быть решена путем приоритизации IPv4-адресов над IPv6 (см.https://superuser.com/a/436944). Проверьте политики префиксов с помощью PowerShell в качестве администратора:
netsh interface ipv6 show prefixpolicies
вы должны видеть, что адреса IPv6 (::/0) имеют более высокий приоритет над IPv4 (::/96 и ::ffff:0:0/96). Чтобы исправить это, удалите запись IPv6 и повторно добавьте ее с более низким приоритетом, например:
netsh interface ipv6 del prefixpolicy ::/0
netsh interface ipv6 add prefixpolicy ::/0 3 6
где приоритет 3 на моей машине был ниже, чем все остальные, и ярлык 6 не использовался.