Becarev
Becarev

Reputation: 43

gem install mysql2 does not work

I'm trying to install mysql2 gem to use in learning rails, but it just doesn't work. Reinstalling mysql or ruby doesn't work. Using ARCHFLAGS doesn't work. I can't use apt-get libmysqlclient-dev because my Mac doesn't have Ubuntu server, and anyways wouldn't this be a dependency included in mysql when installed with homebrew (as I've done)? Also I have the very latest Xcode (8.2.1). This is the complete error message (with username in place of actual user name):

Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    current directory: /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.5/ext/mysql2
/Users/username/.rbenv/versions/2.3.1/bin/ruby -r ./siteconf20170121-4906-1lcyftl.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.17/lib
-----
creating Makefile

To see why this extension failed to compile, please check the mkmf.log which can be found here:

  /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.5/mkmf.log

current directory: /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/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/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/gems/mysql2-0.4.5 for inspection.
Results logged to /Users/username/.rbenv/versions/2.3.1/lib/ruby/gems/2.3.0/extensions/x86_64-darwin-16/2.3.0-static/mysql2-0.4.5/gem_make.out

The commands I tried to install mysql2 were:

gem install mysql2
sudo gem install mysql2 (if the error was permission denied.)
sudo gem install mysql2 -v '0.4.5' -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.17/bin/mysql_config
ARCHFLAGS=-Wno-error=unused-command-line-argument-hard-error-in-future sudo gem install mysql2 -v '0.4.5'

Not sure what exactly those mean, as I did them following advice from similar posts.

Please help. Thanks!

Upvotes: 4

Views: 1437

Answers (1)

the12
the12

Reputation: 2425

You need to alter your environment variables to include the following (just replace the 0.0.00 with the desired version of MySQL2 gem:

gem install mysql2 -v '0.0.00' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

I would also check your $PATH and make sure it includes mysql gem, but the above line should work (had a very similar problem)

Upvotes: 6

Related Questions