macOS、Rails:“无法构建 gem 本机扩展”

问题描述 投票:0回答:14

我在尝试在 Mac 上安装 Rails 时遇到了困难。我有 OS X 10.6.8,并且我已确认我有 Ruby,版本 1.8.7

我运行

sudo gem update
sudo gem update --system
来获取该软件的最新版本。

但是,当我运行

sudo gem install rails
时,我收到此错误:

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

/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/bin/ruby extconf.rb
mkmf.rb can't find header files for ruby at /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h


Gem files will remain installed in /Library/Ruby/Gems/1.8/gems/json-1.6.3 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/json-1.6.3/ext/json/ext/parser/gem_make.out
ruby-on-rails ruby macos rubygems
14个回答
48
投票

如果您有 XCode 4 或更高版本,则需要打开它并转到“首选项”->“下载”->“组件”并安装命令行工具,因为默认情况下不安装它们。发生这种情况之前无法安装 Rails。


41
投票

我使用的是 osx 10.10。您可以从命令行下载

xcode-select --install

8
投票

不确定需要编译什么,但除非安装了 Apple 开发者工具,否则 OSX 根本无法编译任何本机 ruby 扩展。在 10.7 Lion 上,您可以从应用商店免费下载它,或者在此处下载 10.6 版本:http://developer.apple.com/xcode/index.php

它也可能位于您的 OSX 安装光盘上,尽管可能已经过时了。


6
投票

只是后续...

可能您使用的是 Mac,并且 Rails 无法找到正确的 C 标头编译器。

只需从应用程序商店/自制程序安装 xcode 或转到终端...

$ xcode-select --install

完成安装并同意许可等,然后...

$ sudo gem 安装rails


5
投票

您安装了 OS X 开发者工具吗?您需要这样做才能构建本机扩展


4
投票

解决此问题的步骤: 除非错误已修复,否则请按照以下步骤操作。

  1. 打开终端并运行命令:
    sudo xcode-select --install

    sudo xcodebuild -license accept
  2. 确保您只安装了一个 Xcode,并且它是最新的。如果安装了多个版本,则仅在应用程序中保留最新版本的名称,例如
    Xcode.app
  3. 打开 Xcode->preferences->locations 然后检查是否选择了任何命令行工具;如果没有则选择
  4. 通过以下方式安装 Ruby:
    brew install ruby
  5. 通过
    安装 CocoaPods
    sudo gem install cocoapods

3
投票

失败的可能原因有两个:

  1. 主要原因:缺少 Xcode 命令行工具

手动验证 Xcode 命令行工具安装: 检查是否存在 “/usr/include/iconv.h”(如果不存在=>缺少或未正确安装 Xcode CLT)

安装 Xcode CLT: 尝试在终端上运行

xcode-select --install
并按照说明进行操作。如果失败,请打开 Xcode.app,从菜单“Xcode”-“打开开发者工具”-“更多开发者工具”中选择打开开发者网站,下载适合您操作系统版本的安装程序并运行。

  1. 第二个原因(如果 1. 失败):版本问题 尝试使用 rbenv 升级 ruby 版本。

希望有帮助!


1
投票

尝试通过 RVM 安装 Ruby。我是这样解决的

如何使用rvm在Ubuntu上安装ruby


1
投票

命令行工具没有为我解决这个问题。 我通过 rbenv 将 ruby 安装升级到 2.2.0,使其成为全局默认 ruby 安装,并且解决了这个问题。


1
投票

将 Ruby 切换到 Homebrew 版本:

$ brew install ruby
$ brew link --overwrite ruby

$ echo 'export PATH="/usr/local/opt/ruby/bin:$PATH"' >> ~/.bash_profile
$ echo 'export LDFLAGS="-L/usr/local/opt/ruby/lib"' >> ~/.bash_profile
$ echo 'export CPPFLAGS="-I/usr/local/opt/ruby/include"' >> ~/.bash_profile

0
投票

刚刚遇到了类似的问题。我可以确认安装命令行工具可以修复它。


0
投票

https://stackoverflow.com/a/58226876/8070378

运行后解决:

sudo xcode-select --install
sudo xcodebuild -license accept

0
投票

我在 macOS Catalina 10.15.7 上遇到了这个问题,似乎 Xcode 12.3 的 Ruby 是 2.6 的变体,但我的软件需要 2.7。

我安装了

rvm
并运行了
rvm install ruby-2.7
,现在它工作得很好🎉


0
投票

我不确定这是否是大多数人的情况,但我的系统设置中挂着一个MacOS软件更新,一旦我更新了它,一切都以某种方式神奇地解决了🤷u200d♂️

© www.soinside.com 2019 - 2024. All rights reserved.