OS X 10.10 Yosemite 安装 Rails 错误

OS X 10.10 Yosemite install Rails error

我正在尝试在我的 OS X 10.10 Yosemite 上安装 rails 我收到这些错误:
我已经安装了 XCode Command Line Tools 和 Homebrew,但仍然有问题。

ERROR:  Error installing rails:
ERROR: Failed to build gem native extension.

/usr/local/opt/ruby/bin/ruby -r ./siteconf20150908-43862-19795mu.rb extconf.rb
checking if the C compiler accepts ... *** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of necessary
libraries and/or headers.  Check the mkmf.log file for more details.  You may
need configuration options.

Provided configuration options:
--with-opt-dir
--with-opt-include
--without-opt-include=${opt-dir}/include
--with-opt-lib
--without-opt-lib=${opt-dir}/lib
--with-make-prog
--without-make-prog
--srcdir=.
--curdir
--ruby=/usr/local/Cellar/ruby/2.2.3/bin/$(RUBY_BASE_NAME)
--help
--clean
/usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/mkmf.rb:456:in `try_do': The compiler failed to generate an executable file. (RuntimeError)
You have to install development tools first.
from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/mkmf.rb:571:in `block in try_compile'
from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/mkmf.rb:522:in `with_werror'
from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/mkmf.rb:571:in `try_compile'
from extconf.rb:80:in `nokogiri_try_compile'
from extconf.rb:87:in `block in add_cflags'
from /usr/local/Cellar/ruby/2.2.3/lib/ruby/2.2.0/mkmf.rb:619:in `with_cflags'
from extconf.rb:86:in `add_cflags'
from extconf.rb:337:in `<main>'

extconf failed, exit code 1

Gem files will remain installed in /Users/Nitzan/.rvm/gems/ruby-2.2.1/gems/nokogiri-1.6.6.2 for inspection.
Results logged to /Users/Nitzan/.rvm/gems/ruby-2.2.1/extensions/x86_64-darwin-14/2.2.0/nokogiri-1.6.6.2/gem_make.out
Nitzans-MBP:~ Nitzan$ 

您的机器上似乎同时安装了 rbenv 和 rvm。选择一个然后删除另一个,或者删除两个然后在干净的 table 上重新安装首选的那个。为简单起见,我会保留 rvm,查看其站点:https://rvm.io/。 干杯!

更新:现在看来您又安装了一个 ruby,现在通过 homebrew。也将其删除。使用 RVM 的要点是,对于你的项目,你需要多个版本的 ruby 并且只让 RVM 管理你当前的 ruby,不要使用任何其他红宝石 (system/homebrew)。

RVM 速成班:

  1. rvm current - 显示您当前使用的 ruby 和 gemset(如果 任何)。这是非常重要的信息,非常重要,以至于我 建议你把它放到你的 shell 提示符中(如果你做了很多 ruby 编程),所以当你 运行 任何 shell 命令时你会知道哪个 ruby/gemset 您正在使用的一对。使用rvm-prompt命令来放 进入您的 shell(仅 google 用于 "customize shell prompt" 如何 这样做,我不会在这里深入探讨这个话题。
  2. rvm requirements - 安装编译所需的所有要求 ruby 在您的平台上(这应该在 你运行rvm install <ruby version>)
  3. rvm list - 将列出所有已安装的红宝石并显示 一个是默认的,你当前使用的是哪个。
  4. rvm list known - 将显示 ruby 你的所有推荐版本 可以安装,暂时看核磁共振部分,不需要 其他一切。
  5. rvm install <ruby-version - 显然,安装某个版本的 ruby。
  6. rvm use <ruby-version>@<gemset> - 切换到一些 <ruby-version> 并且,可选 <gemset>。如果您的目录包含 .ruby-version and/or .ruby-gemset 文件(见下文),您可以使用以下技巧: rvm use . - 将使 RVM 为您当前的文件选择这些文件中定义的设置目录。

所以,当我不确定我是否使用正确时,这就是我所做的 ruby:

~/projects ♥ rvm current
ruby-2.2.1
~/projects ♥ rvm use ruby-2.2.0@myapp
Using /Users/alexey/.rvm/gems/ruby-2.2.0 with gemset myapp
~/projects ♥

如果您将特殊文件 .ruby-version.ruby-gemset 放在项目的根目录中,您可以使 rvm 自动切换 ruby 版本和 gemsets(注意 . 在文件名的前面)并将你的 ruby 版本放到 .ruby-version 和你的 gemset 到 .ruby-gemset,像这样:

ruby-2.1.4@active_interaction in ~/projects/active_interaction on master ♥ cat .ruby-version 
ruby-2.1.4
ruby-2.1.4@active_interaction in ~/projects/active_interaction on master ♥ cat .ruby-gemset 
active_interaction
ruby-2.1.4@active_interaction in ~/projects/active_interaction on master ♥ cd ..
ruby-2.2.0@pgm-rails2 in ~/projects ♥ cd -
~/projects/active_interaction
ruby-2.1.4@active_interaction in ~/projects/active_interaction on master ♥ 

注意在我切换目录时提示中的 ruby 版本是如何变化的。

提交 .ruby-version 文件以确保项目中的每个人都使用相同的 ruby 和 not 来提交 .ruby-gemset 因为它可能会干扰其他开发人员的一些自定义设置(如果他们有一个具有不同名称的 gemset,或者根本不使用任何 gemset)。

现在,你现在需要做的是:

  1. 通过 rvm 安装你想要的 ruby 版本。
  2. 转到您的项目文件夹并准备 .ruby-version 和(可选).ruby-gemset 文件。
  3. 切换到这些版本并确保切换正确。
  4. 现在,您可以 运行 任何您想要的命令,rvm 将使用您想要的 ruby。

有同样的问题。事实证明,即使我安装了开发工具,我也不同意条款和条件。

尝试运行'gcc'命令。就我而言,我收到了这条消息

Agreeing to the Xcode/iOS license requires admin privileges, please re-run as root via sudo.

重新运行使用 sudo 执行相同的命令就成功了。