安装任何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
请帮我解决这个问题
答案 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重定向到您自己的服务,则可以推测,您可以将任何想要的内容注入到宝石中....