MySQL2 gem 无法安装

Posted

技术标签:

【中文标题】MySQL2 gem 无法安装【英文标题】:MySQL2 gem won't install 【发布时间】:2012-12-20 01:52:58 【问题描述】:

我已经尝试在我的 Ubuntu 12.04 服务器上安装 Gitlab 很长时间了,在我运行 bundle install 之前一切顺利。

它说它无法安装 mysql2,但没有给出原因或纠正措施。

home/gitlab/gitlab$ sudo -u gitlab -H bundle install --deployment --without development test postgres
Fetching gem metadata from http://rubygems.org/.......
Fetching gem metadata from http://rubygems.org/..
Using rake (10.0.1) 
Using i18n (0.6.1) 
Using multi_json (1.3.7) 
Using activesupport (3.2.9) 
Using builder (3.0.4) 
Using activemodel (3.2.9) 
Using erubis (2.7.0) 
Using journey (1.0.4) 
Using rack (1.4.1) 
Using rack-cache (1.2) 
Using rack-test (0.6.2) 
Using hike (1.2.1) 
Using tilt (1.3.3) 
Using sprockets (2.2.1) 
Using actionpack (3.2.9) 
Using mime-types (1.19) 
Using polyglot (0.3.3) 
Using treetop (1.4.12) 
Using mail (2.4.4) 
Using actionmailer (3.2.9) 
Using arel (3.0.2) 
Using tzinfo (0.3.35) 
Using activerecord (3.2.9) 
Using activeresource (3.2.9) 
Using bundler (1.2.3) 
Using rack-ssl (1.3.2) 
Using json (1.7.5) 
Using rdoc (3.12) 
Using thor (0.16.0) 
Using railties (3.2.9) 
Using rails (3.2.9) 
Using acts-as-taggable-on (2.3.3) 
Using backports (2.6.5) 
Using bcrypt-ruby (3.0.1) 
Using blankslate (3.1.2) 
Using sass (3.2.3) 
Using bootstrap-sass (2.2.1.1) 
Using carrierwave (0.7.1) 
Using charlock_holmes (0.6.9) 
Using chosen-rails (0.9.8) 
Using coffee-script-source (1.4.0) 
Using execjs (1.4.0) 
Using coffee-script (2.2.0) 
Using coffee-rails (3.2.2) 
Using colored (1.2) 
Using daemons (1.1.9) 
Using orm_adapter (0.4.0) 
Using warden (1.2.1) 
Using devise (2.1.2) 
Using diff-lcs (1.1.3) 
Using draper (0.18.0) 
Using escape_utils (0.2.4) 
Using eventmachine (1.0.0) 
Using multipart-post (1.1.5) 
Using faraday (0.8.4) 
Using ffaker (1.15.0) 
Using sass-rails (3.2.5) 
Using font-awesome-sass-rails (2.0.0.0) 
Using foreman (0.60.2) 
Using gemoji (1.2.1) 
Using git (1.2.5) 
Using posix-spawn (0.3.6) 
Using yajl-ruby (1.1.0) 
Using pygments.rb (0.3.2) from https://github.com/gitlabhq/pygments.rb.git (at master) 
Using github-linguist (2.3.4) 
Using github-markup (0.7.4) 
Using gitlab_meta (4.0) 
Using gratr19 (0.4.4.1) 
Using grit (2.5.0) from https://github.com/gitlabhq/grit.git (at 7f35cb9) 
Using hashery (1.5.0) 
Using gitolite (1.1.0) 
Using grack (1.0.0) from https://github.com/gitlabhq/grack.git (at ba46f3b) 
Using hashie (1.2.0) 
Using multi_xml (0.5.1) 
Using rack-accept (0.4.5) 
Using rack-mount (0.8.3) 
Using virtus (0.5.2) 
Using grape (0.2.2) 
Using grit_ext (0.6.1) from https://github.com/gitlabhq/grit_ext.git (at 8e6afc2) 
Using haml (3.1.7) 
Using haml-rails (0.3.5) 
Using httparty (0.9.0) 
Using httpauth (0.2.0) 
Using jquery-atwho-rails (0.1.7) 
Using jquery-rails (2.1.3) 
Using jquery-ui-rails (2.0.2) 
Using jwt (0.1.5) 
Using kaminari (0.14.1) 
Using kgio (2.7.4) 
Using libv8 (3.3.10.4) 
Using modernizr (2.6.2) 
Installing mysql2 (0.3.11) with native extensions 
Gem::Installer::ExtensionBuildError: ERROR: Failed to build gem native extension.

        /usr/local/bin/ruby extconf.rb 
