Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Gem hangs while updating source index (incompatible marshal file format)

379 views
Skip to first unread message

Tim Shadel

unread,
Jul 13, 2005, 2:15:38 AM7/13/05
to
Hi,

I'm new to Ruby, and gem is hanging when it attempts to update the gem
source index (which happens every time I try to install anything,
obviously). I've poked around the archives, and others had the same
symptom, but not the same problem. I'm on Windows XP Home, with Ruby
installed via Windows installer 1.8.2-15. Here's what happends, with
debug output.

>gem --debug --backtrace install rails
Exception `Errno::ENOENT' at
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/config_file.rb:12 - No such
file or directory - C:\Documents and Settings\Tim/.gemrc
Attempting local installation of 'rails'
Local gem file not found: rails*.gem
Attempting remote installation of 'rails'
Exception `TypeError' at
c:/ruby/lib/ruby/site_ruby/1.8/rubygems/remote_installer.rb:222 -
incompatible marshal file format (can't be read)
format version 4.8 required; 45.45 given
Updating Gem source index for: http://gems.rubyforge.org


I've gone to the gems site and manually downloaded the yaml file, but
I can't seem to figure out how to inject that into the gems local file
organization (and searching for yaml brings up millioins of files, so
I can't really even guess at where to put it).


Any ideas of how to get the right marshal file format, or how to push
the yaml in manually would be much appreciated. I'm really hoping to
do some serious diving into Rails soon.

Thanks,

Tim
---------
http://timshadel.com


Jim Weirich

unread,
Jul 13, 2005, 7:16:31 AM7/13/05
to
On Wednesday 13 July 2005 02:15 am, Tim Shadel wrote:
> Hi,
>
> I'm new to Ruby, and gem is hanging when it attempts to update the gem
> source index (which happens every time I try to install anything,
> obviously).
[...]

> >gem --debug --backtrace install rails
[...]

> Exception `TypeError' at
> c:/ruby/lib/ruby/site_ruby/1.8/rubygems/remote_installer.rb:222 -
> incompatible marshal file format (can't be read)
> format version 4.8 required; 45.45 given
> Updating Gem source index for: http://gems.rubyforge.org

It is actually working as intended, except for the hang during the source
index update. Gem detects that loading your cache failed (incompatible
marshal format), so it attempts to download the source index.

You can just blow away the cache file. It is named "source_cache" in the
directory returned by the command 'gem env gempath'. If the `gem env
gempath` directory is protected, you may also have another copy of the cache
in $HOME/.gem.

Blowing it away will get rid of the marshal file format error. I don't know
if it will solve the download problem or not.

--
-- Jim Weirich j...@weirichhouse.org http://onestepback.org
-----------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)


Tim Shadel

unread,
Jul 23, 2005, 1:58:16 PM7/23/05
to
Well, I tried deleting the cache and that didn't work. So I dug in
and tried to find the call that was hanging. I eventually traced it
down to the TCPSocket.write call inside the HTTP module. Here's a
snippet from irb that shows the problem:

C:\>irb
irb(main):001:0> require 'socket'
=> true
irb(main):002:0> sock = TCPSocket.new("gems.rubyforge.org", 80)
=> #<TCPSocket:0x2d3c960>
irb(main):003:0> sock.write "GET /yaml.Z HTTP/1.1\r\nHost:
gems.rubyforge.org\r\n\r\n"

(Hangs)

I also tried to write a small script to show the problem.

-------
require 'socket'

hostname = ARGV[0]
puts "Making socket to #{hostname}"
sock = TCPSocket.new(hostname, 80)
mesg = "GET /yaml.Z HTTP/1.1\r\nHost: #{hostname}\r\n\r\n"
puts "writing to socket #{hostname}: " + mesg
sock.write mesg
puts "Wow, no hang!"
-----

Here's the output:

------
C:\>ruby test.rb google.com
Making socket to google.com
writing to socket google.com: GET /yaml.Z HTTP/1.1
Host: google.com

------

But wget works, so my internet connection is fine, DNS resolves the
names, and I don't have any problems communicating with either
gems.rubyforge.org or google.com.

Even trying a connection to localhost:8080 (Tomcat) failed.

So any idea how I can fix this problem? It just seems like Ruby can't
write to any sockets at all, or am I misinterpreting the symptoms.

I'd truly love to start working with Ruby, and I'm very interested in
Rails, but I can't see how I can really dive in unless I can get
sockets to just work.

Thanks in advance for your help,

Tim

Ville Mattila

unread,
Jul 24, 2005, 2:11:47 AM7/24/05
to

Do you happen to have zonealarm or some other personal firewall installed.
The behaviour you are having seems to be one that have been reported previously
causing by ZA.

- Ville

0 new messages