安装Rails时在Mac Mountain Lion操作系统上出现“构建本机扩展的宝石失败”的错误

31

我最近升级到了Mountain Lion并重新安装了Ruby,但是当我尝试运行一个测试Rails应用时,出现了一个错误提示:系统上当前未安装Rails。我按照提示进行操作,输入sudo gem install rails,然后获得以下信息:

cleared faster_require caches due to new gem install...
Successfully installed rails-3.2.7
1 gem installed
Installing ri documentation for rails-3.2.7...
Installing RDoc documentation for rails-3.2.7...

但是当我检查已安装的Rails版本时,得到的结果如下:

Rails is not currently installed on this system. To get the latest version, simply type:

    $ sudo gem install rails

You can then rerun your "rails" command.

我还尝试过运行gem install rails,但是收到了以下提示:

Building native extensions.  This could take a while...
ERROR:  Error installing rails:
    ERROR: Failed to build gem native extension.

        /Users/aileen/.rvm/rubies/ruby-1.9.3-p194/bin/ruby extconf.rb
creating Makefile

make
compiling generator.c
make: /usr/bin/gcc-4.2: No such file or directory
make: *** [generator.o] Error 1


Gem files will remain installed in /Users/aileen/.rvm/gems/ruby-1.9.3-p194@rails327/gems/json-1.7.4 for inspection.
Results logged to /Users/aileen/.rvm/gems/ruby-1.9.3-p194@rails327/gems/json-1.7.4/ext/json/ext/generator/gem_make.out

有一个按钮,上面写着:“如果这个答案解决了你的问题或者对你找到解决方案最有帮助,请点击此按钮接受答案”。如果你仍需要帮助,请改进相关问题或创建另一个问题。 - Ricardo
4个回答

40

我看到你正在使用 rvmOS X 10.8.2(Mountain Lion)下使用ruby 1.9.3

在Mountain Lion中,即使安装了 Xcode 4.5 CLI工具(打开菜单XCode - Preferences..Download -> Command Line Tools),你也会得到 /usr/bin/gcc 而不是 /usr/bin/gcc-4.2;不幸的是一些本地扩展的构建过程依赖于 /usr/bin/gcc-4.2

然而,我刚刚在类似于您的环境中顺利安装了rails。我之前按照Carina C. Zona所述博客文章中的步骤固定了环境:Fix for “make: /usr/bin/gcc-4.2: No such file or directory”,即:

  • 确保您已经安装了Homebrew

    brew --version

    应报告0.9.3或更高版本

    brew update

  • 现在可以安装gcc-4.2并在构建系统所期望的位置创建符号链接

    brew tap homebrew/dupes

    brew install apple-gcc42

    sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2

  • 现在,您已经准备好成功安装rails了

    gem install rails

您应该会得到类似于以下内容的输出

Fetching: i18n-0.6.1.gem (100%)
Fetching: activesupport-3.2.8.gem (100%)
Fetching: builder-3.0.4.gem (100%)
Fetching: activemodel-3.2.8.gem (100%)
Fetching: rack-cache-1.2.gem (100%)
Fetching: rack-test-0.6.2.gem (100%)
Fetching: journey-1.0.4.gem (100%)
Fetching: hike-1.2.1.gem (100%)
Fetching: sprockets-2.1.3.gem (100%)
Fetching: erubis-2.7.0.gem (100%)
Fetching: actionpack-3.2.8.gem (100%)
Fetching: arel-3.0.2.gem (100%)
Fetching: tzinfo-0.3.34.gem (100%)
Fetching: activerecord-3.2.8.gem (100%)
Fetching: activeresource-3.2.8.gem (100%)
Fetching: polyglot-0.3.3.gem (100%)
Fetching: treetop-1.4.12.gem (100%)
Fetching: mail-2.4.4.gem (100%)
Fetching: actionmailer-3.2.8.gem (100%)
Fetching: rack-ssl-1.3.2.gem (100%)
Fetching: railties-3.2.8.gem (100%)
Fetching: rails-3.2.8.gem (100%)
Successfully installed i18n-0.6.1
Successfully installed activesupport-3.2.8
Successfully installed builder-3.0.4
Successfully installed activemodel-3.2.8
Successfully installed rack-cache-1.2
Successfully installed rack-test-0.6.2
Successfully installed journey-1.0.4
Successfully installed hike-1.2.1
Successfully installed sprockets-2.1.3
Successfully installed erubis-2.7.0
Successfully installed actionpack-3.2.8
Successfully installed arel-3.0.2
Successfully installed tzinfo-0.3.34
Successfully installed activerecord-3.2.8
Successfully installed activeresource-3.2.8
Successfully installed polyglot-0.3.3
Successfully installed treetop-1.4.12
Successfully installed mail-2.4.4
Successfully installed actionmailer-3.2.8
Successfully installed rack-ssl-1.3.2
Successfully installed railties-3.2.8
Successfully installed rails-3.2.8
22 gems installed
Installing ri documentation for i18n-0.6.1...
Building YARD (yri) index for i18n-0.6.1...
Installing ri documentation for activesupport-3.2.8...
Building YARD (yri) index for activesupport-3.2.8...
Installing ri documentation for builder-3.0.4...
Building YARD (yri) index for builder-3.0.4...
Installing ri documentation for activemodel-3.2.8...
Building YARD (yri) index for activemodel-3.2.8...
Installing ri documentation for rack-cache-1.2...
Building YARD (yri) index for rack-cache-1.2...
Installing ri documentation for rack-test-0.6.2...
Building YARD (yri) index for rack-test-0.6.2...
Installing ri documentation for journey-1.0.4...
Building YARD (yri) index for journey-1.0.4...
Installing ri documentation for hike-1.2.1...
Building YARD (yri) index for hike-1.2.1...
Installing ri documentation for sprockets-2.1.3...
Building YARD (yri) index for sprockets-2.1.3...
Installing ri documentation for erubis-2.7.0...
Building YARD (yri) index for erubis-2.7.0...
Installing ri documentation for actionpack-3.2.8...
Building YARD (yri) index for actionpack-3.2.8...
Installing ri documentation for arel-3.0.2...
Building YARD (yri) index for arel-3.0.2...
Installing ri documentation for tzinfo-0.3.34...
Building YARD (yri) index for tzinfo-0.3.34...
Installing ri documentation for activerecord-3.2.8...
Building YARD (yri) index for activerecord-3.2.8...
Installing ri documentation for activeresource-3.2.8...
Building YARD (yri) index for activeresource-3.2.8...
Installing ri documentation for polyglot-0.3.3...
Building YARD (yri) index for polyglot-0.3.3...
Installing ri documentation for treetop-1.4.12...
Building YARD (yri) index for treetop-1.4.12...
Installing ri documentation for mail-2.4.4...
Building YARD (yri) index for mail-2.4.4...
Installing ri documentation for actionmailer-3.2.8...
Building YARD (yri) index for actionmailer-3.2.8...
Installing ri documentation for rack-ssl-1.3.2...
Building YARD (yri) index for rack-ssl-1.3.2...
Installing ri documentation for railties-3.2.8...
Building YARD (yri) index for railties-3.2.8...
Installing ri documentation for rails-3.2.8...
Building YARD (yri) index for rails-3.2.8...
Installing RDoc documentation for i18n-0.6.1...
Installing RDoc documentation for activesupport-3.2.8...
Installing RDoc documentation for builder-3.0.4...
Installing RDoc documentation for activemodel-3.2.8...
Installing RDoc documentation for rack-cache-1.2...
Installing RDoc documentation for rack-test-0.6.2...
Installing RDoc documentation for journey-1.0.4...
Installing RDoc documentation for hike-1.2.1...
Installing RDoc documentation for sprockets-2.1.3...
Installing RDoc documentation for erubis-2.7.0...
Installing RDoc documentation for actionpack-3.2.8...
Installing RDoc documentation for arel-3.0.2...
Installing RDoc documentation for tzinfo-0.3.34...
Installing RDoc documentation for activerecord-3.2.8...
Installing RDoc documentation for activeresource-3.2.8...
Installing RDoc documentation for polyglot-0.3.3...
Installing RDoc documentation for treetop-1.4.12...
Installing RDoc documentation for mail-2.4.4...
Installing RDoc documentation for actionmailer-3.2.8...
Installing RDoc documentation for rack-ssl-1.3.2...
Installing RDoc documentation for railties-3.2.8...
Installing RDoc documentation for rails-3.2.8...

11
没问题,这是完全正确的,但并不需要使用自制程序。所需的仅仅是创建一个从gcc-4.2到gcc的符号链接:sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2 - Justin M. Keyes
1
Justin的评论完全正确!感谢澄清。我的帖子涉及到一个相当常见的场景,适用于经常使用brew作为软件包管理器的osx ruby开发者们。 - Franco Rondini
1
这篇文章让我完全了解了HAR <3。 - bobber205
2
sudo ln -s /usr/local/bin/gcc-4.2 /usr/bin/gcc-4.2 操作不允许。 - coolcool1994
@coolcool1994;该答案适用于OS X 10.8 Mountain Lion,而“操作不允许”听起来像是您的系统是OS X 10.11 El Capitan:请参见此问题和相关答案。您能确认吗? - Franco Rondini

9
@Franco是正确的: "本地扩展"构建脚本期望/usr/bin/gcc-4.2,但在OS X Mountain Lion中不存在。
  • 如果您从先前的OS X版本升级到Mountain Lion,则可能已经拥有gcc。在这种情况下,只需创建一个指向gcc的符号链接:sudo ln -s /usr/bin/gcc /usr/bin/gcc-4.2
  • 如果您是全新安装Mountain Lion,则可能根本没有gcc。在这种情况下,您需要像@Franco解释的那样安装gcc
这不是特定于“rails” gem的问题。任何构建“本地扩展”的gem都会失败:

Gem::Installer::ExtensionBuildError: ERROR: 无法构建gem本地扩展程序。[...] 您必须首先安装开发工具。

在我的情况下,我正在尝试安装octopress,它依赖于一些称为RedCloth的东西。

1
在我的情况下,它抱怨了 g++-4.2 而不是 gcc-4.2,但我创建了与上面相同的符号链接,将 c 替换为 +,然后它就可以工作了。 - Arcolye

4
我也遇到过这个问题,系统是Mountain Lion。出现安装失败的gem是json。为了解决这个问题,我安装了xcode CLI工具,并将已安装的gcc(i686-apple-darwin11-llvm-gcc-4.2)设置为软链接/usr/bin/gcc-4.2。一旦完成,就可以正常使用了。
在尝试安装另一个gem时,我遇到了类似的问题,原生构建步骤报告缺少g++-4.2。我按照上面设置gcc-4.2的方式,也将其设置为软链接,然后它就能用了。
更新:OSX Mavericks和最新的RVM
使用最新的OSX 10.9和最新的RVM,这些问题似乎已经被解决了。所以,是升级的时候了。

3

请先阅读这篇文章

作者假设你已经安装了Homebrew。如果没有,请从这里下载。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接