Compiling MySQL Native Bindings on OS X + MacPorts

Playing around with the partitions on my mac yesterday, i accidently deleted the efi partition (dumb of me, i know), but I figured it was about time for a reload, so i just sucked it up and wiped the mac clean.

Going through and installing all the stuff i needed for development, i ran into a problem installing the native mysql bindings for ruby.

[host-192-168-254-149:~] pjdavis% sudo gem install mysql
Bulk updating Gem source index for: http://gems.rubyforge.org/
Building native extensions. This could take a while…
ERROR: Error installing mysql:
ERROR: Failed to build gem native extension.
/opt/local/bin/ruby extconf.rb install mysql
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lm… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lz… yes
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lsocket… no
checking for mysql_query() in -lmysqlclient… no
checking for main() in -lnsl… no
checking for mysql_query() in -lmysqlclient… no
*** 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
–without-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=/opt/local/bin/ruby
–with-mysql-config
–without-mysql-config
–with-mysql-dir
–without-mysql-dir
–with-mysql-include
–without-mysql-include=${mysql-dir}/include
–with-mysql-lib
–without-mysql-lib=${mysql-dir}/lib
–with-mysqlclientlib
–without-mysqlclientlib
–with-mlib
–without-mlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-zlib
–without-zlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-socketlib
–without-socketlib
–with-mysqlclientlib
–without-mysqlclientlib
–with-nsllib
–without-nsllib
–with-mysqlclientlib
–without-mysqlclientlib
Gem files will remain installed in /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7 for inspection.
Results logged to /opt/local/lib/ruby/gems/1.8/gems/mysql-2.7/gem_make.out
I had installed mysql with macports, and that is what was causing the problem. Turns out gem can’t find everything it needs to compile the mysql bindings. Instead of just [sourcecode language=sh]sudo gem install mysql — \
–with-mysql-include=/opt/local/include/mysql5/mysql/ \
–with-mysql-lib=/opt/local/lib/mysql5/mysql/ \
–with-mysql-config=/opt/local/bin/mysql_config5[/sourcecode] if you installed mysql through macports or porticus.
Hope this helps everyone
Update: accoring a comment on this blog Bryanl (who I believe is smarticus, he just didn’t bother to fill out his blogger profile) says that all you really need is the config part. So you may only need to do [sourcecode language=sh]sudo gem install mysql — –with-mysql-config=/opt/local/bin/mysql_config5[/sourcecode]

Leave a Reply