gem无法访问rubygems.org

mrt*_*tle 21 rubygems debian-jessie

我有一个带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)
Run Code Online (Sandbox Code Playgroud)

或者gem update --system我试着

ERROR:  While executing gem ... (Gem::RemoteFetcher::UnknownHostError)
timed out (http://api.rubygems.org/specs.4.8.gz)
Run Code Online (Sandbox Code Playgroud)

我尝试过的:

  • 使用curl在第一个错误中下载gem URL(成功)
  • 将gem源从https://rubygems.org更改为http://rubygems.org
  • 更改切片上的名称服务器以使用Google
  • gem从源代码下载和更新(在2.7.6上)
  • apt-get update
  • 添加 AddTrustExternalCARoot-2048.pem

我没有尝试过:

  • 动物牺牲
  • 幸运兔脚
  • 删除所有文件并重新安装图像

我终于(在提交之前)能够bundle install通过删除rubygems.org作为源并添加https://gems.ruby-china.org/来开始工作.为什么gem无法访问rubygems.org?

Ale*_*kov 39

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
Run Code Online (Sandbox Code Playgroud)

  • 2020 年 2 月,这个解决方案仍然有效!请 ruby​​gems 修复它! (9认同)
  • 2018年11月,这仍然有效.Rubygems.org应该只是将ipv6地址从DNS中拉出来,直到它们理顺它们为止. (6认同)
  • 2021 年 2 月 5 日,这解决了我的问题:) (4认同)
  • 是否有OSX的等效修复程序?我没有看到`/ etc / gai.conf`文件。 (2认同)
  • 2019年5月,这仍然有效。请修复您的ipv6,rubygems! (2认同)
  • 经过几天的搜索和尝试解决方案,这解决了我的问题。不敢相信这个问题还没有得到解决。感谢您的解决方法! (2认同)
  • 2021 年 4 月 21 日,在 Ubuntu 20.03 上,这对我有用。 (2认同)
  • 2021 年 4 月 21 日,仍在使用内核“Linux 5.11.0-7612-generic”开发“Pop!_OS 20.04 LTS (x86-64)”。只是提一下,在我的安装中,“/etc/gai.conf”文件被完全注释了。只需添加最后一行 `precedence 2a04:4e42::0/32 5` 就可以了。 (2认同)
  • 2021.06.29 哇,仍在修复 Ubuntu 20.04 上的问题。此外,该文件已完全注释 (2认同)
  • 这在 2021 年 8 月 20 日仍然是一个问题,答案在 Ubuntu 20.04.2 上修复了它 (2认同)

Mau*_*cio 20

我没有/etc/gai.conf在MacOS上找到,所以作为一种解决方法我只是禁用了IPV6来下载宝石.这对我有用.

'系统偏好设置' - >'网络' - >选择WiFi - >单击'高级'按钮 - >选择'TCP/IP'选项卡 - >将配置IPV6设置为'仅限链接本地'.

  • 大约一个小时后,我在搜索 `Fetching source index from https://rubygems.org/` 和 `Network error while fetching https://rubygems.org/quick/Marshal.4.8/libv8-3.16.14.19- x86_64-darwin-16.gemspec.rz(执行已过期)` 没有运气。如此简单,但这真的很痛苦。留下这些关键字以帮助其他人进行搜索。 (4认同)
  • 这对我有用。这是否意味着IPV6已被禁用?这会影响其他网站或服务吗? (2认同)

小智 9

I added the line below to my /etc/hosts and it works.

151.101.192.70 rubygems.org

  • 那条线对我不起作用,但 151.101.192.70 api.rubygems.org 做到了 (7认同)

dei*_*vid 7

对于遇到此问题的每个人,从 ruby​​gems 3.2.11 开始,我们现在在 ruby​​gems 中发布了针对此问题的选择加入修复程序。

如果您遇到此问题,首先需要将 ruby​​gems 升级到至少 3.2.11。通常你通过运行来做到这一点gem update --system,但在运行该命令时很可能会遇到同样的问题。如果是这种情况,您可以按照以下说明手动升级 ruby​​gems:https : //bundler.io/v2.2/guides/rubygems_tls_ssl_troubleshooting_guide.html#updating-rubygems

升级后,放

:ipv4_fallback_enabled: true
Run Code Online (Sandbox Code Playgroud)

在您的~/.gemrc文件中,rubygems 不应再超时。

我们还没有默认启用它的原因是这需要monkeypatching 核心ruby 类,所以我们想先对修复战进行一些测试。而且,因为潜在的问题是 ruby​​ 中的一个问题,它目前缺乏一个令人愉快的眼球实现,但目前正在处理中,所以如果这个修复很快在 ruby​​ 中出现,我们可能根本不需要默认启用我们的monkeypatches。

作为参考,修复程序在此处登陆我们的 repo:https : //github.com/rubygems/rubygems/pull/2662,并且 ruby​​ 问题正在此处处理:https : //github.com/ruby/ruby/pull /4038