分享 gem install mysql 遇到问题及解决方案

codemonkey · 2015年07月12日 · 最后由 codemonkey 回复于 2015年07月12日 · 2559 次阅读

前几天遇到的问题,是使用 gem install mysql 遇到的。报下面的错误

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

/usr/bin/ruby1.9.1 extconf.rb
/usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require': cannot load such file -- mkmf (LoadError)
from /usr/lib/ruby/1.9.1/rubygems/custom_require.rb:36:in `require'
from extconf.rb:2:in `<main>'


Gem files will remain installed in /home/c4t/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.18 for inspection.
Results logged to /home/c4t/.rvm/gems/ruby-2.2.1/gems/mysql2-0.3.18/ext/mysql2/gem_make.out

后来我分析。我根本没有安 1.9.1,报的错误信息和 1.9.1 有关,后我我用 ruby --version 查看。发现 ruby 竟然也是 1.9.1,但是我没有安装 ruby1.9.1,

后来使用 sudo apt-get autoremove 果断卸载 ruby 1.9.1,结果出人意料。我的 vim 出问题了。后来我用从新安装 vim,结果发现原来是安装 vim 是自动安装上了 ruby1.9.1,但是我在 rvm 里看 current 版本是 2.2.1

先不说别的,还是把 vim 按上

sudo apt-get install vim-gnome

这时候 ruby 是 1.9.1

我使用 rvm use 2.2.1 报错

"RVM is not a function, selecting rubies with 'rvm use ...' will not work."

但是我使用 rvm list 都是好用的啊。后来我搜索找到这个地方

http://blog.sina.com.cn/s/blog_9d6e035501010lol.html

原来安装 rvm 时候。少了这一句在我的.zshrc 中,

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

果断填上,之后。执行

rvm use 2.2.1

  ~  ruby --version
ruby 2.2.1p85 (2015-02-26 revision 49769) [x86_64-linux]

然后安装 mysql2 或者 mysql

总结:

1 rvm 安装成功后。.zshrc 中少了下面这句代码,填上

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

2 安装 vim 会自动安装 1.9.1 要记得安装 vim 后要使用 rvm use 修改你安装的版本

  1. 要安装 2.0 以上的 Ruby 版本,1.9.x 现在已经不适合做开发了。
  2. 不要安装mysql这个 gem,要安装mysql2

.zshrc 那段,其实安装 rvm 的时候应该就已经配置上了。

https://rvm.io/rvm/install#3-reload-shell-configuration-amp-test

#2 楼 @ken 我安上了 rvm 但是没有那段,所以才遇到那个问题

1.9.1 是 ubuntu 预装的,ubuntu 官方源跟 ruby 有关的库都依赖内置的版本,不用动它。用 rvm 开发项目跟系统内置的 ruby 不干扰。

需要 登录 后方可回复, 如果你还没有账号请 注册新账号