不是gzip格式错误

时间:2010-06-17 05:46:02

标签: ruby gzip install

安装任何Gem或做任何与gem gzip相关的错误列表如下所示: -

C:\Documents and Settings\gangunra>gem install rhosync -v 2.0.0.beta7 --pre

ERROR:  While executing gem ... (Zlib::GzipFile::Error)
    not in gzip format

C:\Documents and Settings\gangunra>gem list rails -r

*** REMOTE GEMS ***

ERROR:  While executing gem ... (Zlib::GzipFile::Error)
    not in gzip format

请帮我解决这个问题

5 个答案:

答案 0 :(得分:4)

看起来rubygems.org(或您定义的任何宝石来源)已关闭。

答案 1 :(得分:1)

确保使用正确的Gem来源。

$ gem sources

应显示http://rubygems.org/作为第一个来源。

如果缺少,请添加http://rubygems.org/作为主要来源。否则,它可能是RubyGems索引的临时问题。

还要确保使用最新的RubyGems(库)版本。

$ gem update --system

答案 2 :(得分:1)

不确定您的错误是发生在tar_input.rb还是ruby_core_source.rb

大多数人通过清理缓存文件来解决tar_input.rb错误。我解决了ruby_core_source.rb的问题:57'初始化':不是gzip格式 这是描述和解决方法:

问题是因为“有时”ftp服务器中的ruby源文件可能不是tar + gzip。所以有时源文件不正确。

我刚刚浏览了源代码,代码需要ftp服务器中的.tar.gz(例如http ://ftp.ruby-lang.org/pub/ruby/1.9/xxx.tar.gz)。但找到的文件只是tar,但不是gzip-ed。

解决方法是修改gem目录中的代码。

我正在寻找知道为什么ruby-lang.org中托管的文件没有正确gzip-ed的人。希望能永远解决。

以下是我的发现的详细说明:

http://ru05team.blogspot.com/2011/08/solving-workaround-initialize-not-in.html

以下是您需要更改的变通方法源代码:

https://gist.github.com/1183048

答案 3 :(得分:0)

找出ruby的配置位置以寻找来源:

C:\>gem sources
*** CURRENT SOURCES ***

http://gems.rubyforge.org/

如果指向gems.rubyforge.org(它是为旧安装二进制文件首次安装时),则指向旧的Web服务器,因此当ruby尝试获取更新时,它会获得HTTP重定向(302)作为响应而不是GZIP格式的预期数据。它显然没有配置错误处理程序来检测重定向,所以它只是放弃了。

要修复它,您必须更新源列表。首先添加正确的来源:

C:\>gem sources -a http://rubygems.org/
http://rubygems.org/ added to sources

然后删除已弃用的:

C:\>gem sources -r http://gems.rubyforge.org/
http://gems.rubyforge.org/ removed from sources

C:\>gem sources
*** CURRENT SOURCES ***

http://rubygems.org/

接下来更新您的ruby系统:

C:\>gem update --system
Updating RubyGems
Updating rubygems-update
Successfully installed rubygems-update-1.3.7
:0:Warning: Gem::SourceIndex#search support for String patterns is deprecated
Updating RubyGems to 1.3.7
Installing RubyGems 1.3.7
RubyGems 1.3.7 installed

=== 1.3.7 / 2010-05-13

NOTE:

http://rubygems.org is now the default source for downloading gems.

You may have sources set via ~/.gemrc, so you should replace
http://gems.rubyforge.org with http://rubygems.org

http://gems.rubyforge.org will continue to work for the forseeable future.
...

请注意,更新会验证旧源网址是否不再有效...

您现在应该可以继续安装,在我的情况下是rake。

答案 4 :(得分:0)

使用需要第2阶段身份验证的网络时遇到此问题。我忘了在浏览器中进行身份验证,因此任何Web请求都被重定向到本地身份验证页面。看来gem没有检查它收到的响应是否实际来自实际的rubygems.org服务器(除非你使用了ssl证书,否则它不能单独基于地址查找)。它不是告诉你它无法到达真正的rubygems服务器,它只是告诉你它收到的有效载荷不是正确的格式(压缩)。如果您运行恶意DNS服务器将rubygems.org重定向到您自己的服务,则可以推测,您可以将任何想要的内容注入到宝石中....