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é.
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.
juste ;)
gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
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
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.
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.
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