Rubygems无法在OS X Lion上安装。

44

我以前在ruby、gems和所有相关的技术上都没有什么问题。但是在安装了X Code开发工具并升级到Lion后,gems就不能正常安装了。

每个gem都会出现以下错误。这里以sqlite为例:

Building native extensions.  This could take a while...
ERROR:  Error installing sqlite3:
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/sqlite3-1.3.4 for inspection.
Results logged to /Library/Ruby/Gems/1.8/gems/sqlite3-1.3.4/ext/sqlite3/gem_make.out

出了什么问题?如何解决?

10个回答

75

我必须在最新的Xcode版本(4.3.1)中安装命令行工具,并且...

sudo gem install rails

运作得很好。

要安装命令行工具,请前往 Xcode 偏好设置 > 下载或使用终端中的以下命令(感谢 @Purell):

xcode-select --install

6
好的,为了安装命令行工具,请前往XCode首选项>下载。 - mattandrews
7
据说如果你的OSX版本是10.9 Mavericks,同时安装了Xcode 5.0,那么命令行工具在"偏好设置-->下载"中可能不会显示出来。但你可以通过运行"xcode-select --install"来进行安装。 - Purrell

16

我正在使用 Mavericks 和 Ruby 2.0.0,在安装 gem 包时也遇到了这个错误(mkmf.rb 找不到头文件)。我通过在终端中创建一些符号链接来解决了这个问题。

#First install developer tools again:
xcode-select --install

#Create symbolic link to Ruby include (updated for 10.9)
sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0 /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/include

#Create symbolic link to config.h (updated for 10.9)
sudo ln -s /System/Library/Frameworks/Ruby.framework/Versions/2.0/Headers/ruby/config.h /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/include/ruby-2.0.0/ruby/config.h

升级到Mavericks似乎已经卸载了开发人员工具。 在我的情况下,运行David的第一条命令可以解决这个问题。 不需要创建符号链接。 - emispowder

12

我在尝试在我的Lion上安装Rails时也遇到了同样的问题,这是我解决它的方法。

安装RVM

$ curl https://raw.github.com/wayneeseguin/rvm/master/binscripts/rvm-installer | bash -s stable

安装osx-gcc-installer

https://github.com/kennethreitz/osx-gcc-installer

安装新版本的Ruby

rvm install 1.9.3

输入以下命令以显示要求

rvm requirements

使用已安装的RVM Ruby而不是系统Ruby作为默认值:

rvm system; rvm gemset export system.gems; rvm 1.9.3; rvm gemset import system.gems # 迁移您的 gems rvm alias create default 1.9.3

安装Rails:

sudo gem install rails

我的Mac现在已经准备好使用Rails了!耶!


4
在安装Rails的过程中,我遇到了以下错误:
无法在/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/ruby.h找到Ruby的头文件。
由于我已经安装了Xcode,所以我只需要安装命令行工具即可解决此问题。

4

虽然不能直接解决您的问题,但我建议使用rvm来安装新的Rubies和gems。这应该会解决问题。


1
你需要安装 XCode,它包括 ruby.h 以及编译其他本地 gem 所需的一些其他重要文件。

1
欢迎来到SO。如果我正确地阅读了OP的问题,他表示已经安装了XCode。 - Don Question

0

我只是忘记用sudo命令运行它了。

sudo gem install sqlite3

而不是:

gem install sqlite3


0

在操作系统更新后,请确保您接受 X-Code 许可证,即使您之前已经使用过命令行工具。只有这样才能使用某些头文件。要接受许可证,您需要运行一次 X-Code。


0

更新到最新版本的Xcode,这对我解决了问题。确保xcodebuild在您的路径中。

在终端窗口中运行xcodebuild -version应该输出4.2.1(至少为4.x)。


0

你好,很抱歉我无法测试这个答案,但我建议在你的bashrc和extconf.rb中更改默认搜索路径,因为在Lion中似乎库文件已经被移动了。

(附言:如果他想使用默认的1.8版本,rvm将是一个不必要的麻烦)


你打开终端窗口,选择你喜欢的编辑器,并编辑你的 .bashrc 文件(通常在路径 /Users/<你的用户名>/.bashrc)。 - robustus
我知道如何做。我只是不知道应该添加哪个路径。 - d135-1r43
哦,抱歉我误解了: 我建议使用:/System/Library/Frameworks/Ruby.framework/Versions/1.8/ - robustus

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