【问题标题】:Ruby gems not being loadedRuby gem 未加载
【发布时间】:2013-12-06 09:00:41
【问题描述】:

我在 Debian 上运行 Ruby 1.9.3,没有 Rails。我有一个需要 mysql 的脚本,所以我跑了gem install mysql,它安装得很好。

但是,当我执行脚本时,我收到“无法加载此类文件”错误。

/usr/local/lib/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:51:in `require': cannot load such file -- mysql (LoadError)
    from /usr/local/lib/site_ruby/1.9.1/rubygems/core_ext/kernel_require.rb:51:in `require'
    from db-test.rb:5:in `<main>'

更多信息:我已更新到 RBENV,但现在无法安装 mysql。

ruby --version 给出:

ruby 1.9.3p484 (2013-11-22 revision 43786) [x86_64-linux]

which ruby 给出:

/home/poconnor/.rbenv/shims/ruby

gem environment 的输出是:

    RubyGems Environment:
  - RUBYGEMS VERSION: 2.1.11
  - RUBY VERSION: 1.9.3 (2013-11-22 patchlevel 484) [x86_64-linux]
  - INSTALLATION DIRECTORY: /home/poconnor/ruby/gems
  - RUBY EXECUTABLE: /home/poconnor/.rbenv/versions/1.9.3-p484/bin/ruby
  - EXECUTABLE DIRECTORY: /home/poconnor/ruby/gems/bin
  - SPEC CACHE DIRECTORY: /home/poconnor/.gem/specs
  - RUBYGEMS PLATFORMS:
    - ruby
    - x86_64-linux
  - GEM PATHS:
     - /home/poconnor/ruby/gems
     - /lib/ruby/gems/1.9.3
  - GEM CONFIGURATION:
     - :update_sources => true
     - :verbose => true
     - :backtrace => false
     - :bulk_threshold => 1000
  - REMOTE SOURCES:
     - https://rubygems.org/
  - SHELL PATH:
     - /home/poconnor/.rbenv/versions/1.9.3-p484/bin
     - /home/poconnor/.rbenv/libexec
     - /home/poconnor/.rbenv/plugins/ruby-build/bin
     - /home/poconnor/.rbenv/shims
     - /home/poconnor/.rbenv/bin
     - /usr/lib/lightdm/lightdm
     - /usr/local/sbin
     - /usr/local/bin
     - /usr/sbin
     - /usr/bin
     - /sbin
     - /bin
     - /usr/games
     - /usr/local/games
     - /usr/java/jdk1.7.0_17/bin
     - /usr/java/jdk1.7.0_17/bin
     - /usr/java/jdk1.7.0_17/bin
     - /usr/java/jdk1.7.0_17/bin

当我尝试gem install mysql 时,我得到:

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

    /home/poconnor/.rbenv/versions/1.9.3-p484/bin/ruby extconf.rb
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=/home/poconnor/.rbenv/versions/1.9.3-p484/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/poconnor/ruby/gems/gems/mysql-2.9.1 for inspection.
Results logged to /home/poconnor/ruby/gems/gems/mysql-2.9.1/ext/mysql_api/gem_make.out

对此非常感谢。

【问题讨论】:

    标签: ruby gem


    【解决方案1】:

    您的设置有问题。 /usr/lib/ruby/gems/1.9.1/gems/mysql-2.9.1 表示 gem 安装在 ruby​​ 1.9.1 下,但您提到您使用的是 ruby​​ 1.9.3。你在使用RVMRBENV之类的ruby版本控制系统吗?

    更新

    根据您的gem environment 输出,您的系统红宝石设置肯定有问题。它说它是 ruby​​ 版本 1.9.3,但它指向一个名为 1.9.1 的文件夹。我的建议是忘记您的系统 ruby​​ 并安装 RBENV(上面链接)。它是 RVM 的简化版本,我相信它会解决您的问题。当您决定要使用 ruby​​ 2 及更高版本时,它还将大大简化您的生活。

    【讨论】:

    • 是的,当我执行 ruby​​ --version 时,我得到 ruby​​ 1.9.3p194。我之前安装了 RVM(我真的不知道我在做什么),然后使用 rvm implode 和 gem 卸载 rvm 将其删除。我还能做些什么来解决版本设置问题?
    • @pokero 你能在终端运行which ruby 并粘贴输出吗?
    • 当然,我得到 /usr/bin/ruby
    • @pokero 当你有 rvm 时,你安装了 ruby​​ 1.9.1 吗?
    • 嗨乔希,我真的不记得了。不幸的是,这是一个多月前的事了。
    【解决方案2】:

    要验证的项目:

    1. 将 /usr/lib/ruby/gems/1.9.1/gems/ 添加到您的 PATH 变量中
    2. 在脚本中需要“mysql”之前需要“rubygems”

    建议:使用 rvm (https://rvm.io/rvm/install) 管理 ruby​​ 和 gem 安装(使用 gemsets)

    更新:

    Josh 说你应该使用像 RVM 或 RBENV 这样的 ruby​​ 版本控制工具是正确的,但是在短期内你可以修改你的 .bashrc 文件并添加:

    • 导出 GEM_HOME=$HOME/ruby/gems
    • 导出 GEM_PATH=$GEM_HOME:/lib/ruby/gems/1.9.3
    • 导出 GEM_CACHE=$GEM_HOME/cache
    • 导出 PATH=$PATH:$HOME/ruby/gems/bin

    ...然后运行 ​​source ~/.bashrc 将 gem 路径更改为 1.9.3,然后再次运行 gem install mysql

    【讨论】:

    • 谢谢,我将该目录添加到我的路径中,并且在 mysql 之前需要“rubygems”,但存在完全相同的问题。
    • 看起来是权限问题。也许这个问题是类似的:stackoverflow.com/questions/7518665/…
    • 我实际上将整个 /usr/lib/ruby/gems/1.9.1 目录修改为 777,但结果相同。
    • 请将“gem environment”的输出贴在原帖中。
    • 我试过了(bashrc 发生了变化),但没有运气。我已经安装了 RBENV,但是 gem 现在不会安装。
    【解决方案3】:

    非常感谢 Josh 和 grenierm5 的宝贵时间和建议 - RBENV 帮了大忙,绝对让生活更轻松。

    答案分为两部分:RBENV 解决了我奇怪的环境问题,但也解决了 mysql gem install 问题,我不得不安装以下 Debian 软件包:

    apt-get install mysql-client libmysqlclient-dev
    

    此处已回答:ERROR: Failed to build gem native extension (mysql2 on rails 3.2.3)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-05-09
      • 2011-11-17
      • 2013-03-04
      • 1970-01-01
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多