web-dev-qa-db-fra.com

mysql2 gem ne parvient pas à compiler avec MySQL 5.6.12 sur OS X avec Homebrew

J'ai mis à jour tous les packages que j'ai installés avec Homebrew. MySQL a été mis à niveau vers 5.6.12 (à partir de 5.5.27 environ):

$ mysql --version
mysql  Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using  EditLine wrapper

et maintenant la gemme mysql2 ne compile plus:

$ gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

        /Users/pupeno/.rvm/rubies/Ruby-1.9.3-p429-perf/bin/Ruby extconf.rb
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** extconf.rb failed ***
Could not create Makefile due to some reason, probably lack of
necessary libraries and/or headers.  Check the mkmf.log file for more
details.  You may need configuration options.

Provided configuration options:
    --with-opt-dir
    --with-opt-include
    --without-opt-include=${opt-dir}/include
    --with-opt-lib
    --without-opt-lib=${opt-dir}/lib
    --with-make-prog
    --without-make-prog
    --srcdir=.
    --curdir
    --Ruby=/Users/pupeno/.rvm/rubies/Ruby-1.9.3-p429-perf/bin/Ruby
    --with-mysql-config
    --without-mysql-config

Le fichier mysql.h est présent dans /usr/local/Cellar/mysql/5.6.12/include/mysql.h. Avez-vous une idée de ce qui passe?

Le fichier mysql.h n'apparaît pas dans /usr/local parce que le lien symbolique semble aller plus loin qu'il ne devrait:

$ ls -la /usr/local/include/mysql
lrwxr-xr-x  1 pupeno  admin  36 21 Jun 15:18 /usr/local/include/mysql@ -> ../Cellar/mysql/5.6.12/include/mysql

au lieu de

/usr/local/Cellar/mysql/5.6.12/include

Cela dit, j'ai corrigé manuellement le lien symbolique et la compilation a toujours échoué. Je suis donc coincé.

35
pupeno

J'ai eu le même problème, j'ai réussi à le réparer. J'ai fait beaucoup de choses, et je ne sais pas exactement ce que c'était, mais passer à MySQL 5.6.10 semble avoir fonctionné.

Désinstallez MySQL 5.6.12:

brew unlink mysql
brew uninstall mysql

Accédez au répertoire homebrew:

cd /usr/local

Accédez à la version 5.6.10 (vous pouvez trouver une liste de versions en exécutant brew versions mysql:

git checkout 48f7e86 Library/Formula/mysql.rb

Réinstallez ensuite mysql:

brew install mysql

Et maintenant gem install mysql2 travaille pour moi.

J'ai également installé mysql depuis la source (brew install mysql --build-from-source), mais cela ne l'a pas résolu, mais pourrait faire partie de la solution.

31
iain

juste ;)

gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
23
Nedudi

Cela a également semblé fonctionner pour moi. Il oblige la gemme à compiler contre 5.6.10.

bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config

Réponse connexe: https://stackoverflow.com/a/9360181

12
croemmich

La meilleure réponse ici est obsolète ... les brasseurs ont corrigé mysql:

brew update
brew upgrade mysql
gem install mysql2

Cela mettra à jour mysql vers la dernière version, qui semble bien fonctionner avec la gemme mysql2 sur OSX.

9
jkrall

De nombreuses versions plus récentes de MySQL sont disponibles, mais pour une installation de projet plus ancienne sur Mac OS X Mojave, j'avais encore besoin d'exécuter MySQL 5.6 et de le lier dans une application Rails 5).

J'ai configuré le bundler, puis installé le bundle et j'étais prêt à partir.

$> brew install [email protected]
$> bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql\@5.6/5.6.42/bin/mysql_config
$> bundle install

Notez que vous devrez mettre à jour la version finale de MySQL dans le chemin.

4

Je recommanderais plutôt cette réponse: la gemme mysql2 ne parvient pas à compiler avec MySQL 5.6.12 sur OS X avec Homebrew

Le problème vient des paramètres du compilateur dans la version Homebrew de MySql. Réponse originale trouvée ici: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html

1
jaysqrd