无法在OS X上安装mysql gem
我正在做
sudo gem install mysql
在OS X上安装mysql gem。 这失败,输出如下:
构建原生扩展。 这可能需要一段时间……
错误:安装mysql时出错:
错误:无法构建gem原生扩展。
/System/Library/Frameworks/Ruby.framework/Versions/2.0/usr/bin/ruby extconf.rb
检查mysql_ssl_set()…是的
检查rb_str_set_len()…是的
检查rb_thread_start_timer()…没有
检查mysql.h …是的
创建Makefile
使“DESTDIR =”干净
制作“DESTDIR =”
编译mysql.c
链接共享对象mysql / mysql_api.bundle
clang:错误:未知参数:’ – multiply_definedsuppress'[-Wunused-command-line-> argument-hard-error-in-future]
clang:注意:将来这将是一个很难的错误(不能降级为警告)
make: * [mysql_api.bundle]错误1
失败,退出代码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
什么可能导致这个? 我有自制的mysql安装,如果这有所作为。
来自Apple的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
似乎是Apple的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
应该允许它安装。
这是由于Xcode 5.1 – 它已被报告为Ruby的一个错误。
https://bugs.ruby-lang.org/issues/9624
这里还有一些额外的讨论: Ruby Gem安装Json在Mavericks和Xcode 5.1上失败 – 未知参数:’ – multiply_definedsuppress’
以上答案是正确的。 最简单的解决方法是在机器上重建ruby。 Gem扩展在它自己构建时使用ruby构建配置,如果你在Xcode 5.1之前构建了ruby,它的构建配置包含违规标记。
这应该为所有受影响的gem修复它。