简体   繁体   中英

Installing mysql-2.9.0 gem on Windows fails due to lack of libmysql

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: 在此输入图像描述

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).

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

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.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM