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

Reply via email to