bundle installのmysql2インストールで ERROR: Failed to build gem native extension エラー

リポジトリを一回削除して、クローンし直してbundle installした時のこと、エラーが出た。

mysqlもopensslもbrewでインストール済みです。

エラー内容「Gem::Ext::BuildError: ERROR: Failed to build gem native extension」

$ bundle install
Fetching gem metadata from https://rubygems.org/......
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Installing rake 12.0.0
Installing i18n 0.7.0
...(略)...
Gem::Ext::BuildError: ERROR: Failed to build gem native extension.

    current directory: /Users/yuka/dev/b-monster-server/vendor/bundle/ruby/2.3.0/gems/mysql2-0.4.5/ext/mysql2
/Users/yuka/.rbenv/versions/2.3.0/bin/ruby -r ./siteconf20170118-17144-149upm8.rb extconf.rb
checking for rb_absint_size()... yes
checking for rb_absint_singlebit_p()... yes
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
checking for rb_big_cmp()... yes
-----
Using mysql_config at /usr/local/bin/mysql_config
-----
checking for mysql.h... yes
checking for SSL_MODE_DISABLED in mysql.h... yes
checking for SSL_MODE_PREFERRED in mysql.h... yes
checking for SSL_MODE_REQUIRED in mysql.h... yes
checking for SSL_MODE_VERIFY_CA in mysql.h... yes
checking for SSL_MODE_VERIFY_IDENTITY in mysql.h... yes
checking for errmsg.h... yes
checking for mysqld_error.h... yes
-----
Don't 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/yuka/dev/b-monster-server/vendor/bundle/ruby/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/mysql2-0.4.5/mkmf.log

current directory: /Users/yuka/dev/b-monster-server/vendor/bundle/ruby/2.3.0/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/yuka/dev/b-monster-server/vendor/bundle/ruby/2.3.0/gems/mysql2-0.4.5/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/yuka/dev/b-monster-server/vendor/bundle/ruby/2.3.0/gems/mysql2-0.4.5 for inspection.
Results logged to /Users/yuka/dev/b-monster-server/vendor/bundle/ruby/2.3.0/extensions/x86_64-darwin-15/2.3.0-static/mysql2-0.4.5/gem_make.out

An error occurred while installing mysql2 (0.4.5), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.4.5'` succeeds before bundling.

エラー長い…

エラーが出ている場所、「ld: library not found for -lssl」

エラーが出ている場所は、ld: library not found for -lssl、つまり、lsslが見つからないということの様子。

ググっていたら、見つけた記事がこちら。

Error when trying to install app with mysql2 gem

Apple has deprecated use of OpenSSL in favor of its own TLS and crypto libraries

Generally there are no consequences of this for you. If you build your own software and it requires this formula, you’ll need to add to your build variables:

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

何とか訳してみると、

mac(Apple)は、OS由来のTSLと暗号化技術を利用することを推奨しており、OpenSSLのインストールには反対しています。

ただ、これはあまり気にする必要はありません。
もし、ソフトウェアのビルドにopensslが必要ならば、次のビルド用のパスを追加してください。

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

というのことなので、mysql2をビルドする際のパスを指定する。

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

それから、再度bundle installを行う。

$ bundle install
Fetching gem metadata from https://rubygems.org/......
Fetching version metadata from https://rubygems.org/.
Resolving dependencies...
Installing rake 12.0.0
Installing i18n 0.7.0
...(略)...
Installing mysql2 0.4.5 with native extensions
...(略)...
Installing padrino 0.13.2
Bundle complete! 23 Gemfile dependencies, 72 gems now installed.
Bundled gems are installed into ./vendor/bundle.

インストールできました!

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク