【问题标题】:Installing mysql ruby gem in windows fails using ruby 2.0.0使用 ruby​​ 2.0.0 在 Windows 中安装 mysql ruby​​ gem 失败
【发布时间】:2013-07-16 10:03:09
【问题描述】:

使用巧克力我已经安装了 ruby​​ 和 ruby​​.devkit

cinst ruby
cinst ruby.devkit

然后我按照github wiki 上的说明进行了测试,并按照point 5 中的详细说明测试了devkit

gem install json --platform=ruby
ruby -rubygems -e "require 'json'; puts JSON.load('[42]').inspect" 

这工作正常,所以我假设我的 devkit 安装是正确的。但是,当我尝试像这样安装 mysql gem 时

gem install mysql --platform=ruby -- --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32

我收到以下错误

This could take a while...
ERROR:  Error installing mysql:
        ERROR: Failed to build gem native extension.

    C:/ruby200/bin/ruby.exe extconf.rb --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32 
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:/ruby200/bin/ruby
        --with-mysql-dir
        --with-mysql-include
        --without-mysql-include=${mysql-dir}/include
        --with-mysql-lib=${mysql-dir}/
        --with-libmysqllib
        --without-libmysqllib


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

我的所有路径都正确,我是following this tutorial。日志文件对我没有多大帮助,但它就在这里。

have_library: checking for main() in -llibmysql... -------------------- no

"gcc -o conftest.exe -IC:/ruby200/include/ruby-2.0.0/i386-mingw32 -IC:/ruby200/include/ruby-2.0.0/ruby/backward -IC:/ruby200/include/ruby-2.0.0 -I. -IC:/mysql-connector-c-noinstall-6.0.2-win32/include -DFD_SETSIZE=2048 -D_WIN32_WINNT=0x0501 -D_FILE_OFFSET_BITS=64   -O3 -fno-omit-frame-pointer -fno-fast-math -g -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Wpointer-arith -Wwrite-strings -Wdeclaration-after-statement -Wimplicit-function-declaration conftest.c  -L. -LC:/ruby200/lib -LC:\mysql-connector-c-noinstall-6.0.2-win32\lib\libmysql.dll -LC:/mysql-connector-c-noinstall-6.0.2-win32/ -L.      -lmsvcrt-ruby200  -lshell32 -lws2_32 -limagehlp -lshlwapi  "
checked program was:
/* begin */
1: #include "ruby.h"
2: 
3: #include <winsock2.h>
4: #include <windows.h>
5: int main(int argc, char **argv)
6: {
7:   return 0;
8: }
/* end */

相关问题


注意:我最终改用了 mysql2 gem,它有足够的功能来满足我的需要。


【问题讨论】:

    标签: mysql ruby rubygems


    【解决方案1】:

    我现在也面临同样的问题。但对于 ruby​​ 2.0.0 已修复

    从听到http://dev.mysql.com/downloads/connector/c/下载c的mysql连接器解压到一个目录,然后

    gem install mysql2 --platform=ruby -- --with-mysql-dir=C:/mysql-connector-c-noinstall-6.0.2-win32
    

    【讨论】:

    • 你读过我的问题吗?您刚刚重申了我在问题末尾所说的话,请使用 mysql2。问题是如何让mysql 安装,这并不能解决问题,只是解决另一个库的问题
    • 您正在尝试安装 mysql 而不是 mysql2。这在 ruby​​ 2.0 中不受支持。
    • 这对我有用,但也必须在 Windows 的 ruby​​/bin 目录中复制 libmysql.dll 文件。
    【解决方案2】:

    要让mysql gem 工作,需要以下安装命令

    gem install mysql --platform=ruby -- --with-opt-dir=C:/mysql-connector-c-noinstall-6.0.2-win32
    

    【讨论】:

      【解决方案3】:

      另一种方法

      根据您的 CPU 安装一个或另一个:

      http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-6.1.3-win32.msi http://dev.mysql.com/get/Downloads/Connector-C/mysql-connector-c-6.1.3-winx64.msi

      准备一个指向您安装 C 文件的位置的驱动器:

      subst x: "C:\Program Files\MySQL\MySQL Connector C 6.1"
      

      subst x: "C:\Program Files (x86)\MySQL\MySQL Connector C 6.1"
      

      现在运行 gem install,记住你必须已经安装了 Devkit 并在你的环境 PATH 中添加了 Ruby\bin 和 devkit\bin 路径:

      C:\Ruby\bin>gem install mysql --platform=ruby -- --with-opt-dir=x:
      Temporarily enhancing PATH to include DevKit...
      Building native extensions with: '--with-opt-dir=x:'
      This could take a while...
      Successfully installed mysql-2.9.1
      Parsing documentation for mysql-2.9.1
      Installing ri documentation for mysql-2.9.1
      Done installing documentation for mysql after 1 seconds
      1 gem installed
      

      删除临时驱动器

      subst x: /d
      

      【讨论】:

        猜你喜欢
        • 2013-07-29
        • 1970-01-01
        • 2010-11-24
        • 2011-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-24
        相关资源
        最近更新 更多