Bugs item #25816, was opened at 2009-05-07 04:42 You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=575&aid=25816&group_id=126
Category: `gem install` command Group: None Status: Open Resolution: None Priority: 3 Submitted By: Larry Kyrala (coldnebo) Assigned to: Nobody (None) Summary: misleading error message when one of many sources unreachable. Initial Comment: I puzzled over the following for about half an hour: $ sudo gem install hoe ERROR: While executing gem ... (Zlib::GzipFile::Error) not in gzip format Until I finally figured out that one of my sources (aka 'gem sources') was a address only accessible on my company's VPN. (I wasn't on the VPN at the time.) e.g: $ gem sources *** CURRENT SOURCES *** http://gems.rubyforge.org/ http://rubygems.xxx.xxx/ <-- vpn address This error was confusing, because I was attempting to get 'hoe' which is clearly at gems.rubyforge.org, however apparently gem attempts to ping ALL the sources, even if one isn't available, it croaks with this obscure error. At least this should be documented. At most, gem should return a meaningful error if one of the gem sources is unreachable. Ideally, if the install name is found in one of the gem sources that IS available, it shouldn't matter, and should simply install the gem from the available source. Other info: using Mac OSX 10.5 Macports: $ port installed | grep ruby rb-rubygems @1.3.1_0 (active) ruby @1.8.7-p72_2+thread_hooks ruby @1.8.7-p160_1+thread_hooks (active) ruby186 @1.8.6-p287_0+darwin_9+thread_hooks Hope this helps! -lk ---------------------------------------------------------------------- Comment By: Nick Hildebrant (nihildeb) Date: 2009-08-27 21:06 Message: I thought you meant this: > $ sudo gem install hoe > ERROR: While executing gem ... (Zlib::GzipFile::Error) > not in gzip format was a misleading error message. -------- If we consider: ERROR: could not find gem <gem> locally or in a repository to be misleading, when there is only a dead host in the sources list, then we can look at that. So... Gem::SpecFetcher#legacy_repos tries a couple rescues and then raises when _any_ source is not available, regardless if there are more to try, or there are already known good ones. It is requested that rubygems continue if there is at least one good source in the list. ---------------------------------------------------------------------- Comment By: Nick Hildebrant (nihildeb) Date: 2009-08-27 20:53 Message: I thought you meant this: > $ sudo gem install hoe > ERROR: While executing gem ... (Zlib::GzipFile::Error) > not in gzip format was a misleading error message. -------- If we consider: ERROR: could not find gem <gem> locally or in a repository to be misleading, when there is only a dead host in the sources list, then we can look at that. So... Gem::SpecFetcher#legacy_repos tries a couple rescues and then raises when _any_ source is not available, regardless if there are more to try, or there are already known good ones. It is requested that rubygems continue if there is at least one good source in the list. ---------------------------------------------------------------------- Comment By: Larry Kyrala (coldnebo) Date: 2009-08-27 13:49 Message: I'm still getting that error. I think maybe you only tested with one source or two bogus sources. The problem manifests with one valid and one bogus. let me show you an example under linux: lkyr...@lkyrala-ibex-64:~$ gem -v 1.3.4 lkyr...@lkyrala-ibex-64:~$ ruby -v ruby 1.8.6 (2009-06-08 patchlevel 369) [x86_64-linux] # first, I edit sources... lkyr...@lkyrala-ibex-64:~$ gem sources *** CURRENT SOURCES *** # notice the FIRST entry is valid and correct: http://gems.rubyforge.org/ # it's the second entry that is bogus or unreachable: http://rubygems.nodomain.com/ lkyr...@lkyrala-ibex-64:~$ gem install smoke ERROR: http://rubygems.nodomain.com/ does not appear to be a repository ERROR: could not find gem smoke locally or in a repository # notice how gem INCORRECTLY failed to find smoke on rubyforge even though it was the FIRST source entry and valid. Instead, it INCORRECTLY goes to the second source and reports an error even though rubyforge works fine. # so, changing the SECOND source to a valid source... lkyr...@lkyrala-ibex-64:~$ gem sources *** CURRENT SOURCES *** http://gems.rubyforge.org/ # note: I only changed the SECOND source: http://rubygems.mathworks.com/ lkyr...@lkyrala-ibex-64:~$ gem install smoke Successfully installed smoke-0.0.6 1 gem installed # notice that the gem installs from the FIRST source ok now even though it was the second source that had the problem. # note: the second source does not have "smoke" in it's repo. ---------------------------------------------------------------------- Comment By: Nick Hildebrant (nihildeb) Date: 2009-08-26 23:36 Message: Proper error message is displayed on two linux boxes: RubyGems Environment: - RUBYGEMS VERSION: 1.3.1 - RUBY VERSION: 1.8.5 (2006-08-25) [i386-linux] RubyGems Environment: - RUBYGEMS VERSION: 1.3.3 - RUBY VERSION: 1.8.7 (2009-06-12 patchlevel 174) [x86_64-linux] ERROR: http://gems.nosuchdomain.com does not appear to be a repository ERROR: could not find gem utility_belt locally or in a repository Larry suggests: simply install the gem from the available source If this is accepted, this should be a feature. As a bug, i can not reproduce. ---------------------------------------------------------------------- Comment By: Larry Kyrala (coldnebo) Date: 2009-05-07 04:43 Message: BTW, I forgot to mention the workaround: Simply remove the source that is unreachable and gem works fine. ---------------------------------------------------------------------- You can respond by visiting: http://rubyforge.org/tracker/?func=detail&atid=575&aid=25816&group_id=126 _______________________________________________ Rubygems-developers mailing list http://rubyforge.org/projects/rubygems Rubygems-developers@rubyforge.org http://rubyforge.org/mailman/listinfo/rubygems-developers