wake-up-neo.net

Mysql2 gem kann nicht auf macOS Sierra installiert werden

Ich richte meine Entwicklungsumgebung in der neuen macOS Sierra  ein.

Zuerst habe ich Rbenv , Ruby (2.3.1) , Homebrew und so die neueste Version von MySQL (5.7.15) installiert.

$ brew install mysql
$ mysql.server start

Ok, MySQL wurde initialisiert. Zeit zum Installieren von mysql2 gem ...

$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config

Aber es hat nicht funktioniert. ???? 


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
43
Caio Tarifa

Ich hatte gerade das gleiche Problem, probierte alle oben aufgeführten Lösungen aus und schlug dann ein paar Stunden mit dem Kopf gegen die Tastatur.

Ich dachte dann daran, die Xcode Command Line Tools auszuprobieren und zu installieren:

xcode-select --install

Einmal habe ich das mysql2 gem ohne Probleme installiert. Ich hoffe das macht den Trick!

98
kylekeesling

Wenn Sie openssl via brew installieren, sollten Sie die folgende Meldung erhalten:

Apple hat die Verwendung von OpenSSL zugunsten seiner eigenen TLS- und Kryptobibliotheken abgelehnt

Im Allgemeinen haben Sie daraus keine Konsequenzen. Wenn du dein .__ baust. eigene Software, die diese Formel erfordert, müssen Sie Ihrem .__ hinzufügen. Build-Variablen:

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

Sie können diese Build-Flags (für die lokale Anwendung) setzen, indem Sie Folgendes ausführen:

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

Das hat bei mir funktioniert.

Weitere Informationen finden Sie in der Dokumentation von bundler .

46

Ich bin hier, um meinen Fix zu teilen, da die anderen Antworten nicht funktionierten. 

Für meine Umgebung brauche ich MySQL 5.6, daher musste ich Folgendes verwenden:

brew install mysql56 statt brew install mysql

Die Installation des mysql2-Gems ist im Bundle immer fehlgeschlagen, bis:

brew link mysql56

Ich bin auch danach gelaufen:

mysql.server start

Der letzte Schritt ist möglicherweise unnötig, aber nur für den Fall.

12
Stuart Hannig

Viele tolle Antworten, ich konnte sie so kombinieren:

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

weil ich mich mit bundle config nicht wohl gefühlt habe

7
Yoav Epstein

Also bin ich auf dieses ähnliche Problem gestoßen und für mich war es eine falsche Ruby-Version und eine inkompatible MySQL-Version. Ich benutze Ruby 2.3 für die meisten meiner Projekte, habe aber ein 2.1-Projekt geerbt. Der Wechsel zu rvm zu 2.1 hat mich etwas weiter gebracht.

Dann fand ich Folgendes: https://github.com/brianmario/mysql2/issues/603 das besagte, dass Sie die mysql2 gem Version größer als 0.3.17 mit MySQL Version 5.7 verwenden mussten

Juwel wurde auf 0.3.17 aktualisiert und es wurde richtig angefeuert. Hoffe das hilft jemandem.

1
Paulissimo

Versuchen Sie, xcode-select --install zu installieren

1
Prem

Fast das gleiche Szenario wie @ Caio Tarifa, Ruby 2.3.3, MySQL 5.6 und MySQL2. Ich habe ein paar Lösungen ausprobiert und endlich mit @ kylekeesling's Ansatz funktionieren lassen.

Zuerst probierte Lösung 1 von @spickermann aus: 

brew reinstall openssl && brew link openssl --force

Es ist nichts passiert, der gleiche Fehler wird angezeigt.

Zweitens probierte die Lösung von @Alessandro Berardi: 

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

Dies wurde anders, aber es gab mehr Fehler, da die config der gem-Erweiterung überschrieben wurde, sodass die Installation der gem-Erweiterung fehlgeschlagen ist.

Schließlich probierte @kylekeesling Lösung:

xcode-select --install

Es behebt das Problem der MySQL-Edelsteine ​​sowie Nikogiri. Da ich bereits Xcode installiert habe, installieren Sie die Xcode Command Line Tools neu. 

1
B Liu

Ich habe so ein Problem. Hoffe das könnte nützlich sein.

brew install [email protected]

brew link [email protected] --force

bundle install

diese antwort hilf mir!

0
DongGE