MySQL не может скомпилировать с 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/mysql@ -> ../Cellar/mysql/5.6.12/include/mysql
вместо
/usr/local/Cellar/mysql/5.6.12/include
Сказав это, я вручную исправил символическую ссылку, и компиляция все еще не удалась. Так что я застрял.
5 ответов
У меня была такая же проблема, мне удалось ее исправить. Я сделал много вещей, и я точно не знаю, что это было, но переход на MySQL 5.6.10, похоже, сработал.
Удалите MySQL 5.6.12:
brew unlink mysql
brew uninstall mysql
Перейдите в каталог доморощенных:
cd /usr/local
Перейти к версии 5.6.10 (вы можете найти список версий, запустив brew versions mysql
:
git checkout 48f7e86 Library/Formula/mysql.rb
Затем установите mysql снова:
brew install mysql
И сейчас gem install mysql2
работает для меня.
Я также установил MySQL из источника (brew install mysql --build-from-source
), но это не решило проблему, но может быть частью решения.
Просто;)
gem install mysql2 -- --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
Это также, казалось, работало на меня. Это заставляет драгоценный камень скомпилировать против 5.6.10.
bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql/5.6.10/bin/mysql_config
Соответствующий ответ: /questions/21790862/problema-ustanovki-paketa-otsutstvuet-mysqlh/21790875#21790875
Верхний ответ здесь устарел... пивовары исправили mysql:
brew update
brew upgrade mysql
gem install mysql2
Это обновит mysql до 5.6.13, который, кажется, прекрасно работает с ge m mysql2 на OSX.
Я должен был указать ldflags
а также cppflags
чтобы он правильно скомпилировался, например:
gem install mysql2 -v '0.5.2' -- --with-ldflags=-L/usr/local/opt/openssl/lib --with-cppflags=-I/usr/local/opt/openssl/include
Доступно гораздо больше новых версий MySQL, но для установки более старого проекта на Mac OS X Mojave мне все же нужно было запустить MySQL 5.6 и связать его в приложении на Rails 5.
Я настроил пакет, затем установил пакет и был готов к работе.
$> brew install mysql@5.6
$> bundle config build.mysql2 --with-mysql-config=/usr/local/Cellar/mysql\@5.6/5.6.42/bin/mysql_config
$> bundle install
Обратите внимание, что вам нужно обновить версию выпуска MySQL по пути.
Вместо этого я бы порекомендовал этот ответ: gem mysql2 не скомпилируется с MySQL 5.6.12 на OS X с Homebrew
Проблема с настройками компилятора в версии MySql для Homebrew. Оригинальный ответ найден здесь: http://www.randomactsofsentience.com/2013/05/gem-install-mysql2-missing-mysqlh-on-os.html