BUG Bus Error ruby 1.8.7
我在使用Xcode 4.2 GM(新MacBook)在Lion 10.7.1上使用RVM编译Ruby 1.8.7后出现错误。
它编译得很好但是当我尝试安装任何gem我得到以下内容:
gem install bundler /Users/me/.rvm/rubies/ruby-1.8.7-p352/lib/ruby/1.8/timeout.rb:60: [BUG] Bus Error ruby 1.8.7 (2011-06-30 patchlevel 352) [i686-darwin11.1.0] Abort trap: 6
更新 :最后我希望安装Xcode 4.2,安装了Ruby 1.8.7,1.9.x的RVM,并且一切正常。
由于我不得不解析其中的几个答案,以便使用XCode 4.2,我想我会把它们放在一起:
- 安装Xcode 4.2
- 从https://github.com/kennethreitz/osx-gcc-installer安装gcc独立编译器(取代Xcode)
- 将
export CC=gcc-4.2
添加到〜/ .bash_profile或等效(不要忘记重新加载) - 运行
rvm implode" then re-install rvm
http://beginrescueend.com/
在这一点上,我能够安装ruby-1.8.7(和ruby-1.9.2),并实际上让我的gem安装。
所以nuking RVM( rvm implode
)并重新安装没有任何区别。 我最终安装了Xcode 4.2,然后安装了GCC编译器,之后覆盖了Xcode编译器。
以下是谷歌搜索这些的步骤。
-
安装Xcode 4.2.x.
-
从https://github.com/kennethreitz/osx-gcc-installer安装GCC独立编译器
注意:Xcode 4.3 beta最近发布。 我正在测试这是否解决了编译问题。
多 篇文章表明,Ruby不喜欢使用LLVM进行编译。 权宜之计的措施是彻底删除RVM安装 – 链接的文章说明了 – 然后用普通的GCC重新编译Ruby。 真正的解决方案必须来自Apple / LLVM或Ruby团队。
我解决了这个问题
- 安装Xcode 4.2.x,
- 将
export CC=gcc
添加到〜/ .bash_profile中, - 重新加载环境(
source ~/.bash_profile
), - 执行
rvm install 1.9.3
, - 执行
rvm ruby-1.9.3-rc1
, - 执行
gem update --system
,最后 - 执行
gem install bundler
问题出在Xcode 4.2.x版本上。 如果您运行rvm get head
您将看到此消息“请勿使用Xcode Version 4.2.x.它目前无法构建多个rubies和gem ……”。
我没有ruby v1.8.7的解决方案。
我希望它有所帮助。
您可以在此处下载查找独立的GCC安装程序说明: https : //github.com/kennethreitz/osx-gcc-installer
这为您提供了基于非llvm的gcc安装,而无需使用Xcode。
然后,您可以使用该命令
export CC=/usr/bin/gcc-4.2
这允许您拥有最新的X代码用于OSX目的,并且仍然有一个快乐的gcc版本的ruby。
我需要在这台机器上使用Xcode,所以独立的gcc并没有为我做这件事。
在其他海报中,我遵循了RVM更新发布说明末尾的建议。
注意,我不需要删除RVM。 我成功删除了Xcode 4.2.1(完全),并重新安装了Xcode 4.1,然后执行CC=/usr/bin/gcc-4.2 rvm install 1.8.7
技巧。 在我的情况下,我将export CC="/usr/bin/gcc-4.2"
放在我的个人资料中以节省一些打字,同时还设置了各种gem。
这也适用于Ruby Enterprise Edition(ree-1.8.7-2011.03),它也失败了。
rvm安装后文档说:
** Lion用户: 不要将Xcode版本4.2.x用于OS X Lion。 它目前无法构建几个ruby和gem,以及几个Homebrew和Macports包。 Xcode版本4.1(4B110)的工作原理。 您可以在以下url找到适用于OS X Lion的Xcode 4.1: https : //developer.apple.com/downloads/download.action?path = Develorator_Tools / xcode_4.1_for_lion / xcode_4.1_for_lion.dmg
这对我有用。