为啥我不能使用 RVM 在 Lion 上安装 Rails?

Posted

技术标签:

【中文标题】为啥我不能使用 RVM 在 Lion 上安装 Rails?【英文标题】:Why can't I install Rails on Lion using RVM?为什么我不能使用 RVM 在 Lion 上安装 Rails? 【发布时间】:2011-09-04 11:25:54 【问题描述】:

我在尝试使用 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

【问题讨论】:

你走在一个非常流血的边缘,添加 1.8.7 可能会使事情复杂化。我建议尝试安装 1.9.2,然后是 Rails,看看情况如何。然后我会尝试改造 1.8.7 和 Rails。照原样,您正在使用两个尚未发布的软件,因此您会发现支持可能还没有赶上。 “分段错误”通常是针对 64 位系统的 32 位构建的结果,这可能在意外的系统版本中发生。研究rvm info 的输出,看看它说了什么。它可能包含一些线索。 公平警告,Lion 受 NDA 保护,因此您可能不允许在指定的 Apple 渠道之外谈论这个问题。如果他们愿意,Apple 可以撤销您讨论它的开发者帐户。 谢谢@the Tin Man:我去看看 rvm info 里有没有什么。遗憾的是,我必须在这个项目中使用 1.8.7;按照上述步骤,但使用 Ruby 1.9.2 允许 Rails 3 安装得很好。 感谢@Chuck 的警告 - 我会小心不要透露任何我同意不透露的内容。 RVM 1.9.2 不适用于任何这些建议。 rvm 检测到 llvm 并且不会运行 【参考方案1】:

修好了!

答案实际上是在我上面发布的链接之一上。在安装 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

【讨论】:

我记得在某处读到 llvm 将是 lion 上的默认编译器,我想这就是你需要这样的东西的原因。 使用该导出命令会更改会话中所有后续命令的 CC...这可能会弄乱其他编译。使用CC=/usr/bin/gcc-4.2 rvm install 1.8.7 全部一行来覆盖 rvm 安装的 CC。 不管怎样,@skue 的注释对我不起作用。我必须将其添加到我的 .zshrc 文件中。 @Benjamin 您使用的是 Z Shell,对吗?值得注意的是,因为显然大多数 Mac 用户只使用 Terminal + Bash。 @Alan H. -- 是的,绝对是 zsh。 FWIW,在 Lion 中,我在 zsh 触发 .rvmrc 脚​​本时遇到了麻烦,所以我已经切换回 bash 一段时间了。因此,我已将该行添加到我的.bash_profile【参考方案2】:

如果你安装了 Xcode 4.2,它实际上不再安装非 LLVM gcc,所以你必须添加它。出于某种原因,在您安装 4.2 后降级到 4.1 无法正常工作(至少对我来说不是这样,其他人也有类似的问题)。

经过一番折腾,这终于对我有用了:

    从 App Store 安装 Xcode 4.2 使用OSX gcc installer 安装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 的冲动,应该没问题。

【讨论】:

我上次来的时候没看到这个,但是在另一个教程中找到了这个包。但是如果上述建议不起作用,这是一个很好的答案! 是的,我刚买了一个新的 MBP,以前的答案都不适合我。 FWIW,当我安装 Xcode 时,我当然得到了最新版本,现在是 4.2.1。我安装了 OSC gcc 安装程序,将导出行添加到我的 .bash_profile,然后使用 --force 重新运行 rvm install 命令,一切顺利。谢谢! 很高兴这有帮助!我遇到了同样的情况,其他答案都不适合我,所以我想记录下来。 在之前的所有建议都失败后,这也对我有用。 作为一个更新,我最近重新安装了 Lion,并且完全不用安装 Xcode 就能让一切正常工作。所以,如果你还没有安装它,你可能只想试试 OSX gcc 安装程序,看看你是否有你需要的东西。【参考方案3】:

如果这仍然不起作用,请添加 --force。 所以这就变成了:

CC=/usr/bin/gcc-4.2 rvm install ruby-1.8.7 --force

【讨论】:

