いくつかの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)
私が試したもの:
gem
のダウンロードと更新(2.7.6)apt-get update
を実行しますAddTrustExternalCARoot-2048.pem
を追加私が試したことがないもの:
最終的に(これを提出する直前に)rubygems.orgをソースとして削除し、 https://gems.Ruby-china.org/ を追加することで、bundle install
を機能させることができました。 gemがrubygems.orgにアクセスできないのはなぜですか?
MacOSで/etc/gai.conf
が見つからなかったため、回避策として、gemをダウンロードするためにIPV6を無効にしました。それは私のために働いた。
「システム環境設定」->「ネットワーク」-> WiFiの選択->「詳細」ボタンをクリック->「TCP/IP」タブの選択->「IPV6の構成」選択を「リンクローカルのみ」に設定します。
/ etc/hostsに以下の行を追加しましたが、動作します。
151.101.192.70 rubygems.org
この日付の時点で、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
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は使用されていません。