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

Другие вопросы по тегам