【问题标题】:Strange errors when installing my gem安装我的 gem 时出现奇怪的错误
【发布时间】:2012-01-17 21:52:45
【问题描述】:

我刚刚发布了 ginjo-rfm gem 的 v2.0.0。当我在库存的 Snow Leopard 机器(rubygems 版本 1.3.5)上安装这个 gem 时,我收到以下错误:

admin$ sudo gem install ginjo-rfm --no-rdoc --no-ri
ERROR:  Error installing ginjo-rfm:
    multi_json requires RubyGems version >= 1.3.6

但是,gem 安装并运行成功。

我只有一个运行时依赖项:ActiveSupport >= 2.3.5,并且它已经安装在我的所有机器上。在我的 gem 中,我什至没有提到 multi_json。

更奇怪的是,当我尝试在 Ubuntu 8.10(rubygems 版本 1.3.5)上安装 ginjo-rfm 时,rubygems 会引发缓冲区溢出错误(见下文)。

我的宝石有什么问题?这是一个相当简单的 gem & gemspec。我已经梳理过了,找不到任何会导致此类错误的问题。

如果有人想看看原始宝石:

mkdir ginjo; cd ginjo
gem fetch ginjo-rfm
tar -xf ginjo-rfm-2.0.0.gem

或者,在“元数据”文件中查看嵌入为 yaml 的 gemspec(见下文)。

谢谢!

缓冲区溢出错误

