Warm tip: This article is reproduced from serverfault.com, please click

debian jessie-gem 无法访问 ruby​​gems.org

(debian jessie - gem cannot access rubygems.org)

发布于 2018-04-12 15:27:07

我有一个带有 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(成功)
  • 将 gem 源从https://rubygems.org更改http://rubygems.org
  • 更改切片上的名称服务器以使用 Google 的
  • gem从源下载和更新(在 2.7.6 上)
  • 跑步 apt-get update
  • 添加 AddTrustExternalCARoot-2048.pem

我没试过的:

  • 动物祭祀
  • 幸运兔脚
  • 删除所有文件并重新安装映像

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

Questioner
mrturtle
Viewed
0
Alexei Khlebnikov 2018-09-14 21:11:17

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