是的,如果您在没有 gcc-4.2 的情况下开始安装,它将从第二次停止的地方继续。所以你需要 --force 清除你已经用 llvm 编译的东西并重新开始。 我把我的 ~/.rvm 搞砸了,仍然不得不使用 --force ty Hans 谢谢汉斯,我也在寻找--force 通常在安装目录的命令行中使用make clean 是更合适的命令,而不是--force。强制忽略错误,错误是需要注意的。所以要小心。【参考方案4】:

如果您在使用“export CC=/usr/bin/gcc-4.2”之前已经安装了 1.8.7,请确保删除它,方法是执行“rvm remove 1.8.7

【讨论】:

【参考方案5】:

我的系统也遇到了同样的问题。我安装了 Apple 提供的 Xcode command line 工具,它附带 LLVM 编译器,但没有免费的 LLVM。

Ruby 1.8.7 不能与 LLVM 编译器一起工作,即使 CC=clang 也不行,因此安装 LLVM 免费 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

【讨论】:

GitHub URL 已更改。该命令现在改为brew install https://raw.github.com/Homebrew/homebrew-dupes/master/apple-gcc42.rb【参考方案6】:

用“export CC=gcc”代替“export CC=/usr/bin/gcc-4.2”(应该安装xCode 4.2.x)。

【讨论】:

【参考方案7】:

像这样检查你的 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

希望这会有所帮助。

【讨论】:

【参考方案8】:

使用 macport 和 ruby​​-1.9.x 版本。 我确实使用 ruby​​ gem 成功安装了 rails。

【讨论】:

【参考方案9】:

当我在 ~/.rvmrc

中的注释行时,我只对arch x86_64 有同样的问题
rvm_archflags="-arch x86_64"

打开一个新终端并尝试再次安装 ruby​​-1.8.7

rvm install 1.8.7

成功了。

【讨论】:

【参考方案10】:

如果您在开发工作流程中使用 RVM,我在 OS X Lion 的 .rvmrc 文件中添加了一个修复程序。

https://gist.github.com/1112962

(更新的文件名)

【讨论】:

【参考方案11】:

这与 RVM 无关,但如果您正在寻找的是 Lion 的本地开发环境,您可能想尝试一下 RubyStack 这是一个免费的、开源的 Apache 一体化安装程序, mysql, Ruby, Rails 等。它不需要编译并且是独立的,所以如果你不喜欢它,你可以简单地删除安装目录,你就完成了。免责声明:我是 RubyStack 开发人员之一 :)

【讨论】:

【参考方案12】:

CC=/usr/bin/gcc-4.2 rvm install 1.8.7 对我不起作用,我使用了CC=/usr/bin/gcc rvm install 1.8.7,它确实起作用了(检查“which gcc”)

【讨论】:

【参考方案13】:

即使在此页面上有所有其他建议,我仍然遇到段错误并感到沮丧,所以我说“去他妈的!”并使用系统提供的 Ruby 1.8.7:

rvm use system

您需要使用 sudo 来安装 gems,但仍然不那么令人头疼。

【讨论】:

请记住,安装 Ruby 1.8.7 的系统是供 Apple 使用的。我们可以搭载它,但要小心更新 gem。【参考方案14】:

我的解决方案是覆盖终端中的 /usr/bin/gcc 符号链接。我是这样做的:

https://plus.google.com/101970693023462019144/posts/eYVLvMCqTmc

这不仅修复了我的 RVM 安装,还确保安装带有本机扩展(如 rmagick)的 gems 正常工作。

【讨论】:

以上是关于为啥我不能使用 RVM 在 Lion 上安装 Rails?的主要内容,如果未能解决你的问题,请参考以下文章

pg gem 安装错误 - lion osx、bundler 和 rvm

在 OS X v10.7 (Lion) 上安装 autoreconf?

为啥我不能用 gem install rails -v 4.0.0 安装 rails?

为啥在我安装 Mountain Lion 时 OpenGL 会降级?

在OS X v10.7(Lion)上安装autoreconf?

在 Mac OS Lion 上安装 oursql 成功,但在 python 中导入失败。 **为啥?**