用扩展安装gem总是失败 [英] Installing gems with extensions always fails

查看:112
本文介绍了用扩展安装gem总是失败的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我刚刚安装了Ubuntu 13.04服务器,并安装了RVM 1.21.11,Ruby 1.9.3-p448和Rubygems 2.0.5。

许多宝石,例如成功安装了 mongo aws-s3 json



然而,编译扩展的gem失败。我尝试安装 nokogiri mongo_ext bson_ext 。他们都以同样的方式失败,如下所示。



任何想法如何解决这个问题?

  [nick @ mongo01〜] gem install mongo_ext -u -V --backtrace 
HEAD http://rubygems.org/latest_specs.4.8.gz
302暂时移动
HEAD http://production.s3.rubygems.org/latest_specs.4.8.gz
304未修改
安装gem mongo_ext-0.19.3
/ usr / local / rvm / gems / ruby​​-1.9.3-p448 / gems / mongo_ext-0.19.3 / Rakefile
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/mongo- extensions.gemspec
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/extconf.rb
/ usr / local / rvm / gems / ruby​​-1.9.3-p448 / gems / mongo_ext-0.19.3 / ext / cbson / buffer.c
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext- 0.19.3 / ext / cbson / cbson.c
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/encoding_helpers.c
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/buffer.h
/usr/local/rvm/gems/ruby-1.9。 3-P448 /宝石s / mongo_ext-0.19.3 / ext / cbson / encoding_helpers.h
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/version。 h
构建原生扩展。这可能需要一段时间...
/usr/local/rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb
检查asprintf()... yes
检查ruby / st.h ...是
检查ruby / regex.h ...是
检查ruby / encoding.h ...是
创建Makefile
makeDESTDIR =
编译encoding_helpers.c
编译buffer.c
编译cbson.c
cbson.c:函数'write_utf8':
cbson.c:80:36:警告:传递'check_string'的参数1中的指针目标在签名方面有所不同[b -b] b b从cbson.c包含的文件中:46:0:
encoding_helpers .h:26:10:note:expected'const unsigned char *'but argument is of'char *'
cbson.c:在函数'objectid_generate'中:
cbson.c:858:5 :警告:函数'htonl'的隐式声明[-Wimplicit-function-declaration]
cbson.c:867:5:警告:函数'htons'的隐式声明[-Wimplicit-function-declaration]
cbson.c:在函数'write_element' :
cbson.c:264:17:警告:忽略'asprintf'的返回值,用属性声明warn_unused_result [-Wunused-result]
链接共享对象mongo_ext / cbson.so
makeDESTDIR =安装
/ usr / bin / install -c -m 0755 cbson.so /usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext /cbson/.gem.20130718-9545-1ue92ws/mongo_ext
安装默认的cbson库
错误:执行gem时(NoMethodError)
未定义的方法`join'for nil:NilClass
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:685:in`在build_extensions'
中的块中拯救在/ usr / local / ruby​​ / rvm / rubies / ruby​​-1.9.3-p448 / lib / ruby​​ / site_ruby / 1.9.1 / ruby​​gems / installer.rb:653:在`each'
/usr/local/rvm/rubies/ruby-1.9 0.3-P448 / LIB /红宝石/ site_ruby / 1.9.1 /的rubygems / installer.rb:653:在`build_extensions'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:218:in`install'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:371:in`block in install'
/ usr / local / rvm / rubies / ruby​​-1.9.3-p448 / lib / ruby​​ / site_ruby / 1.9.1 / ruby​​gems / dependency_installer.rb:331:在`each'
/usr/local/rvm/rubies/ruby-1.9 .3-p448 / lib / ruby​​ / site_ruby / 1.9.1 / ruby​​gems / dependency_installer.rb:331:在`each_with_index'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ ruby / site_ruby / 1.9.1 / ruby​​gems / dependency_installer.rb:331:在`install'中
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1 /rubygems/commands/install_command.rb:166:in`block in execute'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/ commands / install_command.rb:158:在`each'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_r uby / 1.9.1 / ruby​​gems / commands / install_command.rb:158:在`execute'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1 /rubygems/command.rb:305:in`invoke_with_build_args'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb: 170:在`process_args'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:130:in`run'
/usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:60:in`run'
/ usr / local /rvm/rubies/ruby-1.9.3-p448/bin/gem:21:in`< main>'
[nick @ mongo01〜]
[nick @ mongo01〜] gem -v
2.0.5
[nick @ mongo01〜] ruby​​ -v
ruby​​ 1.9.3p448(2013-06-27 revision 41675)[x86_64-linux]
[nick @ mongo01〜 ] rvm -v

