无法在macOS Sierra上安装mysql2 gem

我正在设置新的macOS Sierra my的开发环境。

首先,我安装了RbenvRuby(2.3.1)Homebrew等最新版本的MySQL(5.7.15)

$ brew install mysql $ mysql.server start 

好的,MySQL被初始化了。 时间安装mysql2gem…

 $ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config 

但它没有工作。 😞


 Building native extensions with: '--with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config' This could take a while... ERROR: Error installing mysql2: ERROR: Failed to build gem native extension. current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2 /Users/macuser/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20160921-16853-x1boio.rb extconf.rb --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config checking for ruby/thread.h... yes checking for rb_thread_call_without_gvl() in ruby/thread.h... yes checking for rb_thread_blocking_region()... no checking for rb_wait_for_single_fd()... yes checking for rb_hash_dup()... yes checking for rb_intern3()... yes ----- Using mysql_config at /usr/local/Cellar/mysql/5.7.15/bin/mysql_config ----- checking for mysql.h... yes checking for errmsg.h... yes checking for mysqld_error.h... yes ----- Dont know how to set rpath on your system, if MySQL libraries are not in path mysql2 may not load ----- ----- Setting libpath to /usr/local/Cellar/mysql/5.7.15/lib ----- creating Makefile To see why this extension failed to compile, please check the mkmf.log which can be found here: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/mkmf.log current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2 make "DESTDIR=" clean current directory: /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4/ext/mysql2 make "DESTDIR=" compiling client.c compiling infile.c compiling mysql2_ext.c compiling result.c compiling statement.c linking shared-object mysql2/mysql2.bundle ld: library not found for -lssl clang: error: linker command failed with exit code 1 (use -v to see invocation) make: *** [mysql2.bundle] Error 1 make failed, exit code 2 Gem files will remain installed in /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.4 for inspection. Results logged to /Users/macuser/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.4/gem_make.out 

我刚刚遇到了同样的问题,尝试了上面列出的所有解决scheme,然后开始对着他们的键盘敲打我的头几个小时。

然后我想要尝试安装/重新安装Xcode命令行工具:

 xcode-select --install 

一旦我这样做了mysql2 gem安装w /没有问题。 我希望这个诀窍!

当您通过brew安装openssl时,您应该会看到以下消息:

苹果已经不赞成使用OpenSSL来支持自己的TLS和encryption库

一般来说,这对你没有任何后果。 如果你构build自己的软件,并且需要这个公式,你需要添加到你的构buildvariables中:

LDFLAGS:-L / usr / local / opt / openssl / lib
CPPFLAGS:-I / usr / local / opt / openssl / include
PKG_CONFIG_PATH:/ usr / local / opt / openssl / lib / pkgconfig

您可以通过运行以下命令来设置这些构build标志(针对本地应用程序):

 bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include" 

这对我有效。

有关更多信息,请参阅bundler的文档 。

我在这里分享我的修复,因为其他答案不起作用。

对于我的环境,我需要MySQL 5.6,所以我不得不使用:

brew install mysql56而不是brew install mysql

捆绑安装mysql2的gem保持失败,直到:

brew link mysql56

我也跑了:

mysql.server start

最后一步可能是不必要的,但以防万一。

所以我遇到了这个类似的问题,对我来说,原来是一个错误的ruby版本和不兼容的MySQL版本。 我在大多数项目中使用ruby 2.3,但inheritance了2.1项目。 更改为rvm使用2.1让我更进一步。

然后我发现这个: https : //github.com/brianmario/mysql2/issues/603 ,说你必须使用大于0.3.17的mysql2 gem版本与MySQL版本5.7

更新了gem到0.3.17,并且直接开了火。 希望这有助于某人。

尝试安装xcode-select –install

与@Caio Tarifa,Ruby 2.3.3,mysql 5.6和mysql2几乎相同。 试着在上面的几个解决scheme,并最终使它与@ kylekeesling的方法工作。

首先,通过@spickermann尝试解决scheme1:

 brew reinstall openssl && brew link openssl --force 

什么都没有发生,显示的错误

其次,由@Alessandro Berardi尝试解决scheme:

 bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include" 

由于它覆盖了gem扩展的configuration,所以所有的gem扩展安装都失败了。

最后,试用@kylekeesling解决scheme:

 xcode-select --install 

它修复了MySQL的gem问题以及nikogiri。 由于我已经安装了Xcode,在我的情况下,它是重新安装Xcode命令行工具。

首先,你应该在这里尝试2个答案如果你安装了openssl,但它仍然不起作用。 你应该尝试o刷新gem参考。 有同样的问题,它为我工作。

gem source -r https://rubygems.org/

gem source -a https://rubygems.org/