Mysql.h отсутствует.... (Ruby on Rails, OSX)

Я попробовал несколько идей... никто из них не работал... Я просто пытаюсь установить mysql2 как драгоценный камень. Мой mysql работает, но каждый раз, когда моя система говорит, что mysql.h отсутствует... У кого-то есть идея? Это очень расстраивает сейчас...

Я использую osx 10.8.3, ruby ​​1.9.3, rails 3.2.13 и home- brew.

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

        /Users/gadreel/.rvm/rubies/ruby-1.9.3-p429/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/gadreel/.rvm/rubies/ruby-1.9.3-p429/bin/ruby
    --with-mysql-config
    --without-mysql-config

    file `which mysql`
    /usr/local/mysql/bin/mysql: Mach-O 64-bit executable x86_64

Ответ 1

Использование диспетчера пакетов, например Homebrew или MacPorts делает это довольно прямолинейно, чтобы исправить это. Бинарный дистрибутив MySQL прямо из Oracle и тот, который связан с самой ОС X, не имеет заголовков разработки, из которых mysql.h является одним из них.

Homebrew зафиксировал бы это следующим образом:

brew install mysql

MacPorts очень похож:

sudo port install mysql

Обе эти библиотеки установки, клиент командной строки и соответствующие заголовки разработчиков для библиотек. Включение сервера необязательно.

В качестве альтернативы вы можете получить исходный прямо из Apple и установить его, как вам удобно.

Как правило, Homebrew - лучший способ пойти.

Ответ 2

Что работало для меня в установке Mountain Lion Rails (с использованием Homebrew и RVM), было редактирование /usr/local/Cellar/mysql/ 5.XX.XX/bin/mysql_config и удаление -Wno-null-conversion -Wno-unused-private-field из опций cxflags и cxflags следующим образом:

До:

cflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Wno-null-conversion -Wno-unused-private-field -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!

После:

cflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!
cxxflags="-I$pkgincludedir  -Wall -Os -g -fno-strict-aliasing -DDBUG_OFF " #note: end space!

После этого gem install mysql2 продолжал без hickups

Примечание: это, вероятно, связано с изменением, внесенным в mysql_config после 5.6.10: http://bugs.mysql.com/bug.php?id=69645

Ответ 3

Установка драгоценного камня иногда связана с компиляцией источника. В этом случае для создания XML-интерфейса необходимо создать интерфейс ruby, скомпилировав C-код - вам, скорее всего, потребуется установить файлы разработки MySQL.

(ранее пропустил ссылку OSX)