Ted Martin
Ted Martin

Reputation: 281

Cannot install mysql2 gem for Rails project

I've looked at and tried just about everything on the topic here at Stackoverflow.com and still can't figure this out...

When I 'gem install mysql2' I get a permissions error. when I 'sudo gem install mysql2' I get the following:

    Teds-MacBook-Pro:~ tedmartin$ sudo gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

    current directory: /Users/tedmartin/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.5/ext/mysql2
/Users/tedmartin/.rbenv/versions/2.4.1/bin/ruby -r ./siteconf20170420-50202-1nekuvd.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-connector-c/6.1.9/lib
-----
creating Makefile

current directory: /Users/tedmartin/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.5/ext/mysql2
make "DESTDIR=" clean

current directory: /Users/tedmartin/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.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 -l-lpthread
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/tedmartin/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/gems/mysql2-0.4.5 for inspection.
Results logged to /Users/tedmartin/.rbenv/versions/2.4.1/lib/ruby/gems/2.4.0/extensions/x86_64-darwin-15/2.4.0-static/mysql2-0.4.5/gem_make.out

Anyone who has an idea, suggestion, tip, fix, etc... I'd be really grateful.

Thanks!

Upvotes: 26

Views: 15066

Answers (6)

jacklin
jacklin

Reputation: 2779

This worked for me on macOS Catalina:

Make sure you have openssl installed. If not:

brew install openssl

Then do the gem install:

gem install mysql2 -- --with-opt-dir="$(brew --prefix openssl)"

Upvotes: 15

Yui-Yukino
Yui-Yukino

Reputation: 71

It away working for me after 2h crazy

  1. Unstall Ruby and Install Ruby v2.6.6
  2. Run command line as Administrator gem install mysql2
  3. Install rails gem install rails
  4. Create new project rails new my_proj -d mysql

Work 100% in Windown

Upvotes: 0

C dot StrifeVII
C dot StrifeVII

Reputation: 1885

I ran into this same issue on Mojave, and none of the previous answers worked for me but this commands mentioned in this Github issue comment did

Step 1.

brew install openssl

Step 2.

export LIBRARY_PATH=$LIBRARY_PATH:/usr/local/opt/openssl/lib/

In my case I already had openssl installed so it was really the export command that solved the problem.

Upvotes: 41

giapnh
giapnh

Reputation: 3278

  1. Make sure openssl is installed on Mac via Homebrew.
brew install openssl
  1. Install mysql2 gem.
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
  1. If the bug is not fixed, this above solution is the last one
sudo installer -pkg /Library/Developer/CommandLineTools/Packages/macOS_SDK_headers_for_macOS_10.14.pkg -target /

Another solution if the above does not work.

cd /usr/local/Cellar/openssl/1.0.2s/lib/

sudo cp libssl.1.0.0.dylib libcrypto.1.0.0.dylib /usr/local/lib

Upvotes: 20

Shivansh Gaur
Shivansh Gaur

Reputation: 938

From the answer at this question, running the following worked for me

gem install mysql2 --source 'https://rubygems.org/' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include

Upvotes: 43

Ralf Claassens
Ralf Claassens

Reputation: 209

Try this:

which mysql

Then, use the output-result to install the gem using the existing mysql installation directory:

gem install mysql2 -- --with-mysql-dir=<mysql-installation-directory>

Upvotes: 1

Related Questions