我试了好几个办法......都没有用......我只是想把mysql2安装成一个gem。我的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
我在Mountain Lion Rails的安装中(使用Homebrew和RVM)所做的工作是编辑usrlocalCellarmysql5.XX.XXbinmysql_config,然后去掉 -Wno-null-conversion -Wno-unused-private-field
从 cxflags 和 cxflags 选项中获得如下信息。
Before:
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!
After:
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安装mysql2的过程中,没有出现任何问题
注意:这可能是由于5.6.10之后引入的mysql_config的变化。http:/bugs.mysql.combug.php?id=69645
安装一个 gem 有时会涉及到编译源代码。 在这种情况下,MySQL gem需要通过编译C代码来创建ruby接口--你很可能需要安装MySQL开发文件。
(之前错过了OSX的参考资料)
你需要安装mysql的开发头文件,使用brew你可能需要安装一个比8更低的版本,因为一些头文件从这个发行版中被移除。例如 my_global.h
已被删除,所以如果你的代码使用这个头,你将被迫安装一个以前的版本,然后8。
头文件依赖性
我们已经开始清理头文件的依赖性,也就是 "包含你所使用的",以及重新组织头文件以去除构建的依赖性。我们修正了模棱两可的包含路径,现在几乎所有的路径都应该从根目录开始。在例如my_global.h消失后,增量性增加了很多,sql_class.h的重量也减少了不少。运送的客户端头文件自成体系,更加合理。例如,客户端头文件现在是独立于平台的(32位和64位Linux之间没有区别)。
brew install [email protected] [email protected]