~$ sudo gem install ginjo-rfm --no-rdoc --no-ri
*** buffer overflow detected ***: /usr/local/bin/ruby terminated
======= Backtrace: =========
/lib/tls/i686/cmov/libc.so.6(__fortify_fail+0x48)[0xf76bf558]
/lib/tls/i686/cmov/libc.so.6[0xf76bd680]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(rb_syck_mktime+0x545)[0xf752cdb5]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(yaml_org_handler+0xabc)[0xf752d8dc]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_defaultresolver_node_import+0x3f)[0xf752d9af]
/usr/local/bin/ruby[0x8060c74]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x8061a5a]
/usr/local/bin/ruby(rb_funcall+0x20)[0x8061b90]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(rb_syck_load_handler+0x69)[0xf752b269]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_hdlr_add_node+0x4d)[0xf7525edd]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syckparse+0xc11)[0xf7526cb1]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_parse+0x32)[0xf7522e12]
/usr/local/lib/ruby/1.8/i686-linux/syck.so(syck_parser_load+0x112)[0xf752dd92]
/usr/local/bin/ruby[0x8056ecd]
/usr/local/bin/ruby[0x8060c74]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x805cd31]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x805cd31]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x805e605]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805bb9c]
/usr/local/bin/ruby[0x805cde1]
/usr/local/bin/ruby[0x805e766]
/usr/local/bin/ruby[0x805f412]
/usr/local/bin/ruby[0x805be2d]
/usr/local/bin/ruby[0x805f412]
/usr/local/bin/ruby[0x8069ac5]
/usr/local/bin/ruby[0x8060c74]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805bb9c]
/usr/local/bin/ruby[0x805ec18]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x805ec18]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby(rb_obj_call_init+0x49)[0x8061779]
/usr/local/bin/ruby(rb_class_new_instance+0x2a)[0x808b53a]
/usr/local/bin/ruby[0x8056ecd]
/usr/local/bin/ruby[0x8060c74]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby(rb_call_super+0x68)[0x8068de8]
/usr/local/bin/ruby[0x80603ad]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805bb9c]
/usr/local/bin/ruby[0x805cd31]
/usr/local/bin/ruby[0x805e766]
/usr/local/bin/ruby[0x8060b79]
/usr/local/bin/ruby[0x8060e14]
/usr/local/bin/ruby[0x805ba84]
/usr/local/bin/ruby[0x8069e43]
/usr/local/bin/ruby[0x805d2be]
/usr/local/bin/ruby[0x8060b79]
======= Memory map: ========
08048000-080fb000 r-xp 00000000 ca:01 745349                             /usr/local/bin/ruby
080fb000-080fc000 r--p 000b2000 ca:01 745349                             /usr/local/bin/ruby
080fc000-080fd000 rw-p 000b3000 ca:01 745349                             /usr/local/bin/ruby
080fd000-0810d000 rw-p 00000000 00:00 0 
09fa2000-0cf87000 rw-p 00000000 00:00 0                                  [heap]
f68d4000-f6c6f000 rw-p 00000000 00:00 0 
f6ed9000-f6ee6000 r-xp 00000000 ca:01 743029                             /lib/libgcc_s.so.1
f6ee6000-f6ee7000 r--p 0000c000 ca:01 743029                             /lib/libgcc_s.so.1
f6ee7000-f6ee8000 rw-p 0000d000 ca:01 743029                             /lib/libgcc_s.so.1
f6ef6000-f6f06000 r-xp 00000000 ca:01 1523795                            /lib/tls/i686/cmov/libresolv-2.8.90.so
f6f06000-f6f07000 r--p 0000f000 ca:01 1523795                            /lib/tls/i686/cmov/libresolv-2.8.90.so
f6f07000-f6f08000 rw-p 00010000 ca:01 1523795                            /lib/tls/i686/cmov/libresolv-2.8.90.so
f6f08000-f6f0a000 rw-p 00000000 00:00 0 
f6f0a000-f6f0e000 r-xp 00000000 ca:01 1523788                            /lib/tls/i686/cmov/libnss_dns-2.8.90.so
f6f0e000-f6f0f000 r--p 00003000 ca:01 1523788                            /lib/tls/i686/cmov/libnss_dns-2.8.90.so
f6f0f000-f6f10000 rw-p 00004000 ca:01 1523788                            /lib/tls/i686/cmov/libnss_dns-2.8.90.so
f6f10000-f6f12000 r-xp 00000000 ca:01 743040                             /lib/libnss_mdns4_minimal.so.2
f6f12000-f6f13000 rw-p 00001000 ca:01 743040                             /lib/libnss_mdns4_minimal.so.2
f6f1b000-f7122000 rw-p 00000000 00:00 0 
f7122000-f712c000 r-xp 00000000 ca:01 807183                             /usr/local/lib/ruby/1.8/i686-linux/socket.so
f712c000-f712d000 r--p 00009000 ca:01 807183                             /usr/local/lib/ruby/1.8/i686-linux/socket.so
f712d000-f712e000 rw-p 0000a000 ca:01 807183                             /usr/local/lib/ruby/1.8/i686-linux/socket.so
f712e000-f7131000 r-xp 00000000 ca:01 807158                             /usr/local/lib/ruby/1.8/i686-linux/digest.so
f7131000-f7132000 r--p 00002000 ca:01 807158                             /usr/local/lib/ruby/1.8/i686-linux/digest.so
f7132000-f7133000 rw-p 00003000 ca:01 807158                             /usr/local/lib/ruby/1.8/i686-linux/digest.so
f7133000-f7147000 r-xp 00000000 ca:01 745216                             /usr/lib/libz.so.1.2.3.3
f7147000-f7149000 rw-p 00013000 ca:01 745216                             /usr/lib/libz.so.1.2.3.3
f7149000-f727c000 r-xp 00000000 ca:01 32847                              /usr/lib/i686/cmov/libcrypto.so.0.9.8
f727c000-f7284000 r--p 00132000 ca:01 32847                              /usr/lib/i686/cmov/libcrypto.so.0.9.8
f7284000-f7291000 rw-p 0013a000 ca:01 32847                              /usr/lib/i686/cmov/libcrypto.so.0.9.8
f7291000-f7295000 rw-p 00000000 00:00 0 
f7295000-f72d7000 r-xp 00000000 ca:01 32848                              /usr/lib/i686/cmov/libssl.so.0.9.8
f72d7000-f72d8000 ---p 00042000 ca:01 32848                              /usr/lib/i686/cmov/libssl.so.0.9.8
f72d8000-f72d9000 r--p 00042000 ca:01 32848                              /usr/lib/i686/cmov/libssl.so.0.9.8
f72d9000-f72dc000 rw-p 00043000 ca:01 32848                              /usr/lib/i686/cmov/libssl.so.0.9.8
f72dc000-f7313000 r-xp 00000000 ca:01 807173                             /usr/local/lib/ruby/1.8/i686-linux/openssl.so
f7313000-f7314000 r--p 00036000 ca:01 807173                             /usr/local/lib/ruby/1.8/i686-linux/openssl.so
f7314000-f7315000 rw-p 00037000 ca:01 807173                             /usr/local/lib/ruby/1.8/i686-linux/openssl.so
f7315000-f7432000 rw-p 00000000 00:00 0 
f7432000-f743c000 r-xp 00000000 ca:01 1523789                            /lib/tls/i686/cmov/libnss_files-2.8.90.so
f743c000-f743d000 r--p 00009000 ca:01 1523789                            /lib/tls/i686/cmov/libnss_files-2.8.90.so
f743d000-f743e000 rw-p 0000a000 ca:01 1523789                            /lib/tls/i686/cmov/libnss_files-2.8.90.so
f743e000-f7447000 r-xp 00000000 ca:01 1523791                            /lib/tls/i686/cmov/libnss_nis-2.8.90.so
f7447000-f7448000 r--p 00008000 ca:01 1523791                            /lib/tls/i686/cmov/libnss_nis-2.8.90.soAborted
cerne@rack02:~$ 

