"gem install rails"失败并显示 DNS 错误


$ rvm use
Using /home/owner/.rvm/gems/ruby-2.1.2
$ gem install rails
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.network" port 80 (http://your-dns-needs-immediate-attention.network/quick/Marshal.4.8/thread_safe-0.3.4.gemspec.rz)
$ gem update --system
...
$ gem -v
2.4.1
$ gem install rails
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.network" port 80 (http://your-dns-needs-immediate-attention.network/quick/Marshal.4.8/rails-4.1.5.gemspec.rz)

我尝试过:

  1. 安装其他 gem(设计、活动记录(。我得到同样的错误。
  2. 重新安装 RVM
  3. 跑步gem update --system
  4. 将静态 DNS 设置为 Google 的 8.8.8.8 和 8.8.4.4
  5. https://production.cf.rubygems.org添加为 Gem 源(错误见下文(
  6. 在我之前的 14.04 上安装 12.04。错误仍然存在。错误源必须在我的计算机之外。

有关我的连接的其他信息:

  1. 我可以通过浏览器连接到https://rubygems.org/
  2. 我的调制解调器防火墙已完全禁用。
  3. $ curl -v --head https://rubygems.org输出:http://pastebin.com/ca6DAvaU

My/etc/resolv.conf

$ cat /etc/resolv.co
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4
nameserver 75.75.75.75
search home.network

添加直接宝石源

参考: https://stackoverflow.com/a/19299266/3993020

owner@owner-Z87X-UD3H:~$ gem sources --add https://production.cf.rubygems.org
Error fetching https://production.cf.rubygems.org:
    Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.network" port 443 (https://your-dns-needs-immediate-attention.network/specs.4.8.gz)

gem install rails的其他调试信息

owner@owner-Z87X-UD3H:~$ gem install rails --debug -V
NOTE:  Debugging mode prints all exceptions even when rescued
Exception `LoadError' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/resolv.rb:169 - LoadError
HEAD https://api.rubygems.org/api/v1/dependencies
Exception `OpenSSL::SSL::SSLErrorWaitReadable' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/buffering.rb:182 - read would block
200 OK
GET https://api.rubygems.org/api/v1/dependencies?gems=rails
Exception `OpenSSL::SSL::SSLErrorWaitReadable' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/buffering.rb:182 - read would block
Exception `OpenSSL::SSL::SSLErrorWaitReadable' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/buffering.rb:182 - read would block
Exception `OpenSSL::SSL::SSLErrorWaitReadable' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/buffering.rb:182 - read would block
Exception `OpenSSL::SSL::SSLErrorWaitReadable' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/buffering.rb:182 - read would block
Exception `OpenSSL::SSL::SSLErrorWaitReadable' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/openssl/buffering.rb:182 - read would block
200 OK
Exception `Resolv::DNS::Config::NXDomain' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/resolv.rb:547 - _rubygems._tcp.api.rubygems.org
Exception `Errno::ECONNREFUSED' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/2.1.0/net/http.rb:879 - Connection refused - connect(2) for "your-dns-needs-immediate-attention.network" port 443
Exception `Gem::RemoteFetcher::FetchError' at /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/remote_fetcher.rb:286 - Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.network" port 443 (https://your-dns-needs-immediate-attention.network/quick/Marshal.4.8/rails-4.1.5.gemspec.rz)
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ECONNREFUSED: Connection refused - connect(2) for "your-dns-needs-immediate-attention.network" port 443 (https://your-dns-needs-immediate-attention.network/quick/Marshal.4.8/rails-4.1.5.gemspec.rz)
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/remote_fetcher.rb:286:in `rescue in fetch_path'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/remote_fetcher.rb:259:in `fetch_path'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/source.rb:146:in `fetch_spec'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/resolver/api_specification.rb:76:in `spec'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/resolver/installer_set.rb:77:in `add_always_install'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/dependency_installer.rb:461:in `resolve_dependencies'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/commands/install_command.rb:238:in `install_gem'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/commands/install_command.rb:299:in `block in install_gems'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/commands/install_command.rb:295:in `each'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/commands/install_command.rb:295:in `install_gems'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/commands/install_command.rb:202:in `execute'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/command.rb:307:in `invoke_with_build_args'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/command_manager.rb:168:in `process_args'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/command_manager.rb:138:in `run'
    /home/owner/.rvm/rubies/ruby-2.1.2/lib/ruby/site_ruby/2.1.0/rubygems/gem_runner.rb:54:in `run'
    /home/owner/.rvm/rubies/ruby-2.1.2/bin/gem:21:in `<main>'

就像布拉西奥指出的那样。似乎Xfinity调制解调器正在设置搜索域以home.network并且由于他提到的原因而搞砸了事情(本质上,home.network现在是调制解调器在建立连接之前尝试联系的有效域名(。

我遇到了同样的问题,对 resolv.conf 的修改似乎可以解决问题,这可能是 linux 环境可接受的解决方案。我在运行 ubuntu 的虚拟机上尝试此操作时遇到了这个问题,我的主机 (OSX Mavericks( 像调制解调器一样传递search home.network,所以我想看看我是否可以找到可以在主机操作系统级别完成的解决方案,因为当我尝试在我的 OSX 终端上gem install rails时发生了同样的问题。

如果转到OSX网络设置,则在"DNS"下,您将在"搜索域"区域下看到home.network行。经过一番谷歌搜索,康卡斯特最近似乎将其从http://hds1.ma.comcast.net' .我把它改回来,重新启动并再次gem install rails试,没有问题。

奇怪的问题,但这是交换调制解调器或更改宝石来源的更好解决方案。

我在Comcast xFinity和Compass上遇到了同样的问题。

Windows 7 用户的更新:

Go to Control Panel > Network and Sharing Center
Under "Active Networks" select "Connections: Local Area Connections"
In the "Local Area Connection Status" dialogue box, click on "Properties"
Double click the IPv4 item
In the "Internet Proptocol Verion 4" icon or click the "Properties" button, then click "Advanced"
In the DNS tab, just above the 2nd input box, click the "Append These DNS suffixes (in order)" radio button,
    then click "Add", enter "home.lan", then click OK until the dialogue closes.
    Many thanks to John Smith for the Vista fix and Somnambulent for Win 8.1 fix.

您的 DNS 错误似乎与 .network 成为 TLD 以及您的 resolv.conf 缺少 ndots 配置有关。我刚刚在 .prod 上遇到了这个问题。

除非您在家中拥有自己的 DNS 服务器用于内部 .network 域,否则从/etc/resolv.conf 中删除search home.network应该可以解决此问题。

由于您的/etc/resolv.conf

是由 resolveconf 生成的,正如 resolv.conf 中所说的那样,您可能希望从配置中删除 home.network,例如请参阅此处

我只想对大家说声谢谢。因为我是新来的。我甚至不能添加评论,甚至投票。所以我只能来回答部分。

当我尝试安装cocoapods时,我遇到了以下问题:

➜  ~  gem install cocoapods
ERROR:  While executing gem ... (Gem::RemoteFetcher::FetchError)
    Errno::ETIMEDOUT: Operation timed out - connect(2) for "your-dns-needs-immediate-attention.network" port 443 (https://your-dns-needs-immediate-attention.network/quick/Marshal.4.8/cocoapods-0.33.1.gemspec.rz)`enter code here`

home.local添加到 DNS 搜索域中可以修复它。

再次感谢!我钦佩你的精神!!

我正在使用RVM(1.25.29(,Ubuntu 14.04和ruby 2.0.0。这是一个全新的RVM和Ruby 2.0安装。

就我而言,我正在尝试安装OpenShift Online的命令行工具:带有"gem install rhc"的rhc。

我最终通过使用捆绑安装和 Gemfile 修复了它。我不确定为什么,但捆绑包能够通过 https 获取 gem 以 rubygems.org,但"gem 安装"无法。

尝试创建一个包含 Gem 的 Gemfile 作为临时修复程序,以安装 Gem。

宝石文件:

source 'https://rubygems.org'
# have bundle handle the gem install via https
gem 'rails'

然后运行:

 bundle install

我能够使用"gem 安装"让它工作的唯一方法是使用:

gem install --source http://rubygems.org

但这不安全,不建议这样做。

我无法确定为什么捆绑包可以通过 https 安装,但 gem 不能。我对 ruby 和 rvm 比较陌生。

捆绑器宝石随 rvm 安装一起提供,但红宝石随 ruby2.0.0-p481 一起提供。起初,由于错误,我认为它与openssl有关,但经过大量试验和错误,它似乎与丢失的依赖宝石有关。

通过捆绑包安装 gem 后,我能够卸载它,然后通过"gem 安装"重新安装。我注意到"捆绑安装"在安装"rhc"之前安装了一些缺少的网络和与 SSL 相关的 gem。

在不了解捆绑包和 gem 安装如何工作的情况下,我认为捆绑器 gem 拥有通过 https 发出所需的"一切",而 rubygems(随 ruby 2.0 安装一起提供(则没有。这可以解释为什么在捆绑包安装后,gem 安装有效。

我希望这对遇到此问题的其他人有效。如果没有,至少还有一件事要尝试;-(。

我正在使用 openSUSE 13.1 OS 进行 rails 开发。突然,我遇到了同样的问题,并向 SUSE 邮件列表报告了报告。然后在这里得到了一个很好的解释。

背景:TLD ".site" 已正式注册,因此不再供私人使用。

待办事项:将您的私有 TLD 更改为未注册的内容。

陷阱:".local"是为mDNS/ZeroConf/Bonjour/Rendezvous保留的。 不要将其用于DNS/DHCP!

例子: ".box"、".lan":两者都是由一些互联网连接路由器建议的 (DSL/电缆/光纤( ".lnet", ".your-name-here" (.ArupRakshit适合您(:可能,值得尝试。

呵,山班。

我在这里听从了他的暗示

对于未来的读者,请转到YAST -> Netwrok设备 -> 网络设置 -> 主机名/DNS ->域名(在这里输入您的名字(。

[arup@Rails]$ gem install rails --no-ri --no-rdoc
Fetching: thread_safe-0.3.5.gem (100%)
Successfully installed thread_safe-0.3.5
Fetching: tzinfo-1.2.2.gem (100%)
Successfully installed tzinfo-1.2.2 

Fetching: i18n-0.7.0.gem (100%) 
........
........
[arup@Rails]$ rails -v
Rails 4.2.0

现在一切都准备好了。:)

新的顶级域名 - .prod,.network 是真实的域名,不能用作内部占位符 - https://icann.org/namecollision

对我来说,"您的 dns-needs-imimmediate attention"实际上意味着"您的 gem 来源无效"。

gem source --list

检查输出。如果当前列表无效,那么您可以简单地

gem source -a https://rubygems.org

。或任何其他合适的来源。然后使用 -r 标志删除无效源。

Comcast 最近将 Home.network 附加到客户 DNS 搜索路径

我通过在 Windows Vista 上完成以下步骤解决了此问题:

控制面板 ->网络和共享中心 ->管理网络连接 ->无线属性 ->IP4属性 ->高级 -> DNS选项卡 ->选择按顺序附加这些DNS就足够了,并添加了Home.LAN。

现在 gem 安装运行顺畅

FWIW,如果有人在 Windows 中遇到这个问题,这是我修复它的方法(在 8.1 中(。

    转到控制面板\网络和
  1. 互联网\网络和共享中心
  2. 单击网络适配器的状态,然后从那里进入其属性
  3. 双击 IPv4 项
  4. 在 IPv4 属性中,单击高级...
  5. 在"DNS"选项卡中,查找"home.network"后缀,然后将其删除。
  6. 点击确定很多次:)

现在你应该可以走了!

对我来说,从此页面下载并重新安装 gem: https://rubygems.org/pages/download 解决了 Errno::ECONNDENY 问题。

如果您在Mac系统上工作,则可以尝试

sudo vi /etc/resolv.conf

通过编辑语句search并将.local附加到单词。

前任:

# This file is automatically generated.
#
search network.local

注意:上面network是这种情况的域。你可以使用任何词。

我在尝试安装 premailer 并将 ruby 升级到当前稳定版本 (2.3.0( 时遇到了同样的问题,解决了这个问题。

使用 RVM:

rvm install 2.3.0
rvm use 2.3.0
gem install premailer 

当然,这适用于任何宝石,而不仅仅是预邮寄者

将提供的调制解调器 Comcast 替换为另一个调制解调器(在本例中为 Motorola Surfboard SB6141(。

这是一个不令人满意的解决方案,但仍然是一个解决方案。

最新更新