gem cannot access rubygems.org
我有一台带有Rackspace的服务器,可用于一些Ruby站点。 当我在新站点上尝试bundle install时,我得到
1
| 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我得到
1 2
| 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?
-
我有同样的问题,正在考虑牺牲动物。
-
IPv6本地链接仅适用于Ubuntu 18.04
-
看到这里:github.com/rubygems/rubygems/issues/2253
api.rubygems.org当前在IPv6设置方面遇到问题:此主机名有4个IPv6地址,但都不响应。 ping或TCP连接尝试均无效。当您运行gem时,您的gem首先尝试使用IPv6地址,然后对其超时,甚至没有时间尝试使用IPv4地址。
解决方案是降低api.rubygems.org的IPv6地址的优先级,以便gem将首先尝试IPv4地址。为此,请将这些行放入/etc/gai.conf中:
1 2 3 4 5 6 7 8 9
| # 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 |
-
阿列克谢,这解决了。非常感谢您的帮助!
-
通过以下讨论找到了这个答案:help.rubygems.org/discussions/problems/31074-timeout-error,对于其他人来说可能很有用。无论如何,谢谢您的解决方案,Alex为我节省了很多时间。
-
还没有在服务器上修复它,我是否需要重新启动任何服务才能使此更改生效?
-
在大多数情况下,您无需重新启动任何程序。通过getaddrinfo()进行的下一个DNS解析将使用新设置。但是,如果您的服务缓存了已解析的IP地址,则可能需要重新启动。
-
2018年11月,这仍然有效。 Rubygems.org实际上应该只是将ipv6地址从DNS中拉出,直到他们弄清楚了。
-
是否有OSX的等效修复程序?我没有看到etcgai.conf文件。
-
2019年5月,这仍然有效。请修复您的ipv6,rubygems!
-
@AlexeiKhlebnikov您的回答挽救了我的邻居狗的性命(我打算将其作为牺牲品提供)。谢谢!
-
Fedora 30,文件/etc/gai.conf不存在,我找不到关于此的任何信息,因此我成功使用了/ etc / hosts方法
-
我今天才开始遇到这个问题。幸运的是,截至2019年8月10日,我能够迅速找到该线程并可以确认这仍然是可行的解决方案。
-
这仍然是2019年9月27日的问题。此答案仍然有效。
-
2020年2月,此解决方案仍然有效!请红宝石,修复它!
-
经过几天的搜索和尝试解决方案,这解决了我的问题。不能相信这仍然没有解决。感谢您的解决方法!
-
为我省去了很多时间来摆弄我的系统设置,或者省去了直接安装apt的麻烦。谢谢!!!
-
@AlexeiKhlebnikov谢谢救主!!!像魅力一样工作! <3
-
2020年7月,此解决方案对我有所帮助。 @AlexeiKhlebnikov您是怎么想到这个的?
-
我用ping,traceroute,telnet和nmap诊断了问题。在此之前,我阅读了有关IPv6,Happy Eyeballs,RFC 3484和6724以及有关getaddrinfo(),gai.conf等的文档的文章。一旦我在浏览器中实现了Happy Eyeballs。因此,我仅具有一些有关联网的技术知识,并用它来帮助自己和他人。 :)
我在MacOS上没有找到/etc/gai.conf,所以作为一种解决方法,我只是禁用了IPV6来下载gem。那对我有用。
"系统偏好设置"->"网络"->选择WiFi->单击"高级"按钮->选择" TCP / IP"选项卡->将"配置IPV6"设置为"仅本地链接"。
-
在搜寻Fetching source index from https:rubygems.org和Network error while fetching https:rubygems.orgquickMarshal.4.8libv8-3.16.14.19-x86_ 64-darwin-16.gemspec .rz (execution expired)大约一个小时后,我发现运气不好。很简单,但这确实很痛苦。保留这些关键字以帮助其他人进行搜索。
-
这对我有用。这是否意味着IPV6已禁用?这会影响其他站点或服务吗?
-
Fedora 30,文件etcgai.conf不存在,我找不到与此相关的任何信息,因此我成功使用了/ etc / hosts方法
我将以下行添加到我的/ etc / hosts中,它可以工作。
151.101.192.70 rubygems.org
-
那条线对我不起作用,但是151.101.192.70 api.rubygems.org做到了
到目前为止,rubygems.org的IPv6问题仍然存在,尽管它似乎并非一直存在或无处不在。我在一个数据中心的VPS中遇到了这个问题,但在另一个数据中心中却没有。到目前为止,Alexei Khlebnikov的答案是解决该问题的最佳和最简便的方法(至少在Linux上如此)。但是,请确保对api.rubygems.org IPv6地址进行自己的查找。我发现上面的特定地址不再正确。
1 2 3 4 5 6
| $ dig AAAA api.rubygems.org +short
rubygems.org.
2a04:4e42::70
2a04:4e42:400::70
2a04:4e42:600::70
2a04:4e42:200::70 |
-
感谢您的客气话和api.rubygems.org更改其IP地址的发现。我已经更新了我的答案,以取消整个2a04:4e42 :: 0/32子网的优先级。
至少在2020年1月,这仍然是我的问题。
我在上面使用了铃木孝之的解决方案,它对我有用。
对于Windows用户,可以通过在IPv6上优先设置IPv4地址来解决该问题(请参阅https://superuser.com/a/436944)。通过使用PowerShell作为管理员来检查前缀策略:
1
| netsh interface ipv6 show prefixpolicies |
您应该看到IPv6地址(:: / 0)的优先级高于IPv4(:: / 96和:: ffff:0:0/96)。要解决此问题,请删除IPv6条目,然后以较低的优先级重新添加它,例如:
1 2
| netsh interface ipv6 del prefixpolicy ::/0
netsh interface ipv6 add prefixpolicy ::/0 3 6 |
我的机器上的优先级3低于所有其他机器,并且标签6未被使用。