Bug #8313

rubygem 2.0 can't communicate with remote sources http://rubygems.org/

Added by Frederic Leger 12 months ago. Updated 11 months ago.

[ruby-core:54525]
Status:Third Party's Issue
Priority:Normal
Assignee:Eric Hodel
Category:lib/rubygems
Target version:-
ruby -v:ruby 2.0.0p0 (2013-02-24 revision 39474) [x86_64-darwin12] Backport:1.9.3: UNKNOWN, 2.0.0: UNKNOWN

Description

I try to use Ruby 2.0 on my MAC OSX Mountain Lion with macports. The "sudo port install ruby2.0" and "sudo port select --set ruby ruby2.0" was success. But when I try to install gem package I have these errors:

$ sudo gem list -r --debug

*** REMOTE GEMS ***

Exception Errno::ENOENT' at /opt/local/lib/ruby2.0/2.0.0/rubygems/remote_fetcher.rb:298 - No such file or directory - /Users/fred/.gem/specs/rubygems.org%80/latest_specs.4.8
Exception
Errno::EAGAIN' at /opt/local/lib/ruby2.0/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
Exception `Errno::EAGAIN' at /opt/local/lib/ruby2.0/2.0.0/net/protocol.rb:153 - Resource temporarily unavailable - read would block
...

Some others informations:

$ sudo gem environment
RubyGems Environment:
- RUBYGEMS VERSION: 2.0.0
- RUBY VERSION: 2.0.0 (2013-02-24 patchlevel 0) [x8664-darwin12]
- INSTALLATION DIRECTORY: /opt/local/lib/ruby2.0/gems/2.0.0
- RUBY EXECUTABLE: /opt/local/bin/ruby2.0
- EXECUTABLE DIRECTORY: /opt/local/bin
- RUBYGEMS PLATFORMS:
- ruby
- x86
64-darwin-12
- GEM PATHS:
- /opt/local/lib/ruby2.0/gems/2.0.0
- /Users/fred/.gem/ruby/2.0.0
- GEM CONFIGURATION:
- :updatesources => true
- :verbose => true
- :backtrace => false
- :bulk
threshold => 1000
- REMOTE SOURCES:
- http://rubygems.org/

$ sudo gem list -d

*** LOCAL GEMS ***

bigdecimal (1.2.0)
Authors: Kenta Murata, Shigeo Kobayashi
Homepage: http://www.ruby-lang.org
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

Arbitrary-precision decimal floating-point number library.

io-console (0.4.2)
Author: Nobu Nakada
Homepage: http://www.ruby-lang.org
License: ruby
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

Console interface

json (1.7.7)
Author:
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

This json is bundled with Ruby

minitest (4.3.2)
Author:
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

This minitest is bundled with Ruby

psych (2.0.0)
Author: Aaron Patterson
Homepage: http://github.com/tenderlove/psych
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

Psych is a YAML parser and emitter

rake (0.9.6)
Author:
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

This rake is bundled with Ruby

rdoc (4.0.0)
Author:
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

This rdoc is bundled with Ruby

test-unit (2.0.0.0)
Author: Shota Fukumori
Homepage: http://www.ruby-lang.org
Installed at (default): /opt/local/lib/ruby2.0/gems/2.0.0

test/unit compatible API testing framework

A part of /opt/local/lib/ruby2.0/2.0.0/rubygems/remote_fetcher.rb:

...
##
# Downloads +uri+ to +path+ if necessary. If no path is given, it just
# passes the data.

def cacheupdatepath uri, path = nil, update = true
mtime = path && File.stat(path).mtime rescue nil <--- line 298

if mtime && Net::HTTPNotModified === fetch_path(uri, mtime, true)
  Gem.read_binary(path)
else
  data = fetch_path(uri)

  if update and path then
    open(path, 'wb') do |io|
      io.write data
    end
  end

  data
end

end
...

History

#1 Updated by Frederic Leger 12 months ago

$ sudo gem list --remote -V --backtrace
Password:

*** REMOTE GEMS ***

GET http://rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
connection reset after 1 requests, retrying
GET http://production.s3.rubygems.org/latest_specs.4.8.gz
connection reset after 1 requests, retrying

#2 Updated by Frederic Leger 12 months ago

With wireshark I test and capture all traffic with the http://production.s3.rubygems.org server. The firewalls aren't the problem. All packets send/receive with success. And the last TCP/HTTP exchange send a result "HTTP/1.1 200 OK", size of reasembled TCP segments=459 168 bytes. My WAN firewall doesn't block anything for this address.

I tested "check" gem command and I see some errors:

$ sudo gem check -V --backtrace
Checking gems...

bigdecimal-1.2.0.gem has 1 problems
bigdecimal-1.2.0:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/bigdecimal-1.2.0

io-console-0.4.2.gem has 1 problems
io-console-0.4.2:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/io-console-0.4.2

json-1.7.7.gem has 1 problems
json-1.7.7:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/json-1.7.7

minitest-4.3.2.gem has 1 problems
minitest-4.3.2:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/minitest-4.3.2

psych-2.0.0.gem has 1 problems
psych-2.0.0:
Gem registered but doesn't exist at /opt/local/lib/ruby2.0/gems/2.0.0/gems/psych-2.0.0

rake-0.9.6.gem has 2 problems
/opt/local/lib/ruby2.0/gems/2.0.0/cache/rake-0.9.6.gem:
missing gem file /opt/local/lib/ruby2.0/gems/2.0.0/cache/rake-0.9.6.gem
/opt/local/lib/ruby2.0/gems/2.0.0/specifications/rake-0.9.6.gemspec:
Spec file missing for installed gem

rdoc-4.0.0.gem has 2 problems
/opt/local/lib/ruby2.0/gems/2.0.0/cache/rdoc-4.0.0.gem:
missing gem file /opt/local/lib/ruby2.0/gems/2.0.0/cache/rdoc-4.0.0.gem
/opt/local/lib/ruby2.0/gems/2.0.0/specifications/rdoc-4.0.0.gemspec:
Spec file missing for installed gem

test-unit-2.0.0.0.gem has 2 problems
/opt/local/lib/ruby2.0/gems/2.0.0/cache/test-unit-2.0.0.0.gem:
missing gem file /opt/local/lib/ruby2.0/gems/2.0.0/cache/test-unit-2.0.0.0.gem
/opt/local/lib/ruby2.0/gems/2.0.0/specifications/test-unit-2.0.0.0.gemspec:
Spec file missing for installed gem

$ sudo gem contents -V --backtrace
ERROR: While executing gem ... (Gem::CommandLineError)
Please specify at least one gem name (e.g. gem build GEMNAME)
/opt/local/lib/ruby2.0/2.0.0/rubygems/command.rb:177:in getallgemnames'
/opt/local/lib/ruby2.0/2.0.0/rubygems/commands/contents
command.rb:65:inexecute'
/opt/local/lib/ruby2.0/2.0.0/rubygems/command.rb:305:in invokewithbuildargs'
/opt/local/lib/ruby2.0/2.0.0/rubygems/command
manager.rb:170:inprocessargs'
/opt/local/lib/ruby2.0/2.0.0/rubygems/command
manager.rb:130:in run'
/opt/local/lib/ruby2.0/2.0.0/rubygems/gem_runner.rb:60:inrun'
/opt/local/bin/gem:21:in `'

$ sudo gem list --local -V --backtrace

*** LOCAL GEMS ***

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
test-unit (2.0.0.0)

#3 Updated by Frederic Leger 12 months ago

Workaround :

I uninstall all macports ruby packages. And install RVM (https://rvm.io/rvm/). Activate ruby 2.0.0-p0 by rvm. And now, the "gem list -r" is fully functionnal. So, we have a bug with gem in macport.

I opened a bug in macport tracker: https://trac.macports.org/ticket/38992
You can close this ticket.

Frederic.

#4 Updated by Nobuyoshi Nakada 12 months ago

  • Category changed from platform/darwin to lib/rubygems
  • Status changed from Open to Assigned
  • Assignee changed from cruby-mac to Eric Hodel

#5 Updated by Eric Hodel 11 months ago

  • Status changed from Assigned to Third Party's Issue
  • Priority changed from High to Normal

Closed per author's request.

Also available in: Atom PDF