Can't install mysql2 gem on macOS Sierra
Solution 1
I just had the same problem, tried all of the solutions listed above, then commenced to bang my head against they keyboard for a couple of hours.
I then thought to try and install/reinstall the Xcode Command Line Tools:
xcode-select --install
Once I did that the mysql2 gem installed w/ no problems. I hope that does the trick!
Solution 2
When you install openssl via brew, you should get the following message:
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
You can set these build flags (for the local application) by running the following:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
This worked for me.
See bundler's documentation for more information.
Solution 3
Lots of great answers, I was able to combine them into this:
gem install mysql2 --source 'https://rubygems.org/' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
because I was not comfortable with bundle config
Solution 4
I am here to share my fix, since the other answers didn't work.
For my environment, I need MySQL 5.6 so I had to use:
brew install mysql56
instead of brew install mysql
Bundle installing the mysql2 gem kept failing, until:
brew link mysql56
I also ran afterwards:
mysql.server start
The last step might be unnecessary, but just in case.
Solution 5
With Mac OS 10.15 Catalina when I tried Alessandro's fix the gem and extensions could be installed correctly but bundle install
failed. What worked was just:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib"
without the cppflags
part.
Caio Tarifa
Updated on July 09, 2022Comments
-
Caio Tarifa almost 2 years
I'm setting up my development environment in the new macOS Sierra .
First of all, I installed Rbenv, Ruby (2.3.1), Homebrew and so the latest version of MySQL (5.7.15).
$ brew install mysql $ mysql.server start
Ok, MySQL was initialized. Time to install the mysql2 gem...
$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
But it didn't work. 😞
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
-
arthur bryant over 7 yearsI encountered the same problem after I update to MacOS Sierra 10.12.1 Thanks!
-
Qasim about 7 yearsAfter doing this I got a different error:
Permission denied @ rb_sysopen
. That got fixed by using Sudo:sudo bundle install
. Not an ideal solution, but hey, it worked! -
Nic Cottrell almost 7 yearsOn my 10.12.4 is just says
xcode-select: error: command line tools are already installed, use "Software Update" to install updates
. Any other way to force reinstall? -
Cory Ringdahl almost 7 yearsSame worked with Percona, though I had to force it:
brew link --force percona-server56
-
Naveen Honest Raj K over 6 yearsThis worked for me. It threw me "nil build" warning. I tried bundle install in next line, it worked for me. Thanks man.
-
dft over 6 yearsYeah works, thanks for saving me from banging my head for hours more
-
Ray Hunter over 6 yearsAlso ran the command xcode-select --install as well and that worked for me.
-
Tallboy about 5 yearsThank god... Alessandro, Lady Gaga should do a song about you
-
Amituuush about 5 yearsI second that ^^
-
MIA almost 5 yearsThank you! I was not comfortable
bundle config
either. -
Sathish over 4 yearsresponse after the command:
You are replacing the current local value of build.mysql2, which is currently nil
runningbundle install
after this worked -
sergey.radov over 4 yearsThis solution works time-to-time. After 10.14 it refers to App Store.
-
Cokorda Raka over 4 yearsThanks. This works for me, without installing xcode.
-
thekingoftruth about 4 yearsThis worked for someone I was helping who was on Sierra. My computer, which is on Mojave, worked with cppflags included, however.
-
Fralcon almost 4 yearsI tried this but it didn't work for me on 10.15 Catalina. See Fed C's fix for what worked.
-
Fralcon almost 4 years@NicCottrell When running brew doctor I saw this message Warning: A newer Command Line Tools release is available. Update them from Software Update in System Preferences or run: softwareupdate --all --install --force If that doesn't show you an update run: sudo rm -rf /Library/Developer/CommandLineTools sudo xcode-select --install
-
David Cook over 2 yearsThe clue is provided in mkmf.log:
clang: error: unsupported option '--with-cppflags=-I/usr/local/opt/openssl/include'
-
Brad over 2 yearsThis worked for me, though I had to change to the paths to /usr/local/Cellar/openssl@3/3.0.0_1