包含 gemspec 为 yaml 的元数据文件

--- !ruby/object:Gem::Specification 
name: ginjo-rfm
version: !ruby/object:Gem::Version 
  hash: 15
  prerelease: 
  segments: 
  - 2
  - 0
  - 0
  version: 2.0.0
platform: ruby
authors: 
- Geoff Coffey
- Mufaddal Khumri
- Atsushi Matsuo
- Larry Sprock
- Bill Richardson
autorequire: 
bindir: bin
cert_chain: []

date: 2012-01-08 00:00:00 Z
dependencies: 
- !ruby/object:Gem::Dependency 
  name: activesupport
  prerelease: false
  requirement: &id001 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 9
        segments: 
        - 2
        - 3
        - 5
        version: 2.3.5
  type: :runtime
  version_requirements: *id001
- !ruby/object:Gem::Dependency 
  name: activemodel
  prerelease: false
  requirement: &id002 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id002
- !ruby/object:Gem::Dependency 
  name: rake
  prerelease: false
  requirement: &id003 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id003
- !ruby/object:Gem::Dependency 
  name: rdoc
  prerelease: false
  requirement: &id004 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id004
- !ruby/object:Gem::Dependency 
  name: rspec
  prerelease: false
  requirement: &id005 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ~>
      - !ruby/object:Gem::Version 
        hash: 27
        segments: 
        - 1
        - 3
        - 0
        version: 1.3.0
  type: :development
  version_requirements: *id005
- !ruby/object:Gem::Dependency 
  name: diff-lcs
  prerelease: false
  requirement: &id006 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id006
- !ruby/object:Gem::Dependency 
  name: yard
  prerelease: false
  requirement: &id007 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id007
- !ruby/object:Gem::Dependency 
  name: libxml-ruby
  prerelease: false
  requirement: &id008 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id008
- !ruby/object:Gem::Dependency 
  name: nokogiri
  prerelease: false
  requirement: &id009 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id009
- !ruby/object:Gem::Dependency 
  name: hpricot
  prerelease: false
  requirement: &id010 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id010
- !ruby/object:Gem::Dependency 
  name: ox
  prerelease: false
  requirement: &id011 !ruby/object:Gem::Requirement 
    none: false
    requirements: 
    - - ">="
      - !ruby/object:Gem::Version 
        hash: 3
        segments: 
        - 0
        version: "0"
  type: :development
  version_requirements: *id011
