无法在OS X上安装mysql gem

19

我在OS X上执行以下命令:

sudo gem install mysql

以安装mysql gem,但是出现以下错误:

正在构建本地扩展,这可能需要一段时间...

ERROR: 安装mysql过程中出错:

ERROR: 构建gem本地扩展失败。

/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb

检查是否存在mysql_ssl_set()... yes

检查是否存在rb_str_set_len()... yes

检查是否存在rb_thread_start_timer()... no

检查是否存在mysql.h... yes

创建Makefile

make "DESTDIR=" clean

make "DESTDIR="

编译mysql.c

链接共享对象mysql/mysql_api.bundle

clang: error: unknown argument: '-multiply_definedsuppress' [-Wunused-command-line-> argument-hard-error-in-future]

clang: note: this will be a hard error (cannot be downgraded to a warning) in the future

make: * [mysql_api.bundle] Error 1

make 失败, 退出码 2

gem文件被安装在 /Library/Ruby/Gems/2.0.0/gems/mysql-2.9.1 用于检查。

结果日志存储在 /Library/Ruby/Gems/2.0.0/extensions/universal-darwin-13/2.0.0/mysql-2.9.1/gem_make.out

您有什么想法,导致这种情况发生?如果使用homebrew安装了mysql,是否会有所不同?


1
我想你想要安装mysql2 gem,是吗?gem install mysql2 - Rafa Paez
1
这是由于刚刚发布的Apple Clang 5.1引起的。它影响了很多人,希望很快就会有修复/解决方法。 - Paul Kehrer
@Rafa 尝试安装mysql2时遇到了完全相同的错误。 - Mihai Damian
4个回答

61

来源于苹果Xcode/Clang发行说明:

Xcode 5.1中的Apple LLVM编译器将未识别的命令行选项视为错误。 当构建Python本机扩展和Ruby Gems时,已经发现此问题,其中一些无效的编译器选项目前被指定。 使用无效编译器选项的项目需要更改以删除这些选项。为了帮助缓解这个过渡,编译器将暂时接受一个选项来将错误降级为警告:

-Wno-error=unused-command-line-argument-hard-error-in-future

ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future gem install GemName


1
非常感谢!在我安装新的Mavericks并需要Postgres Python驱动程序时,您帮了我大忙。谢谢! - Daniel Johansson
3
是的!我在使用pip install psutil时遇到了错误,但是通过这个修复方法,在我的虚拟环境(venv)中可以解决:ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future ./venv/bin/pip install psutil - tester
这对我在pip install方面有所帮助。 - Mahendra Liya

7

似乎存在一个与苹果的rbconfig.rb相关的问题:

$ grep -n DLDFLAGS /System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/lib/ruby/2.0.0/universal-darwin13/rbconfig.rb
82:  CONFIG["LIBRUBY_DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress -install_name $(libdir)/$(LIBRUBY_SO) -current_version $(MAJOR).$(MINOR).$(TEENY) -compatibility_version $(ruby_version)  $(XLDFLAGS)"
84:  CONFIG["EXTDLDFLAGS"] = ""
125:  CONFIG["DLDFLAGS"] = "-undefineddynamic_lookup -multiply_definedsuppress"

移除-multiply_definedsuppress应该可以使其安装。


1

1
上面的答案是正确的。最简单的解决方法是在您的计算机上重新构建Ruby。Gem扩展使用Ruby构建配置,当它自身构建时,如果您在Xcode 5.1之前构建了Ruby,则其构建配置包含有问题的标志。

这应该可以修复所有受影响的gem。


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