2013-11-21 25 views
2

我在Debian上运行Ruby 1.9.3,没有Rails。我有一个需要mysql的脚本,所以我运行了gem install mysql,并且安装正常。未加载Ruby宝石

但是,当我执行脚本时,我得到一个“无法加载这样的文件”的错误。

/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 

非常感谢。

回答

0

非常感谢Josh和grenierm5的时间和建议 - RBENV非常有帮助,绝对让生活更轻松。

答案是两部分:RBENV解决我奇怪的环境问题,但后来也解决了MySQL的宝石安装问题,我必须安装以下Debian软件包:

apt-get install mysql-client libmysqlclient-dev 

这是在这里得到解答:ERROR: Failed to build gem native extension (mysql2 on rails 3.2.3)

1

项目,验证:

  1. 添加/usr/lib/ruby/gems/1.9.1/gems/到PATH环境变量
  2. 需要 'RubyGems的' 你需要在 'mysql的' 前你的脚本< - 我的不好。这是在1.9无关紧要,因为 'RubyGems的' 隐式地要求

建议:使用RVM(https://rvm.io/rvm/install)管理红宝石和宝石安装(与gemsets)

更新:

乔希是正确的,你应该使用RVM或RBENV等ruby版本工具,但是在短期内你可以修改你的.bashrc文件并添加:

  • 出口GEM_HOME = $ HOME /红宝石/宝石
  • 出口GEM_PATH = $ GEM_HOME:/lib/ruby/gems/1.9.3
  • 出口GEM_CACHE = $ GEM_HOME /缓存
  • 出口PATH = $ PATH:$ HOME /红宝石/宝石/箱

...,然后运行source ~/.bashrc创业板路径更改为1.9.3,然后再gem install mysql

+0

谢谢,我添加了该目录到我的路径,并且在mysql之前需要“rubygems”,但同样的问题在那里。 – pokero

+0

它看起来像一个权限问题。也许这个问题是类似的:http://stackoverflow.com/questions/7518665/ruby-gem-environment-issue-loaderror-no-such-file-to-load-robots?rq=1 – grenierm5

+0

我其实chmod'ed整个/usr/lib/ruby/gems/1.9.1目录为777,但结果相同。 – pokero

2

您的设置有问题。 /usr/lib/ruby/gems/1.9.1/gems/mysql-2.9.1表示该宝石安装在红宝石1.9.1下,但你提到你正在使用红宝石1.9.3。你使用的是红宝石版本控制系统,如RVMRBENV

更新

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

+0

是的,当我做红宝石 - 版本红宝石1.9.3p194。我以前安装过RVM(不知道自己在做什么),并且之后使用rvm implode删除了它,并卸载了rvm。有什么我可以做的,以解决版本设置问题? – pokero

+0

@pokero你可以在终端上运行'ruby'并粘贴输出吗? – Josh

+0

当然,当你有rvm时,我得到/ usr/bin/ruby​​ – pokero