15

我一直在尝试在我的 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$
4

4 回答 4

53

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

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

那是你的线索。

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

此外,您还需要 mysql_config,它由以下方式安装:

sudo apt-get install libmysqlclient-dev

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

它将 mysql_config 放入,并且/usr/bin/mysql_config两者都能够成功安装。gem install mysqlgem install mysql2

于 2013-01-05T23:21:32.770 回答
12

谢谢,它工作,只需要添加一些额外的东西

sudo apt-get install libmysqld-dev libmysqlclient-dev mysql-client
于 2013-01-07T15:02:07.443 回答
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
于 2013-07-03T09:07:22.877 回答
0

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

在 Windows 上安装 MySQL2 Gem

编辑

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

  1. 清理:你在这里的原因是你可能一直在尝试安装这个 gem,但它失败了,所以你需要做一些清理工作:gem uninstall mysql2

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

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

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

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

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

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

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

  1. 运行安装程序并记下安装目录的位置。说明说,一旦您完成安装,您需要运行 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
    
  2. 接下来,您需要安装 mysql-connector。不要下载并运行自安装程序。相反,下载 zip 文件并将其解压缩。注意你解压到的目录(为了这篇文章的目的,假设你把它解压到 c:\mysql-connector:

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

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

  2. 下载您需要的工具

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

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

  4. 编辑 PATH 环境路径,如前所述,现在如下所示:

    C:\Ruby200-x64\bin;C:\ruby2-devkit\bin;c:\ruby2-devkit\mingw\bin;c:\svm-map;C:\svm-map\python-mingw-lib
    
  5. 生成新的 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
    
  6. 按如下方式安装gem(注意使用正斜杠而不是反斜杠,如果使用反斜杠则会失败):

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

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

于 2014-10-04T19:54:25.237 回答