checking for rb_thread_blocking_region()... yes
checking for rb_wait_for_single_fd()... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lm... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lz... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lsocket... no
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lnsl... yes
checking for mysql_query() in -lmysqlclient... no
checking for main() in -lmygcc... no
checking for mysql_query() in -lmysqlclient... 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=/usr/local/bin/ruby
    --with-mysql-config
    --without-mysql-config
    --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-mysqlclientlib
    --without-mysqlclientlib
    --with-mlib
    --without-mlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-zlib
    --without-zlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-socketlib
    --without-socketlib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-nsllib
    --without-nsllib
    --with-mysqlclientlib
    --without-mysqlclientlib
    --with-mygcclib
    --without-mygcclib
    --with-mysqlclientlib
    --without-mysqlclientlib


Gem files will remain installed in /home/gitlab/gitlab/vendor/bundle/ruby/1.9.1/gems/mysql2-0.3.11 for inspection.
Results logged to /home/gitlab/gitlab/vendor/bundle/ruby/1.9.1/gems/mysql2-0.3.11/ext/mysql2/gem_make.out
An error occurred while installing mysql2 (0.3.11), and Bundler cannot continue.
Make sure that `gem install mysql2 -v '0.3.11'` succeeds before bundling.
root@Server:/home/gitlab/gitlab$

【问题讨论】:

mkmf.log 文件说明了什么? 你安装mysql-server了吗? 这可能会有所帮助:***.com/questions/4613116/… 【参考方案1】:

它确实告诉你一个普遍的可能问题:

由于某种原因无法创建 Makefile,可能缺少 必要的库和/或头文件。查看 mkmf.log 文件了解更多信息 细节。您可能需要配置选项。

这是你的线索。

确保您已安装 MySQL 客户端存储库以及相关的“开发”包。 Ruby、Python、Perl 等语言需要安装库和头文件,以便它们可以编译提供从语言到驱动程序的接口的本地模块。

另外,您需要 mysql_config,它由以下人员安装:

sudo apt-get install libmysqlclient-dev

我能够用我的 Ubuntu 虚拟机复制您的问题,并在安装 libmysqlclient-dev 后修复它。

将mysql_config放入/usr/bin/mysql_configgem install mysqlgem install mysql2都可以安装成功。

【讨论】:

如果你在完全不同的服务器上安装了mysql,你还需要在运行rvm和rails的服务器上安装所有这些包吗? MySQL、PostgreSQL 或其他客户端/服务器应用程序有两个部分;客户端软件和服务器软件。如果您在另一台机器上并想编写代码与服务器通信,那么,是的,您必须安装客户端代码。如果您的代码无法访问服务器的客户端驱动程序,您的代码将如何与服务器通信? 我的 MBP 遇到了同样的问题,但您的回答帮助了我。运行brew install mysql 后,我能够成功运行gem instal mysql2【参考方案2】:

谢谢你,它成功了,只需要添加一些额外的东西

sudo apt-get install libmysqld-dev libmysqlclient-dev mysql-client

【讨论】:

你说这个解决方案对你有用,但你没有给它检查?你能接受他的回答吗?【参考方案3】:

我已经在 rails4 中使用了这个解决方案来解决这个问题:(Ubuntu 12.04)

    1) Install MySQL from symptic manager just type "mysql-server-5.5" 
    2) use following command and install 
       sudo apt-get install mysql-client libmysqlclient-dev

