无法安装ruby gems - zlib错误

时间:2008-08-26 14:47:52

标签: ruby gem

我正在尝试安装一些Ruby Gems,所以当我收到Twitter消息时,我可以使用Ruby通知我。但是,在执行gem update --system之后,我现在每次尝试执行任何gem install时都会收到zlib错误。下面是我在尝试安装ruby gem时获得的控制台输出。 (以及gem environment的输出)。

C:\data\ruby>gem install twitter
ERROR:  While executing gem ... (Zlib::BufError)
    buffer error

C:\data\ruby>gem update --system
Updating RubyGems
ERROR:  While executing gem ... (Zlib::BufError)
    buffer error

C:\data\ruby>gem environment
RubyGems Environment:
  - RUBYGEMS VERSION: 1.2.0
  - RUBY VERSION: 1.8.6 (2007-03-13 patchlevel 0) [i386-mswin32]
  - INSTALLATION DIRECTORY: c:/ruby/lib/ruby/gems/1.8
  - RUBY EXECUTABLE: c:/ruby/bin/ruby.exe
  - EXECUTABLE DIRECTORY: c:/ruby/bin
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86-mswin32-60
  - GEM PATHS:
     - c:/ruby/lib/ruby/gems/1.8
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :benchmark => false
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - http://gems.rubyforge.org/

9 个答案:

答案 0 :(得分:5)

发现它!我在Windows上遇到了同样的问题(它突然出现,没有我做更新,但无论如何):

它与多个冲突的zlib版本有关(我认为)。

在ruby / lib / ruby​​ / 1.8 / i386-msvcrt中,确保存在zlib.so文件。就我而言,它已经存在了。如果没有,您可以尝试安装ruby-zlib。

然后转到ruby / lib / ruby​​ / site_ruby / 1.8 ./i386-msvcrt并删除那里的zlib.so文件。

在ruby / bin中,应该有一个zlib1.dll。出于某种原因,我的Ruby版本没有使用这个dll。我下载了最新版本(1.2.3)并在那里安装了它。我不得不将它重命名为zlib.dll才能使用它。

tada! Rubygems再次工作。

希望这有帮助。

答案 1 :(得分:4)

答案 2 :(得分:3)

我今晚也开始接受这个。谷歌搜索出现了一堆没有提供结果的建议

gem update --system

还有一些来自jamis的代码粘贴,它应该替换package.rb中的一个函数,但原来应该替换它是无处可寻的。

重新安装rubygems并没有帮助。我现在正在重新安装红宝石.........并且它已修复。虽然很痛苦。

答案 3 :(得分:1)

重新安装Ruby已将此问题排除在外。这不是我想要的;我想知道为什么我会遇到这个问题,但这一切都已经解决了。

答案 4 :(得分:1)

它通常会在您的下载失败时显示 - 即由于网络超时,手动下载错误等原因导致您的宝石损坏。只需重试,或手动下载宝石并在文件中指向gem

答案 5 :(得分:1)

如果gem update --system不起作用,将ruby/bin/zlib1.dll重命名为zlib.dll无助于尝试:

打开文件RUBY_DIR\lib\ruby\site_ruby\1.8\rubygems.rb

用此替换现有的def self.gunzip(data)

  def self.gunzip(data)
    require 'stringio'
    require 'zlib'
    data = StringIO.new data

    # Zlib::GzipReader.new(data).read
    data.read(10) # skip the gzip header
    zis = Zlib::Inflate.new(-Zlib::MAX_WBITS)
    is = StringIO.new(zis.inflate(data.read))
  end

答案 6 :(得分:1)

如何cd进入rubysrc / ext / zlib,然后是ruby extendconf.rb,然后是makemake install

完成后,重新安装ruby。

我在ubuntu 10.04上做了这个并且成功了。

答案 7 :(得分:0)

在您执行任何其他操作之前,请尝试更新ZLib。我在OS X上遇到了类似的问题并且更新了Compress::Zlib(一个到ZLib的Perl接口)来治愈它 - 所以我认为ZLib的旧版本(现在是1.2.3)可能就是你的问题所在...

答案 8 :(得分:0)

如果所有其他方法都失败,

安装纯ruby zlib