web-dev-qa-db-fra.com

Impossible d'installer mysql2 gem sur macOS Sierra

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

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!

98
kylekeesling

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.

46
Alessandro Berardi

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ù.

12
Stuart Hannig

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.

1
Paulissimo

Essayez d'installer xcode-select --install

1
Prem

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. 

1
B Liu

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!

0
DongGE