【讨论】:

【参考方案4】:

如果您使用的是 Windows 8+ x64,请查看此问题正文中提供的答案:

Installing MySQL2 Gem on Windows

编辑

为了让投票者高兴,我复制了链接问题的内容:

    清理:你在这里的原因是你可能一直在尝试 安装这个 gem,它失败了,所以你有一些清理 做:gem卸载mysql2

    下载适用于 Windows 的 Ruby 2.0 64 位:

http://dl.bintray.com/oneclick/rubyinstaller/rubyinstaller-2.0.0-p353-x64.exe?direct

    运行安装程序。注意它安装到的目录,并确保它在用户路径中。去

    Control Panel > System and Security > System - Advanced System Settings > Environment Variables
    

并确保 ruby​​ 安装目录的 bin 目录的路径在 LOCAL 用户的 PATH 环境变量中(如果它在 SYSTEM Path 环境变量中也可以)

    下载 Ruby 2 64 位开发工具包:

http://cdn.rubyinstaller.org/archives/devkits/DevKit-mingw64-64-4.7.2-20130224-1432-sfx.exe

    运行安装程序并记下安装目录的位置。说明说,一旦您完成安装,您需要运行 devkitvars.bat 文件来设置环境变量。这不适用于 Windows 8.1。你需要重复上面#2中描述的设置本地路径的说明,为本地用户设置路径环境变量添加ruby dev kit bin目录和ruby dev kit mingw bin目录。例如,如果开发工具包安装到 c:\ruby2devkit,并且您将 ruby​​2 安装到 C:\Ruby200-x64 目录,那么您将路径语句编辑为如下所示:

    C:\Ruby200-x64\bin;C:\ruby2-devkit\bin;c:\ruby2-devkit\mingw\bin
    

    接下来您需要安装 mysql-connector。不要下载并运行自安装程序。相反,下载 zip 文件并将其解压缩。注意你解压到的目录(为了这篇文章的目的,假设你解压到 c:\mysql-connector:

http://dev.mysql.com/downloads/file.php?id=450612

    64 位 MySQL 连接器中包含的 libmysql.lib 与 mingw64-gcc 编译器不兼容。需要生成mingw64兼容的libmysql.lib文件。

    下载你需要的工具

    https://structure-svm-map.googlecode.com/files/svm-map-win.zip

    解压这个文件到本地目录,假设你解压到c:\svm-map

    如前所述,编辑 PATH 环境路径,使其现在看起来像这样:

    C:\Ruby200-x64\bin;C:\ruby2-devkit\bin;c:\ruby2-devkit\mingw\bin;c:\svm-map;C:\svm-map\python-mingw-lib
    

    生成新的 mysql 库:

    cd c:\mysql-connector\lib
    
    gendef.exe libmysql.dll
    
    dlltool -v --dllname libmysql.dll --def libmysql.def --output-lib libmysql.lib
    
    copy libmysql.dll C:\Ruby200-x64\bin
    
    copy libmysql.lib C:\Ruby200-x64\bin
    

    按如下方式安装gem(注意使用正斜杠而不是反斜杠,如果使用反斜杠会失败):

    gem install mysql2 --platform=ruby -- '--with-mysql-dir="C:/mysql-connector/"'
    

希望这会有所帮助,并希望有人会关注少数想要进行 Ruby on Rails 开发的 Windows 7/8.1 用户。

【讨论】:

以上是关于MySQL2 gem 无法安装的主要内容,如果未能解决你的问题,请参考以下文章

无法在 Bigsur 上安装 mysql2 Gem

无法安装旧的 mysql2 gem

无法为 Rails 项目安装 mysql2 gem

如何在 Ubuntu 16.04 上安装 mysql2 [错误:安装 mysql2 时出错:错误:无法构建 gem 本机扩展。] [重复]

错误:安装 mysql2 时出错:错误:无法在 AWS Linux 上构建 gem 原生扩展

无法在 Windows 7 上安装 MySQL2 gem