3

我正在尝试在 Windows Server 2003 上安装 Redmine 2.1.4。为了让它工作,我需要安装activerecord-mysql-adaptergem,而这又似乎依赖于mysql-2.9.0.gem. 我已经从ruby​​gems下载了后者并执行了:

gem install mysql-2.9.0.gem

给出以下输出:

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

我猜,一种可能性是我缺少 MySQL C 连接器库。我已经从http://dev.mysql.com/downloads/connector/c/mysql-connector-c-6.0.2-win32.msi下载了两者,但是两个安装程序都退出了: mysql-connector-c-6.0.2-win32-vs2005.msi在此处输入图像描述

我也尝试复制C:\Program Files\MySQL\MySQL Server 5.1\lib\debug\libmysql.dllC:\Ruby193\bin,但也没有解决 mysql-2.9.0.gem 安装问题。

我还能尝试什么?

编辑

从我认为的日志中,Ruby 正在寻找 $RUBY_HOME\lib,而不是 $RUBY_HOME\bin 下的库,如问题中提到的一些来源中所发现的。所以将 libmysql 从 $MySQL_HOME\lib 移动到 $RUBY_HOME\lib 有一点帮助,但现在 Ruby 找不到其他一些库和头文件。所以我猜,我需要使用如下选项:

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"

这也不起作用(可能是因为路径中有空格)。

4

2 回答 2

10

尝试使用来自http://dev.mysql.com/downloads/connector/c/的没有安装程序版本的连接器,并在根文件夹或没有任何空间的文件夹路径中提取内容,然后尝试安装 mysql gem

例子

gem install mysql --platform=ruby -- --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32
于 2012-11-28T13:27:48.837 回答
2

我已经发布了带有预编译二进制文件的rubymysql gem 2.9.0 版。x86-mingw32

如果您让 RubyGems 确定正确的平台,它会自动x86-mingw32为您安装平台 gem,这将避免编译过程。

安装后,它将向您显示一组说明,指示您下载 MySQL Connector/C 并将其 DLL 放置在正确的位置:

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

如果您只需要连接到已经运行的 MySQL 版本,则无需下载或安装 MySQL。

RubyGems 和 Bundler 都会自动检测正确的平台并安装正确的预编译二进制文件,而无需您自己编译它们。

如果您在代理后面,请使用--http-proxy参数gem install(请参阅帮助)或设置HTTP_PROXY环境变量。

希望有帮助。

于 2012-11-28T19:37:27.113 回答