连接被拒绝 RubyGems

Connection Refused RubyGems

我目前正在尝试安装 gem gem install micromidi。每当我从终端 运行 它时,我都会收到此错误:

ERROR:  Could not find a valid gem 'micromidi' (>= 0), here is why:
          Unable to download data from https://rubygems.org/ - Errno::ECONNREFUSED: Connection refused - connect(2) for "rubygems.global.ssl.fastly.net" port 443 (https://api.rubygems.org/latest_specs.4.8.gz)

我没有使用代理,而且我有互联网连接。我以前安装过 gems,从来没有遇到过问题。出了什么问题,我该如何解决?

最近有一些关于 ssl 的提交合并并提到了 "fastly",例如对 repo 的搜索:https://github.com/rubygems/rubygems/search?o=desc&q=fastly&s=created&type=Issues

此外,2.6.3 / 2016-04-05 […] New fastly cert. Pull request #1548 by David Radcliffe 参见:https://github.com/rubygems/rubygems/blob/ccb9c3300c063f5b5656669972d24a10ef8afbf5/History.txt#L63


回答

我建议通过 https://rubygems.org/pages/download 手动更新到 RubyGems v2.6.6 - 2016 年 6 月 22 日 :

If you don't have any RubyGems installed, there is still the pre-gem approach to getting software, doing it manually:

  1. Download from above
  2. Unpack into a directory and cd there
  3. Install with: ruby setup.rb (you may need admin/root privilege)

资源

如果上述方法不能解决问题,这里有一些额外的资源:

Step 1: Obtain the new trust certificate

[…]

We need to download AddTrustExternalCARoot-2048.pem[ https://raw.githubusercontent.com/rubygems/rubygems/master/lib/rubygems/ssl_certs/AddTrustExternalCARoot-2048.pem ]

Use the above link and place/save this file somewhere you can later find easily (eg. your Desktop).

IMPORTANT: File must have .pem as extension. Browsers like Chrome will try to save it as plain text file. Ensure you change the filename to have .pem in it after you have downloaded it.

Step 2: Locate RubyGems certificate directory in your installation

In order for us copy this file, we need to know where to put it.

Depending on where you installed Ruby, the directory will be different.

Take for example the default installation of Ruby 2.1.5, placed in C:\Ruby21

Open a Command Prompt and type in:

C:\>gem which ruby gems
C:/Ruby21/lib/ruby/2.1.0/rubygems.rb

Now, let's locate that directory. From within the same window, enter the path part up to the file extension, but using backslashes instead:

C:\>start C:\Ruby21\lib\ruby.1.0\rubygems

This will open a Explorer window inside the directory we indicated.

Step 3: Copy new trust certificate

Now, locate ssl_certs directory and copy the .pem file we obtained from previous step inside.

It will be listed with other files like GeoTrustGlobalCA.pem.