rvm 1.21.11(稳定)由Wayne E. Seguin ,Michal Papis< mpapis@gmail.com> [https://rvm.io/]


解决方案

是由RubyGems中的一个错误引起的。它已在 8d1751c6 中得到修复。



在RubyGems v2.0.6发布之前,解决方法是手动应用 8d1751c6


I just setup an Ubuntu 13.04 server, and installed RVM 1.21.11, Ruby 1.9.3-p448, and Rubygems 2.0.5 .

Many gems, such as mongo, awesome_print, aws-s3, and json, installed successfully.

However, gems that compile an extension fail. I've tried to install nokogiri, mongo_ext, and bson_ext . They all fail in the same way, as shown below.

Any idea how to fix this?

[nick@mongo01 ~] gem install mongo_ext -u -V --backtrace
HEAD http://rubygems.org/latest_specs.4.8.gz
302 Moved Temporarily
HEAD http://production.s3.rubygems.org/latest_specs.4.8.gz
304 Not Modified
Installing gem mongo_ext-0.19.3
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/Rakefile
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/mongo-extensions.gemspec
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/extconf.rb
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/buffer.c
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/cbson.c
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/encoding_helpers.c
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/buffer.h
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/encoding_helpers.h
/usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/version.h
Building native extensions.  This could take a while...
/usr/local/rvm/rubies/ruby-1.9.3-p448/bin/ruby extconf.rb
checking for asprintf()... yes
checking for ruby/st.h... yes
checking for ruby/regex.h... yes
checking for ruby/encoding.h... yes
creating Makefile
make "DESTDIR="
compiling encoding_helpers.c
compiling buffer.c
compiling cbson.c
cbson.c: In function 'write_utf8':
cbson.c:80:36: warning: pointer targets in passing argument 1 of 'check_string' differ in signedness [-Wpointer-sign]
In file included from cbson.c:46:0:
encoding_helpers.h:26:10: note: expected 'const unsigned char *' but argument is of type 'char *'
cbson.c: In function 'objectid_generate':
cbson.c:858:5: warning: implicit declaration of function 'htonl' [-Wimplicit-function-declaration]
cbson.c:867:5: warning: implicit declaration of function 'htons' [-Wimplicit-function-declaration]
cbson.c: In function 'write_element':
cbson.c:264:17: warning: ignoring return value of 'asprintf', declared with attribute warn_unused_result [-Wunused-result]
linking shared-object mongo_ext/cbson.so
make "DESTDIR=" install
/usr/bin/install -c -m 0755 cbson.so /usr/local/rvm/gems/ruby-1.9.3-p448/gems/mongo_ext-0.19.3/ext/cbson/.gem.20130718-9545-1ue92ws/mongo_ext
installing default cbson libraries
ERROR:  While executing gem ... (NoMethodError)
    undefined method `join' for nil:NilClass
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:685:in `rescue in block in build_extensions'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:675:in `block in build_extensions'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:653:in `each'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:653:in `build_extensions'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/installer.rb:218:in `install'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:371:in `block in install'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:331:in `each'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:331:in `each_with_index'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/dependency_installer.rb:331:in `install'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/commands/install_command.rb:166:in `block in execute'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/commands/install_command.rb:158:in `each'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/commands/install_command.rb:158:in `execute'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/command.rb:305:in `invoke_with_build_args'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:170:in `process_args'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/command_manager.rb:130:in `run'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/lib/ruby/site_ruby/1.9.1/rubygems/gem_runner.rb:60:in `run'
        /usr/local/rvm/rubies/ruby-1.9.3-p448/bin/gem:21:in `<main>'
[nick@mongo01 ~]
[nick@mongo01 ~] gem -v
2.0.5
[nick@mongo01 ~] ruby -v
ruby 1.9.3p448 (2013-06-27 revision 41675) [x86_64-linux]
[nick@mongo01 ~] rvm -v

rvm 1.21.11 (stable) by Wayne E. Seguin <wayneeseguin@gmail.com>, Michal Papis <mpapis@gmail.com> [https://rvm.io/]

解决方案

This was caused by a bug in RubyGems. It was fixed in 8d1751c6.

Until RubyGems v2.0.6 is released, a workaround is to apply 8d1751c6 manually.

这篇关于用扩展安装gem总是失败的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