Mysql2 gem не скомпилируется с MySQL 5.6.12 на OS X с Homebrew
Я обновил все пакеты, которые я установил с помощью Homebrew. MySQL получил обновление до 5.6.12 (от 5.5.27 или около того):
$ mysql --version
mysql Ver 14.14 Distrib 5.6.12, for osx10.8 (x86_64) using EditLine wrapper
и теперь глагол mysql2 больше не компилируется:
$ 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
Файл mysql.h
присутствует в /usr/local/Cellar/mysql/5.6.12/include/mysql.h
. Любые идеи, что происходит?
Файл mysql.h
не отображается в /usr/local
, потому что символическая ссылка, кажется, идет глубже, чем она должна:
$ ls -la /usr/local/include/mysql
lrwxr-xr-x 1 pupeno admin 36 21 Jun 15:18 /usr/local/include/[email protected] -> ../Cellar/mysql/5.6.12/include/mysql
вместо
/usr/local/Cellar/mysql/5.6.12/include
Сказав это, я вручную исправил символическую ссылку, и компиляция все еще не удалась. Поэтому я застрял.
Ответы
Ответ 1
У меня была та же проблема, мне удалось это исправить. Я многое сделал, и я точно не знаю, что это было, но, похоже, работала с MySQL 5.6.10.
Удалите MySQL 5.6.12:
brew unlink mysql
brew uninstall mysql
Перейдите в каталог homebrew:
cd /usr/local
Перейдите к версии 5.6.10 (вы можете найти список версий, запустив brew versions mysql
:
git checkout 48f7e86 Library/Formula/mysql.rb
Затем снова установите mysql:
brew install mysql
И теперь gem install mysql2
работает для меня.
Я также установил mysql из source (brew install mysql --build-from-source
), но это не решило его, но может быть частью решения.
Ответ 2
just;)
gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
Ответ 3
Это тоже работало для меня. Это заставляет жемчужину компилироваться против 5.6.10.
bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
Связанный ответ:
fooobar.com/questions/40019/...
Ответ 4
Главный ответ здесь устарел... пивовары исправили mysql:
brew update
brew upgrade mysql
gem install mysql2
Это обновит mysql до последней версии, которая, кажется, прекрасно работает с гемом mysql2 в OSX.
Ответ 5
Доступно гораздо больше новых версий MySQL, но для установки более старого проекта на Mac OS X Mojave мне все же нужно было запустить MySQL 5.6 и связать его с ним в приложении на Rails 5.
Я настроил пакет, затем установил пакет и был готов к работе.
$> 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
Обратите внимание, что вам нужно обновить версию выпуска MySQL по пути.
Ответ 6
Вместо этого я бы рекомендовал этот ответ: mysql2 gem не удалось скомпилировать с MySQL 5.6.12 на OS X с Homebrew
Проблема заключается в настройках компилятора в домашней версии MySql. Оригинальный ответ можно найти здесь: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html