description: Rfm lets your Ruby scripts and Rails applications talk directly to your Filemaker server. Ginjo-rfm includes ActiveModel compatibility, multiple XML parsers, compound Filemaker find requests, and a configuration API.
email: http://groups.google.com/group/rfmcommunity
executables: []

extensions: []

extra_rdoc_files: 
- LICENSE
- README.md
- CHANGELOG.md
- lib/rfm/VERSION
files: 
- lib/rfm/base.rb
- lib/rfm/database.rb
- lib/rfm/error.rb
- lib/rfm/layout.rb
- lib/rfm/metadata/field.rb
- lib/rfm/metadata/field_control.rb
- lib/rfm/metadata/script.rb
- lib/rfm/metadata/value_list_item.rb
- lib/rfm/record.rb
- lib/rfm/resultset.rb
- lib/rfm/server.rb
- lib/rfm/utilities/case_insensitive_hash.rb
- lib/rfm/utilities/compound_query.rb
- lib/rfm/utilities/config.rb
- lib/rfm/utilities/core_ext.rb
- lib/rfm/utilities/factory.rb
- lib/rfm/utilities/xml_parser.rb
- lib/rfm/version.rb
- lib/rfm/xml_mini/hpricot.rb
- lib/rfm/xml_mini/ox_sax.rb
- lib/rfm/xml_mini/rexml_sax.rb
- lib/rfm.rb
- lib/rfm/VERSION
- LICENSE
- README.md
- CHANGELOG.md
homepage: https://rubygems.org/gems/ginjo-rfm
licenses: []

post_install_message: 
rdoc_options: 
- --line-numbers
- --main
- README.md
require_paths: 
- lib
required_ruby_version: !ruby/object:Gem::Requirement 
  none: false
  requirements: 
  - - ">="
    - !ruby/object:Gem::Version 
      hash: 3
      segments: 
      - 0
      version: "0"
required_rubygems_version: !ruby/object:Gem::Requirement 
  none: false
  requirements: 
  - - ">"
    - !ruby/object:Gem::Version 
      hash: 25
      segments: 
      - 1
      - 3
      - 1
      version: 1.3.1
requirements: []

rubyforge_project: 
rubygems_version: 1.8.10
signing_key: 
specification_version: 3
summary: Ruby to Filemaker adapter
test_files: []

has_rdoc: 

【问题讨论】:

  • 多 json 依赖可能来自主动支持(我认为是 >= 3.1 版本)
  • 我也是这么想的。但是我不明白为什么当我已经安装了 ActiveSupport 2.3.5 时它会绊倒我。我想知道我的 gemspec 是否有问题导致 ruby​​gems 跳过已安装的 ActiveSupport,而是寻找 v3.1。
  • 呃,这似乎不是依赖问题,或者至少不是列出的 gemspec 依赖的问题。我从 gemspec 中删除了所有依赖项,但在 Snow Leopard 上仍然出现 multi_json 错误,在 Ubuntu 8.10 上仍然出现缓冲区溢出错误。所以......我的gem的代码中一定有问题。 rubygems 是否真的在安装过程中加载了 gem?
  • 我一定是疯了。我再次从 ginjo-rfm 的测试副本中删除了 activesupport 依赖项,现在 gem 安装错误已经停止。作为使用旧版本的 ruby​​gems 和 activesupport 的陷阱,我将放弃这一点。

标签: ruby rubygems gemspecs


【解决方案1】:

您的 RubyGems 版本已过期。只需这样做:

sudo gem update --system

然后:

sudo gem install rails

在 Mac OS X Snow Leopard 10.6.8 上测试并运行。

【讨论】:

  • 是的:1.3.x 大约 2 岁。为自己省点悲伤并更新它。
  • 只是跟进,我认为这绝对是问题所在。我一直在使用 RVM 安装更多最新的 rubies 和 ruby​​gems,从那以后我没有遇到过这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-09-27
  • 1970-01-01
  • 2011-06-15
相关资源
最近更新 更多