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)