【问题标题】:not in gzip format error不是 gzip 格式错误
【发布时间】:2010-06-17 05:46:02
【问题描述】:

在安装任何 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

请帮我解决这个问题

【问题讨论】:

标签: ruby gzip installation


【解决方案1】:

看起来 ruby​​gems.org(或您定义的任何 gem 源)已关闭。

【讨论】:

    【解决方案2】:

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

    大多数人通过清理缓存文件解决了tar_input.rb 错误。我解决了 ruby​​_core_source.rb:57 'initialize' 的问题:不是 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 编辑的 ppl。希望能永远解决。

    这是我的发现的详细描述:

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

    这是解决方法,您必须更改源代码:

    https://gist.github.com/1183048
    

    【讨论】:

      【解决方案3】:

      确保您使用的是正确的 Gem 来源。

      $ gem sources
      

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

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

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

      $ gem update --system
      

      【讨论】:

      • 运行 $ gem sources 后输出为 *** CURRENT SOURCES *** gems.rubyforge.org gems.github.com 运行 $gem update --system 输出后将是 ** REMOTE GEMS *** 错误:虽然执行 gem ... (Zlib::GzipFile::Error) 不是 gzip 格式
      • 使用$ gem sources 命令清除所有现有的Gem 源,然后添加http://rubygems.org 作为第一个源。 gems.rubyforge.org 是旧网址。
      • 根据您的建议,我做了以下更改,然后同样的问题 C:\Documents and Settings\gangunra>gem sources *** CURRENT SOURCES *** rubygems.org C:\Documents and Settings \gangunra>gem update --system Updating RubyGems ERROR: While execution gem ... (Zlib::GzipFile::Error) not in gzip format
      【解决方案4】:

      找出你的 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.
      ...
      

      请注意,更新会验证旧的源 URL 不再有效……

      您现在应该可以继续安装了,在我的例子中是 rake。

      【讨论】:

        【解决方案5】:

        我在使用需要第 2 阶段身份验证的网络时遇到了这个问题。我忘记在浏览器中进行身份验证,因此任何 Web 请求都被重定向到本地身份验证页面。 gem 似乎不会检查它收到的响应是否实际上来自实际的 ruby​​gems.org 服务器(除非您使用 ssl 证书,否则它不能仅基于地址查找)。它没有告诉您它无法到达真正的 ruby​​gems 服务器,而是告诉您它接收到的有效负载的格式不正确(压缩)。假设你运行了一个恶意 DNS 服务器,将 ruby​​gems.org 重定向到你自己的服务,你可以将任何你想要的东西注入到 gems 中......

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2011-01-13
          • 2012-09-24
          • 2016-03-08
          • 1970-01-01
          • 2012-11-20
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多