2011-09-14 105 views
2

我刚刚安装了带有Xcode 4.1的OS X Lion。我使用Ruby 1.9.2和宝石版本1.5.0。当试图从Rails 3.0.9升级到3.1时,出现以下错误:更新到Rails 3.1失败

$ ruby -v 
ruby 1.9.2p0 (2010-08-18 revision 29036) [i386-darwin9.8.0] 
$ rails -v 
Rails 3.0.9 
$ gem -v 
1.5.0 
$ gem update rails 
Updating installed gems 
Updating rails 
Building native extensions. This could take a while... 
ERROR: Error installing rails: 
    ERROR: Failed to build gem native extension. 

     /Users/me/.rvm/rubies/ruby-1.9.2-p0/bin/ruby extconf.rb 
creating Makefile 

make 
gcc -I. -I/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/i386-darwin9.8.0 -I/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/backward -I/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1 -I. -D_XOPEN_SOURCE -D_DARWIN_C_SOURCE -fno-common -O3 -ggdb -Wextra -Wno-unused-parameter -Wno-parentheses -Wpointer-arith -Wwrite-strings -Wno-missing-field-initializers -Wshorten-64-to-32 -Wno-long-long -fno-common -pipe -o bcrypt_ext.o -c bcrypt_ext.c 
In file included from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby.h:32, 
       from bcrypt_ext.c:1: 
/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/ruby.h:108: error: size of array ‘ruby_check_sizeof_long’ is negative 
/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/ruby.h:112: error: size of array ‘ruby_check_sizeof_voidp’ is negative 
In file included from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/intern.h:29, 
       from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/ruby.h:1327, 
       from /Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby.h:32, 
       from bcrypt_ext.c:1: 
/Users/me/.rvm/rubies/ruby-1.9.2-p0/include/ruby-1.9.1/ruby/st.h:69: error: size of array ‘st_check_for_sizeof_st_index_t’ is negative 
bcrypt_ext.c: In function ‘bc_salt’: 
bcrypt_ext.c:42: warning: implicit conversion shortens 64-bit value into a 32-bit value 
make: *** [bcrypt_ext.o] Error 1 


Gem files will remain installed in /Users/me/.rvm/gems/ruby-1.9.2-p0/gems/bcrypt-ruby-3.0.1 for inspection. 
Results logged to /Users/me/.rvm/gems/ruby-1.9.2-p0/gems/bcrypt-ruby-3.0.1/ext/mri/gem_make.out 
Nothing to update 

有没有人知道这里发生了什么?

谢谢!

回答

1

而不是做 “更新” 的,只是 “创业板安装导轨-v 3.1”

UPDATE: 显然轨3.1.0(activemodel的实际)取决于bcrypt-红宝石。 3.1.1中应删除此依赖关系(请参阅https://github.com/rails/rails/issues/2687)。

如果您不想等待,您需要解决bcrypt-ruby的构建问题。编译器错误提示ruby与编译器之间存在32位/ 64位不匹配。您是否将Lion安装在Leopard上?如果是这样,你可能不得不重建所有的rvm红宝石和本地扩展宝石。

即使您想等待,您可能应该重新编译,因为您可能会再次遇到此类编译器问题。作为测试,请尝试安装一个本地gem,如:“gem install eventmachine”。如果你得到相同的错误,这是一个很好的指标,每个本地宝石都会遇到这个问题。 http://jtigger-learning.wikidot.com/gem-install-fails-on-building-native-extensions

+0

OP说,他得到了同样的错误:

的人谁在升级到雪豹,这个问题的解释类似的问题,请参见本页面。 –

+0

@robert我没有看到OP提到的“gem install”。我只看到“宝石更新”。 – Kelvin

+0

他发布了我删除的非答复。它所说的只是“试过了,并且得到了这个错误......”并且他复制了与上面在问题中看到的基本相同的文本。我会取消删除答案,以便您可以看到它。 –