"gem install rails"因DNS错误而失败

tmt*_*tmt 22 ruby dns gem ruby-on-rails

$ 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)
Run Code Online (Sandbox Code Playgroud)

我试过了:

  1. 安装其他宝石(设计,主动记录).我犯了同样的错误.
  2. 重新安装RVM
  3. 运行 gem update --system
  4. 将静态DNS设置为谷歌的8.8.8.8和8.8.4.4
  5. 添加https://production.cf.rubygems.org为宝石源(参见下面的错误)
  6. 在我之前的12.04上安装14.04.错误仍然存​​在.错误的来源必须在我的计算机之外.

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

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

我的/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
Run Code Online (Sandbox Code Playgroud)

添加直接宝石来源

参考: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)
Run Code Online (Sandbox Code Playgroud)

其他调试信息 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>'
Run Code Online (Sandbox Code Playgroud)

jal*_*o91 31

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

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

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

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

  • 谢谢,@ jalvarado91.我实际上添加了home.local,它曾经是某种程度上的东西,对我而言也是如此.不过,我认为`http://`URL不会在该字段中起作用.据我所知,DNS没有使用端口80进行搜索. (4认同)

小智 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.
Run Code Online (Sandbox Code Playgroud)


小智 5

您的DNS错误似乎与.network成为TLD有关,而您的resolv.conf错过了ndots配置.我刚用.prod遇到了这个问题.

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

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


tmt*_*tmt -3

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

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