“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. 在我之前的12.04上安装14.04。 错误仍然存​​在。 错误的来源必须在我的计算机之外。

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

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

我的/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 

添加直接gem来源

参考: 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 `' 

blasio指出的那样。 似乎Xfinity调制解调器正在将搜索域设置为home.network ,这是因为他提到的原因搞砸了(实质上,home.network现在是调制解调器在建立连接之前尝试联系的有效域名)。

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

如果您转到OSX网络设置,在DNS下您将看到搜索域区域下的home.network行。 经过一些谷歌搜索,似乎comcast最近改变了这个http://hds1.ma.comcast.net' 。 我把它改回来了,重新启动并给了gem install rails另一个镜头,这没有问题。

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

我和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是由您在resolv.conf中所说的resolveconf生成的,因此您可能希望从配置中删除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的命令行工具:rhc with“gem install rhc”。

我最后通过使用bundle install和Gemfile来修复它。 我不知道为什么但是bundle能够通过https获取gem到rubygems.org,但是“gem install”不能。

尝试使用您的gem创建Gemfile作为临时修复以安装gem。

的Gemfile:

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

然后运行:

  bundle install 

我能够使用“gem install”让它工作的唯一方法是使用:

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

但这不安全,不推荐。

我无法确定为什么bundle可以通过https安装,但gem不能。 我对ruby和rvm比较新。

捆绑器 gem附带了rvm安装,但rubygems附带了ruby2.0.0-p481。 起初,由于错误,我认为它与openssl有关,但经过大量的试验和错误后,它似乎与缺失的,依赖的gem有关。

通过bundle安装gem后,我可以卸载它,然后通过“gem install”重新安装。 我注意到“bundle install”在安装“rhc”之前安装了一些丢失的网络和ssl相关的gem。

在不知道bundlegem如何安装工作的情况下,我认为Bundler gem需要通过https进行“一切”,而rubygems (随ruby 2.0安装一起提供)则没有。 这就解释了为什么在捆绑安装之后gem install工作了。

我希望这适用于遇到此问题的其他任何人。 如果没有,至少还有一件事要尝试;-)。

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

背景:tld“.site”正式注册,因此不再供私人使用。

ToDo:将您的私人tld更改为未注册的内容。

陷阱:“。local”保留给mDNS / ZeroConf / Bonjour / Rendezvous。 不要将它用于DNS / DHCP!

示例:“。box”,“。lan”:两者都是由某些Internet-Connect-Routers(DSL / Cable / Fiber)“。lnet”,“。yourour-name-here”(.ArupRakshit for you)建议的:可能的,值得一试。

HTH,Yamaban。

我在这里遵循他的指示

对于未来的读者转到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,.n​​etwork是真实域名,不能用作内部占位符 – https://icann.org/namecollision

对我来说, “你的dns-needs-immediate-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. 转到控制面板\网络和Internet \网络和共享中心
  2. 单击您的网络适配器的状态,然后从中进入其属性
  3. 双击IPv4项
  4. 在IPv4 Properties中,单击Advanced …
  5. 在DNS选项卡中,查找“home.network”后缀,然后将其删除。
  6. 点击确定很多次:)

现在你应该好好去!

我从这个页面下载并重新安装gem: https ://rubygems.org/pages/download解决了Errno :: ECONNREFUSED问题。

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

sudo vi /etc/resolv.conf

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

EX:

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

注意:以上network是此案例的域名。 你可以使用任何单词。

我在尝试安装预编译器并将ruby升级到当前稳定版本(2.3.0)时遇到了同样的问题。

与rvm:

 rvm install 2.3.0 rvm use 2.3.0 gem install premailer 

当然,这适用于任何gem,而不仅仅是预制商

替换另一个提供的调制解调器Comcast(在这种情况下为Motorola Surfboard SB6141)。

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