【问题标题】:gem install mysql2 failsgem install mysql2 失败
【发布时间】:2011-07-10 08:14:28
【问题描述】:

我收到了这个错误:

sudo gem install mysql2
Building native extensions.  This could take a while...
ERROR:  Error installing mysql2:
    ERROR: Failed to build gem native extension.

/usr/bin/ruby1.8 extconf.rb
checking for rb_thread_blocking_region()... no
checking for mysql.h... no
checking for mysql/mysql.h... no
-----
mysql.h is missing.  please check your installation of mysql and try again.
-----
*** 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=/usr/bin/ruby1.8
    --with-mysql-config
    --without-mysql-config


Gem files will remain installed in /var/lib/gems/1.8/gems/mysql2-0.2.6 for inspection.
Results logged to /var/lib/gems/1.8/gems/mysql2-0.2.6/ext/mysql2/gem_make.out

我试过了:

  • 卸载mysql2并重新安装
  • 用 apt-get 卸载 mysql
  • 从 mysql 安装开发工具
  • 以及 Google 上的几乎所有页面

我该如何解决这个问题?

【问题讨论】:

    标签: mysql ubuntu gem


    【解决方案1】:

    在这里使用搜索很有帮助;):ruby-mysql

    这是另一个线程 ;) 有同样的问题:ruby-mysql2

    当你搜索“ruby mysql2”或类似的东西时还有更多。

    【讨论】:

    • 我尝试了大多数链接,这些链接也适用于 mysql2 的 windows 问题。但我在 ubuntu 上试了一下。这就是奇怪的事情!
    • 那你应该再读一遍文章;)有一个例子如何通过apt-get安装包试试这个。
    【解决方案2】:

    您需要在安装mysql2 gem 之前安装libmysqlclient-dev

    sudo apt-get install libmysqlclient-dev
    gem install mysql2
    

    这应该可以在最新的 Ubuntu 版本上解决这个问题。

    【讨论】:

    • 在 kali 上为我工作,只是我的错误是检查 -lmysqlclient 中的 mysql_query()...不,谢谢。
    • 如果你有mariadb,那么由于二进制更新可能无法安装libmysqlclient-dev。如果我们安装libmariadbclient-dev会很好,它会解决这两个问题。
    【解决方案3】:

    这些是导致此故障的多种原因:

    1. ruby 和 ruby​​gems 之间的版本兼容性不好
    2. 缺少 libmysqlclient-dev
    3. gem 找不到
    4. 64 位系统上的 Mysql 32 位

    解决方案

    1. 安装最新稳定版本的rvm,你可以在ruby版本之间通过rvm切换

      curl -L https://get.rvm.io | bash -s stable

    2. 安装依赖

      sudo apt-get install libmysqlclient-dev

    3. 在您的系统上找到 mysql_config (find / -name mysql_config) 并运行

      gem install mysql -- --with-mysql-config=/path/to/mysql_config

    4. 为您的系统安装 64 位版本的 mysql

    【讨论】:

      【解决方案4】:

      感谢 Andre Schweighofer,感谢它

      sudo apt-get install libmysqlclient-dev
      gem install mysql2
      
      ..
      bundle update
      bundle install
      

      完成!!!

      【讨论】:

      • 如果您使用 MariaDB 而不是 MySQL,请安装 libmariadbclient-dev
      【解决方案5】:

      在 Ubuntu 10.10 上,我必须安装 libmysqlclient16-dev。

      【讨论】:

        【解决方案6】:

        需要安装mysql开发包

        ​​>
        yum install mysql-devel
        

        【讨论】:

          【解决方案7】:

          我解决的方法是检查 mkmf.log,在我的情况下,它位于 ./gems/ruby-2.2.3/extensions/x86_64-linux/2.2.0/mysql2-0.4.2/mkmf.log

          在我的例子中,有一个错误,它找不到 -lgmp,所以它缺少 gmp 库,所以通过 apt-get 安装,在这种情况下是 libgmp-dev。

          【讨论】:

            【解决方案8】:

            这可能是由于 mysql 更新了二进制文件(在我的情况下它使用 Mariadb-10.0.31)并且在安装缺少的库(libmysqlclient-dev)时,我收到以下消息,无法解决:

            $ sudo apt-get install libmysqlclient-dev
            
            Reading package lists... Done
            Building dependency tree       
            Reading state information... Done
            Some packages could not be installed. This may mean that you have
            requested an impossible situation or if you are using the unstable
            distribution that some required packages have not yet been created
            or been moved out of Incoming.
            The following information may help to resolve the situation:
            
            The following packages have unmet dependencies:
             libmysqlclient-dev : Depends: libmysqlclient18 (= 5.5.58-0ubuntu0.14.04.1)
            

            但我通过首先安装 libmariadbclient-dev 解决了上述问题:-

             $ sudo apt-get install libmariadbclient-dev
            

            它也会安装 libmysqlclient-dev,但首先要解决 mariadb 依赖关系。

            【讨论】:

              猜你喜欢
              • 2015-06-13
              • 2012-05-21
              • 2011-05-06
              • 2012-02-04
              • 1970-01-01
              • 1970-01-01
              • 2011-12-03
              • 2019-11-09
              相关资源
              最近更新 更多