问题
$ 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)
I have attempted:
- Installing other gems (devise, activerecord). I get the same error.
- Reinstalling RVM
- Running
gem update --system
- Setting static DNS to google's 8.8.8.8 and 8.8.4.4
- Adding
https://production.cf.rubygems.org
as a gem source (see below for error) - Installing 14.04 over my previous 12.04. Error persists. The source of the error must be outside my computer.
Additional information about my connection:
- I can connect to
https://rubygems.org/
through my browser - My modem's firewall is completely disabled.
$ curl -v --head https://rubygems.org
output: 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
Add direct gem source
Ref: 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)
Additional debug information for 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>'
回答1:
Like blasio pointed out. It seems like the Xfinity modems are setting up the search domain to home.network
and this is messing things up for the reasons he mentioned (essentially, home.network is now a valid domain name that the modems are trying to contact before making a connection).
I had the same problem and the modification on resolv.conf seem to do the trick, and that should probably be an accepted solution for linux environments. I had this problem while attempting this on a virtual machine running ubuntu, and my host(OSX Mavericks) was passing down the search home.network
like the modem is, so I wanted to see if I could find a solution that could be done at the host OS level because the same problem happened when I attempted gem install rails
on my OSX terminal.
If you go to the OSX network settings, under DNS you'll see the home.network
line under the Search Domains area. After some googling it seems that comcast recently changed this from http://hds1.ma.comcast.net'
. I changed it back, restarted and gave gem install rails
another shot, which worked with no problem.
Strange issue but this is a better solution that swapping modems or changing gem sources.
回答2:
I had the same issue with Comcast xFinity and Compass.
Update for Windows 7 users:
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.
回答3:
Your DNS error seems to be related to .network becoming a TLD and your resolv.conf missing the ndots configuration. I just run into this issue with .prod.
Unless you have your own DNS server at home for internal .network domain, removing the search home.network
from /etc/resolv.conf should fix the issue.
Since your /etc/resolv.conf is generated by resolveconf as it says in your resolv.conf, you might want to remove the home.network from your configuration, see here for example
回答4:
I just want to say thank you to you all. Since I'm new here. I cannot add a comment even vote up. So I can only come to the answer part.
I got a problem as follow when I tried to install 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`
Adding home.local
into the DNS Search Domains fixes it.
Thanks again! I admire your spirit!!!
回答5:
I'm using RVM (1.25.29), Ubuntu 14.04 and ruby 2.0.0. This was a fresh RVM and ruby 2.0 installation.
In my case I was trying to install OpenShift Online's command-line tool: rhc with "gem install rhc".
I finally fixed it by using bundle install and a Gemfile. I'm not sure why but bundle was able to get the gems via https to rubygems.org, but "gem install" could not.
Try creating a Gemfile with your gem in it as a temporary fix to get the gem installed.
Gemfile:
source 'https://rubygems.org'
# have bundle handle the gem install via https
gem 'rails'
Then run:
bundle install
The only way I was able to get it to work using "gem install" was to use:
gem install --source http://rubygems.org
But that's unsafe and NOT recommended.
I haven't been able to determine why bundle can install via https, but gem can't. I'm relatively new to ruby and rvm.
The bundler gem came with the rvm installation, but rubygems came with ruby2.0.0-p481. At first and because of the error I thought it had something to do with openssl, but after a lot of trial and error it seems to be related to missing, dependent gems.
After the gem was installed via bundle, I was able to uninstall it and then re-install via "gem install". I noticed that "bundle install" installed some missing network and ssl-related gems before installing "rhc".
Without knowing a whole lot about how bundle and gem install work I'm thinking that the bundler gem had "everything" it needed to go out via https while rubygems (which came with the ruby 2.0 install) didn't. And that would explain why after the bundle install, gem install worked.
I hope this works for anyone else that's encountered this. If not, at least it's one more thing to try ;-).
回答6:
I'm using openSUSE 13.1 OS for my rails development. Suddenly I got the same issue and reported to the SUSE mailing list. And then got an very good explanation about the problem here.
Background: the tld ".site" is offically registered and thus no longer available for private use.
ToDo: Change your private tld, to something NOT registered.
Gotchas: ".local" is reserved for mDNS / ZeroConf / Bonjour / Rendezvous. Do NOT use it for DNS / DHCP !
Examples: ".box", ".lan" : both are suggested by some Internet-Connect-Routers (DSL/Cable/Fibre) ".lnet", ".your-name-here" (.ArupRakshit for you) : possible, worth to try.
HTH, Yamaban.
I followed his instrutions here
For future reader goto YAST -> Netwrok devices -> Network Settings -> Hostname/DNS -> Domain Name (and here put your name).
[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
Now all is set. :)
回答7:
New top level domains - .prod, .network are real domains not be be used as internal placeholder - https://icann.org/namecollision
回答8:
For me "your-dns-needs-immediate-attention", actually meant "your gem sources are not valid".
gem source --list
Check the output. If the current list isn't valid, then you can simply
gem source -a https://rubygems.org
...or whatever other sources are appropriate. Then use the -r
flag to remove the invalid sources.
回答9:
it appears comcast recently appended home.network to customers DNS search path
I resolved this issue by completing the following steps on Windows Vista:
control panel -> network and sharing center -> manage network connections -> wireless properties -> ip4 properties -> advanced -> dns tab -> select append these dns suffices in order and added home.lan.
now gem install runs without a hitch
回答10:
FWIW, if anyone's encountering this in Windows, here's how I fixed it (in 8.1).
- Go to Control Panel\Network and Internet\Network and Sharing Center
- Click into your network adaptor's status, and from there into its properties
- Double click the IPv4 item
- In the IPv4 Properties, click Advanced...
- In the DNS tab, look for the 'home.network' suffix, and remove it.
- Hit OK a bunch of times :)
Now you should be good to go!
回答11:
For me downloading and reinstalling gem from this page: https://rubygems.org/pages/download solved the Errno::ECONNREFUSED problem.
回答12:
If you work on a Mac system, you can try to
sudo vi /etc/resolv.conf
by edit search
statement with appending .local
to a word.
EX:
# This file is automatically generated.
#
search network.local
NOTE: Above network
is the domain for this case. You can use any word.
回答13:
I had the same problem when trying to install premailer and upgrading ruby to current stable version (2.3.0) fixed the issue.
with rvm:
rvm install 2.3.0
rvm use 2.3.0
gem install premailer
of course, this applies to any gem, not just premailer
回答14:
Replace the modem Comcast provided with another (Motorola Surfboard SB6141 in this case).
This is an unsatisfying solution, but a solution nonetheless.
来源:https://stackoverflow.com/questions/25583938/gem-install-rails-fails-with-dns-error