我在尝试使用 RVM 在 OS X Lion 上安装 Rails 时遇到问题。
到目前为止,我已经完成了以下工作:
已安装 Mac OS X Lion 版本 10.7(内部版本 11A459e)。已安装 XCode 4.1 Developer Preview 5。已安装 RVM。使用命令 rvm install 1.8.7 通过 RVM 安装了 1.8.7 版本的 Ruby。注意:我需要使用 1.8.7 而不是 1.9.2。使用命令 rvm 1.8.7 切换到 Ruby 的 1.8.7 版本。使用命令 rvm gemset create rails3 创建了一个新的 gemset。使用命令 rvm use 1.8.7@rails3 切换到新的 gemset。要安装 Rails,我运行了命令 gem install rails 但出现以下错误:/Users/m/.rvm/rubies/ruby-1.8.7-p334/lib/ruby/1.8/timeout.rb:60: [BUG]分段故障
尝试运行任何 gem 命令时会发生同样的错误,所以我认为这不是 Rails 的问题。
从下面的链接来看,我似乎不是唯一遇到这个问题的人:
http://twitter.com/#!/pingles/status/66261101351927809 和 https://github.com/carlhuda/bundler/issues/1058
rvm info
的输出,看看它说了什么。它可能包含一些线索。
解决它!
答案实际上在我上面发布的链接之一上。在安装 ruby 版本(rvm install 1.8.7)之前,我需要运行“export CC=/usr/bin/gcc-4.2
”。有了这些,一切都进行得很顺利。
如果您不想永久导出 CC
,可以执行 CC=/usr/bin/gcc-4.2 rvm install 1.8.7
如果你已经安装了 ruby 1.8.7。只需执行CC=/usr/bin/gcc-4.2 rvm reinstall 1.8.7
如果你安装了 Xcode 4.2,它实际上不再安装非 LLVM gcc,所以你必须添加它。出于某种原因,在您安装 4.2 后降级到 4.1 无法正常工作(至少对我来说没有,其他人也有类似的问题)。
经过一番折腾,这终于对我有用:
从 App Store 安装 Xcode 4.2 使用 OSX gcc 安装程序安装 darwin gcc 安装 REE 确保删除以前尝试的任何痕迹:
关闭所有打开的终端窗口,打开一个新的,然后
rvm remove ree
export CC=/usr/bin/gcc-4.2
rvm install ree
这适用于 rvm 1.8.6、OS X 10.7.2 和 gcc-4.2 版本 4.2.1(Apple build 5666)。
如果您已经安装了 Xcode 4.1,请抵制升级到 4.2 的冲动,应该没问题。
如果这仍然不起作用,请添加--force。所以这变成:
CC=/usr/bin/gcc-4.2 rvm install ruby-1.8.7 --force
make clean
是更合适的命令,而不是 --force
。强制忽略错误,错误是需要注意的。所以要小心。
如果您在使用“export CC=/usr/bin/gcc-4.2
”之前已经安装了 1.8.7,请确保通过执行“rvm remove 1.8.7
”删除它
我的系统上有同样的问题。我安装了 Apple 提供的 Xcode command line 工具,它附带 LLVM 编译器,但没有免费的 LLVM。
Ruby 1.8.7 不能与 LLVM 编译器一起工作,即使是 CC=clang
,所以安装一个 LLVM free gcc 可以解决这个问题。
这里列出了多个选项:
https://github.com/mxcl/homebrew/wiki/Custom-GCC-and-cross-compilers
长话短说,使用 Homebrew 安装 GCC v4.2:
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb
然后安装 ruby 1.8.7:
CC=gcc-4.2 rvm install 1.8.7
brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb
。
而不是“export CC=/usr/bin/gcc-4.2
”做“export CC=gcc
”(应安装xCode 4.2.x)。
检查您拥有的 gcc 版本,如下所示:
ls -Al `which gcc-4.2`
我按照此处的说明进行操作:http://robots.thoughtbot.com/post/27985816073/the-hitchhikers-guide-to-riding-a-mountain-lion
brew update
brew tap homebrew/dupes
brew install apple-gcc42
然后重新安装:
再次检查您的 gcc 路径是什么(用于 CC=):
ls -Al `which gcc-4.2`
(可选)您可以在 .bashrc 中进行设置,例如:
export CC=/usr/bin/gcc-4.2
(可选)删除任何旧版本的 ruby
rvm remove 1.8.7
然后:
CC=/usr/local/bin/gcc-4.2 rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk
或者如果您在个人资料中设置了抄送
rvm --verify-downloads 1 reinstall 1.8.7-p357 --without-tcl --without-tk
请注意 rvm 安装上的标志。我在验证 ftp 服务器上的校验和时遇到问题,以及 tck 的一些问题等等。您可以省略这些标志。
另外:您可能需要删除旧版本的 gemset:
rvm gemset delete <gemset>
然后
gem install bundler
bundle install
希望这可以帮助。
使用 macport 和 ruby-1.9.x 版本。我确实用 ruby gem 成功安装了 rails。
当我在 ~/.rvmrc 中注释行时,我只对 arch x86_64 有同样的问题
rvm_archflags="-arch x86_64"
打开一个新终端并尝试再次安装 ruby-1.8.7
rvm install 1.8.7
它是成功的。
这与 RVM 无关,但如果您正在寻找的是 Lion 的本地开发环境,您可能想尝试一下 RubyStack 这是一个免费的开源一体化安装程序,适用于 Apache、MySQL、 Ruby、Rails 等。它不需要编译并且是独立的,所以如果你不喜欢它,你可以简单地删除安装目录,你就完成了。免责声明:我是 RubyStack 开发人员之一 :)
CC=/usr/bin/gcc-4.2 rvm install 1.8.7
对我不起作用,我使用了 CC=/usr/bin/gcc rvm install 1.8.7
,它确实起作用了(检查“哪个 gcc
”)
即使这个页面上有所有其他建议,我仍然会遇到段错误并感到沮丧,所以我说“去他妈的!”并使用系统提供的 Ruby 1.8.7:
rvm use system
您需要使用 sudo 来安装 gem,但仍然不那么令人头疼。
我的解决方案是覆盖终端中的 /usr/bin/gcc 符号链接。我是这样做的:
https://plus.google.com/101970693023462019144/posts/eYVLvMCqTmc
这不仅修复了我的 RVM 安装,而且确保安装带有本机扩展(如 rmagick)的 gem 可以正常工作。
CC=/usr/bin/gcc-4.2 rvm install 1.8.7
全部一行来覆盖 rvm 安装的 CC。.zshrc
文件中。.rvmrc
脚本时遇到了问题,所以我已经切换回bash
一段时间。因此,我已将该行添加到我的.bash_profile
。