web-dev-qa-db-ja.com

gemはrubygems.orgにアクセスできません

いくつかのRubyサイトに使用するRackspaceのサーバーがあります。新しいサイトで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のダウンロード(成功)
  • Gemソースを https://rubygems.org から http://rubygems.org に変更します
  • Googleを使用するようにスライス上のネームサーバーを変更する
  • ソースからのgemのダウンロードと更新(2.7.6)
  • apt-get updateを実行します
  • AddTrustExternalCARoot-2048.pemを追加

私が試したことがないもの:

  • 動物の犠牲
  • ラッキーラビットフット
  • すべてのファイルを削除してイメージを再インストールする

最終的に(これを提出する直前に)rubygems.orgをソースとして削除し、 https://gems.Ruby-china.org/ を追加することで、bundle installを機能させることができました。 gemがrubygems.orgにアクセスできないのはなぜですか?

20
mrturtle

MacOSで/etc/gai.confが見つからなかったため、回避策として、gemをダウンロードするためにIPV6を無効にしました。それは私のために働いた。

「システム環境設定」->「ネットワーク」-> WiFiの選択->「詳細」ボタンをクリック->「TCP/IP」タブの選択->「IPV6の構成」選択を「リンクローカルのみ」に設定します。

18
Mauricio

/ etc/hostsに以下の行を追加しましたが、動作します。

151.101.192.70 rubygems.org

4
Takayuki Suzuki

この日付の時点で、rubygems.orgのIPv6の問題は依然として存在しますが、常にまたはどこでもそうではないようです。あるデータセンターのVPSで実行されましたが、別のデータセンターのVPSでは実行されませんでした。上記のAlexei Khlebnikovの答えは、この問題を回避するための最良かつ最も簡単な方法です(少なくとも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
3
bpope

Windowsユーザーの場合、IPv6よりもIPv4アドレスを優先することで問題を解決できます( 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は使用されていません。

0
Boon