Je configure mon environnement de développement dans le nouveau macOS Sierra .
Tout d'abord, j'ai installé Rbenv , Ruby (2.3.1) , Homebrew et donc la dernière version de MySQL (5.7.15) .
$ brew install mysql
$ mysql.server start
Ok, MySQL a été initialisé. Il est temps d'installer le mysql2 gem ...
$ gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.7.15/bin/mysql_config
Mais ça n'a pas marché. ????
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
J'ai juste eu le même problème, j'ai essayé toutes les solutions énumérées ci-dessus, puis j'ai commencé à me cogner la tête contre le clavier pendant quelques heures.
J'ai alors pensé à essayer d'installer/réinstaller les outils de ligne de commande Xcode:
xcode-select --install
Une fois que j’ai fait cela, la gem mysql2 s’est installée avec aucun problème. J'espère que ça fait l'affaire!
Lorsque vous installez openssl via brew, vous devriez recevoir le message suivant:
Apple a déconseillé d'utiliser OpenSSL au profit de ses propres bibliothèques TLS et crypto
Généralement, cela n’entraîne aucune conséquence pour vous. Si vous construisez votre logiciel propre et il nécessite cette formule, vous devrez ajouter à votre construire des variables:
LDFLAGS: -L/usr/local/opt/openssl/lib
CPPFLAGS: -I/usr/local/opt/openssl/include
PKG_CONFIG_PATH:/usr/local/opt/openssl/lib/pkgconfig
Vous pouvez définir ces indicateurs de construction (pour l'application locale) en exécutant les opérations suivantes:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Cela a fonctionné pour moi.
Voir la documentation de bundler pour plus d'informations.
Je suis ici pour partager ma solution, car les autres réponses ne fonctionnaient pas.
Pour mon environnement, j'avais besoin de MySQL 5.6, donc je devais utiliser:
brew install mysql56
au lieu de brew install mysql
L'ensemble d'installation de la gem mysql2 a échoué jusqu'à ce que:
brew link mysql56
J'ai aussi couru après:
mysql.server start
La dernière étape peut être inutile, mais juste au cas où.
Je me suis donc heurté à ce problème similaire et, pour moi, il s’est avéré qu’il s’agissait d’une mauvaise version de Ruby et d’une version incompatible de MySQL. J'utilise Ruby 2.3 sur la plupart de mes projets, mais j'ai hérité d'un projet 2.1. Passer à la version 2.1 pour utiliser la version 2.1 m'a amené un peu plus loin.
Puis j'ai trouvé ceci: https://github.com/brianmario/mysql2/issues/603 qui disait que vous deviez utiliser la version de mysql2 gem supérieure à 0.3.17 avec MySQL version 5.7
Gem mis à jour à 0.3.17 et il a tiré droit. J'espère que ça aide quelqu'un.
Essayez d'installer xcode-select --install
Presque le même scénario que @Caio Tarifa, Ruby 2.3.3, mysql 5.6 et mysql2. Essayé quelques solutions ci-dessus et finalement le faire fonctionner avec l'approche de @ kylekeesling.
Tout d'abord, essayé sur la solution 1 de @spickermann:
brew reinstall openssl && brew link openssl --force
Rien ne s'est passé, même erreur affichée.
Deuxièmement, a essayé la solution de @Alessandro Berardi:
bundle config --local build.mysql2 "--with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include"
Cela a eu des erreurs différentes mais plus car il écrasait la configuration de l'extension gem, de sorte que toute installation d'extension gem a échoué.
Enfin, essayé la solution @kylekeesling:
xcode-select --install
Il corrige le problème de gemme mysql ainsi que nikogiri. Depuis que j'ai déjà intégré Xcode, dans mon cas, il réinstalle les outils de ligne de commande Xcode.
J'ai un problème comme ça. J'espère que cela pourrait être utile.
brew install [email protected]
brew link [email protected] --force
bundle install
this répondre aidez-moi!