无法在macOS Sierra上安装mysql2 gem
我正在设置新的macOS Sierra my的开发环境。
首先,我安装了Rbenv , Ruby(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/