“gem install rails”因DNS错误而失败

时间:2014-08-30 15:25:35

标签: ruby-on-rails ruby dns gem

$ 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. 安装其他宝石(设计,主动记录)。我得到了同样的错误。
  2. 重新安装RVM
  3. 正在运行gem update --system
  4. 将静态DNS设置为google的8.8.8.8和8.8.4.4
  5. 添加https://production.cf.rubygems.org作为宝石来源(参见下面的错误)
  6. 在之前的12.04上安装14.04。错误仍然存​​在。错误的来源必须在我的电脑之外。
  7. 有关我的连接的其他信息:

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

14 个答案:

答案 0 :(得分:31)

喜欢 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另一个镜头,这没问题。

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

答案 1 :(得分:7)

我在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.

答案 2 :(得分:5)

您的DNS错误似乎与.network成为TLD并且您的resolv.conf错过了ndots配置有关。我刚用.prod。

遇到了这个问题

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

由于您的resolv.conf中的resolveconf生成了/etc/resolv.conf,您可能希望从配置中删除home.network,请参阅here for example

答案 3 :(得分:4)

我只想说谢谢大家。因为我是新来的。即使投票,我也无法添加评论。所以我只能来到答案部分。

当我尝试安装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搜索域中会修复它。

再次感谢!我很佩服你的精神!

答案 4 :(得分:3)

我正在使用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 获取宝石到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比较新。

bundler gem附带 rvm 安装,但 ruby​​gems 附带ruby2.0.0-p481。起初,由于错误,我认为它与openssl有关,但经过大量的反复尝试后,它似乎与缺失的,依赖的宝石有关。

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

在不了解 bundle gem install 的工作原理的情况下,我认为 bundler gem拥有所需的“一切”通过 https 出去,而 ruby​​gems (与ruby 2.0安装一起提供)没有。这可以解释为什么在捆绑安装之后, gem install 工作。

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

答案 5 :(得分:3)

我使用openSUSE 13.1操作系统进行rails开发。突然间,我遇到了同样的问题并向SUSE mailing list报告。然后得到关于问题here的非常好的解释。

  

背景:tld&#34; .site&#34;是正式注册的,因此不再供私人使用。

     

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

     

陷阱:&#34; .local&#34;保留给mDNS / ZeroConf / Bonjour / Rendezvous。   不要将它用于DNS / DHCP!

     

实施例:   &#34; .box&#34;,&#34; .lan&#34; :两者都是由某些Internet-Connect-Routers建议的   (DSL /电缆/光纤)   &#34; .lnet&#34;,&#34;。你的名字 - 这里&#34; (.ArupRakshit for you):可能,值得一试。

     HTH,Yamaban。

我按照他的指示here

  

对于未来的读者,转到YAST - &gt; Netwrok设备 - &gt;网络设置 - &gt;   主机名/ DNS - &gt;域名(这里写下你的名字)。

[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

现在一切都已确定。 :)

答案 6 :(得分:2)

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

答案 7 :(得分:1)

对我而言“你的dns-needs-immediate-attention”,实际上意味着“你的宝石来源无效”。

gem source --list

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

gem source -a https://rubygems.org

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

答案 8 :(得分:0)

最近看到comcast附加了home.network给客户的DNS搜索路径

我在Windows Vista上完成以下步骤解决了这个问题:

控制面板 - &gt;网络和共享中心 - &gt;管理网络连接 - &gt;无线属性 - &gt; ip4属性 - &gt;高级 - &gt; dns标签 - &gt;选择按顺序添加这些dns,并添加home.lan。

现在gem install顺利运行

答案 9 :(得分:0)

FWIW,如果有人在Windows中遇到此问题,请按照以下方法修改(8.1)。

  1. 转到控制面板\网络和Internet \网络和共享中心
  2. 点击您的网络适配器的状态,然后点击其属性
  3. 双击IPv4项目
  4. 在“IPv4属性”中,单击“高级...”
  5. 在DNS标签中,查找“home.network”后缀,然后将其删除。
  6. 多次点击确定:)
  7. 现在你应该好好去!

答案 10 :(得分:0)

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

答案 11 :(得分:0)

如果您使用的是Mac系统,可以尝试

sudo vi /etc/resolv.conf

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

EX:

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

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

答案 12 :(得分:0)

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

使用rvm:

  <div class="rows" data-bind="foreach:$component.incomeRows">
                <div class="t-tr" data-bind="css:$data.isNewRow()? 't-tr add':'t-tr', visible: $data.isVisible">
                    <div class="t-td td-1">
                        <select data-bind="options: $data.monthlyBudgetRowTypes, optionsValue: 'key', optionsText: 'name', value: $data.selectedTypeId"></select>
                    </div>
                    <div class="t-td td-2">
                        <input type="text" data-bind="textInput :$data.amount" />
                    </div>
                    <div class="t-td td-3">
                        <input type="text" data-bind="value:$data.description" />
                    </div>
                    <div class="t-td td-4">
                        <input type="text" class="input-date" data-bind="value:$data.date, attr:{id: datepickerID}" />
                    </div>
                    <div class="t-td td-5">
                        <input type="text" data-bind="value:$data.origin" />
                    </div>
                    <div class="t-td td-6">
                        <span data-bind="click: $component.loadIncomeToDesired, css:$data.isNewRow()? 'plus' : 'circle'"></span>
                    </div>
                    <div class="t-td td-7">
                        <span class="bin-icon" data-bind="click: $data.setDeletedRowState, css: $data.forDelete()? 'bin-icon selected' : 'bin-icon'">מחק</span>
                    </div>

                </div><!-- t-tr -->
            </div><!-- mo-table -->

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

答案 13 :(得分:-3)

更换另一台调制解调器Comcast(本例中为Motorola Surfboard SB6141)。

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