50 votes

Impossible d'installer la gemme mysql2 sur macOS Sierra

Je configure mon environnement de développement dans le nouveau système de gestion de l'information. 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 une pierre précieuse...

$ 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

0 votes

Je me demande si cela répond à votre question : stackoverflow.com/questions/30834421/

0 votes

Merci, @spickermann. Mais cela ne m'aide pas, mêmes résultats après brew install openssl .

2 votes

Avez-vous aussi essayé brew reinstall openssl && brew link openssl --force

102voto

kylekeesling Points 1107

J'ai eu le même problème, j'ai essayé toutes les solutions énumérées ci-dessus, puis j'ai commencé à me taper la tête contre le clavier pendant quelques heures.

J'ai alors pensé à essayer d'installer/réinstaller les outils de ligne de commande de Xcode :

xcode-select --install

Une fois que j'ai fait cela, la gemme mysql2 s'est installée sans problème. J'espère que cela fait l'affaire !

1 votes

J'ai rencontré le même problème après avoir effectué la mise à jour vers MacOS Sierra 10.12.1 Merci !

0 votes

Après avoir fait cela, j'ai obtenu une erreur différente : Permission denied @ rb_sysopen . Cela a été corrigé en utilisant Sudo : sudo bundle install . Ce n'est pas une solution idéale, mais bon, ça a marché !

8 votes

Sur mon 10.12.4, il y a juste le message suivant xcode-select: error: command line tools are already installed, use "Software Update" to install updates . Y a-t-il un autre moyen de forcer la réinstallation ?

66voto

Alessandro Berardi Points 1301

Lorsque vous installez openssl via brew, vous devriez obtenir le message suivant :

Apple a abandonné l'utilisation d'OpenSSL au profit de ses propres bibliothèques TLS et cryptographiques.

En général, il n'y a pas de conséquences pour vous. Si vous construisez votre logiciel et qu'il nécessite cette formule, vous devrez ajouter à vos variables de construction variables de construction :

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 la commande suivante :

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

Cela a marché pour moi.

Voir documentation de l'empaqueteur pour plus d'informations.

1 votes

Cela a marché pour moi. J'ai reçu l'avertissement "nil build". J'ai essayé de faire une installation groupée dans la ligne suivante, cela a fonctionné pour moi. Merci.

0 votes

Oui, ça marche, merci de m'avoir évité de me frapper la tête pendant des heures.

2 votes

Merci mon Dieu... Alessandro, Lady Gaga devrait faire une chanson sur toi.

12voto

Stuart Hannig Points 254

Je suis ici pour partager ma solution, puisque les autres réponses n'ont pas fonctionné.

Pour mon environnement, j'ai besoin de MySQL 5.6 et j'ai donc dû utiliser :

brew install mysql56 au lieu de brew install mysql

L'installation groupée de la gemme mysql2 continuait à échouer, jusqu'à ce que :

brew link mysql56

J'ai aussi couru après :

mysql.server start

La dernière étape pourrait être inutile, mais juste dans le cas.

0 votes

La même chose a fonctionné avec Percona, bien que j'aie dû le forcer : brew link --force percona-server56

1voto

Arvind Mehra Points 410

Essayez d'installer xcode-select --install

1 votes

Cette solution fonctionne de temps en temps. Après la 10.14, elle renvoie à l'App Store.

1voto

Paulissimo Points 19

J'ai rencontré un problème similaire et pour moi, 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. Le changement de rvm pour utiliser la 2.1 m'a permis d'avancer un peu.

Puis j'ai trouvé ça : https://github.com/brianmario/mysql2/issues/603 qui disait qu'il fallait utiliser une version de gemme mysql2 supérieure à 0.3.17 avec MySQL version 5.7

J'ai mis à jour la gemme en 0.3.17 et ça a marché. J'espère que cela aidera quelqu'un.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X