3

I'm trying to install Redmine 2.1.4 on Windows Server 2003. For it to work, I need to install activerecord-mysql-adapter gem, which in turn seems to rely on mysql-2.9.0.gem. I've downloaded the latter from rubygems and executed:

gem install mysql-2.9.0.gem

which gives the following output:

C:\>gem install mysql-2.9.0.gem
Temporarily enhancing PATH to include DevKit...
Building native extensions.  This could take a while...
ERROR:  Error installing mysql-2.9.0.gem:
        ERROR: Failed to build gem native extension.

        C:/Ruby193/bin/ruby.exe extconf.rb
checking for main() in -llibmysql... 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=C:/Ruby193/bin/ruby
        --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-libmysqllib
        --without-libmysqllib


Gem files will remain installed in C:/Ruby193/lib/ruby/gems/1.9.1/gems/mysql-2.9.0 for inspection.
Results logged to C:/Ruby193/lib/ruby/gems/1.9.1/gems/mysql-2.9.0/ext/mysql_api/gem_make.out

I'm guessing, one possibility is I'm lacking MySQL C Connector library. I've downloaded both mysql-connector-c-6.0.2-win32.msi and mysql-connector-c-6.0.2-win32-vs2005.msi from http://dev.mysql.com/downloads/connector/c/, but both installers exited with: enter image description here

I also tried copying C:\Program Files\MySQL\MySQL Server 5.1\lib\debug\libmysql.dll to C:\Ruby193\bin, but it also didn't solve the mysql-2.9.0.gem installation issue.

What else can I try?

EDIT

From the logs I figured, Ruby was looking for libs under, surprise, surprise, $RUBY_HOME\lib, not $RUBY_HOME\bin, as found in some sources mentioned in the question. So moving the libmysql from $MySQL_HOME\lib to $RUBY_HOME\lib helped a little, but now Ruby cannot find some other libs and headers. So I'm guessing, I need to use the an option like:

C:\>gem install mysql-2.9.0.gem --platform=ruby --with-opt-lib="C:/Program Files/MySQL/MySQL Server 5.1/lib" --with-opt-include="C:/Program Files/MySQL/MySQL Server 5.1/include"

which won't work either (probably because of spaces in path).

mmm
  • 1,277
  • 5
  • 18
  • 34

2 Answers2

10

Try with no installer version of connector from http://dev.mysql.com/downloads/connector/c/ and extract the content in root folder or a folder path which does not have any space for and then try to install mysql gem

example

gem install mysql --platform=ruby -- --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32
ch4nd4n
  • 4,110
  • 2
  • 21
  • 43
  • 1
    Besides downloading the connector from the provided link, that command line did the trick for me : gem install mysql --platform=ruby -- --with-mysql-lib=c:\mysql_connector\lib --with-mysql-include=C:\mysql_connector\include (i renamed the name of the directory in which i extracted the archive content) – Chris Jul 25 '13 at 14:17
  • I've just successfully installed this with MySQL Connector 6.1.3, with the following command: gem install mysql2 --platform=ruby -- --with-mysql-dir=c:/connector-6.1.3 – Nathaniel Mallet Feb 01 '14 at 01:13
2

I've released mysql gem version 2.9.0 with both ruby and x86-mingw32 pre-compiled binaries.

If you let RubyGems determine the right platform, it will automatically install x86-mingw32 platform gem for you, which will avoid the compilation process.

Once installed, it will show you a set of instructions indicating you to download MySQL Connector/C and placing it's DLLs in the right place:

C:\Users\Luis>gem install mysql
Fetching: mysql-2.9.0-x86-mingw32.gem (100%)

======================================================================================================

  You've installed the binary version of mysql.
  It was built using MySQL Connector/C version 6.0.2.
  It's recommended to use the exact same version to avoid potential issues.

  At the time of building this gem, the necessary DLL files where available
  in the following URL:

  http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-noinstall-6.0.2-win32.zip/from/pick

  You can put the lib\libmysql.dll available in this package to your Ruby bin directory.
  E.g. C:\Ruby\bin

======================================================================================================

Successfully installed mysql-2.9.0-x86-mingw32
1 gem installed

There is no need to download or install MySQL if you only need to connect to an already running version of MySQL.

Both RubyGems and Bundler will automatically detect the right platform and install the right pre-compiled binaries without the need to compile them on your own.

If you're behind a proxy, use --http-proxy parameter of gem install (see help) or set HTTP_PROXY environment variable.

Hope that helps.

Luis Lavena
  • 10,348
  • 1
  • 37
  • 39