如何在使用rbenv +不同的ruby版本时从OSX的系统ruby 1.8.x正确卸载gem?

时间:2014-03-16 02:44:59

标签: ruby rubygems gem uninstall rbenv

我目前安装了rbenvruby 2.1.0,我想继续使用我为此版本的ruby安装的任何宝石。

但是我也有系统(OSX 10.9)默认ruby(1.8.x),我以前为该版本安装了一些宝石。我可以在这里看到它们:

/Library/Ruby/Gems/1.8/gems

我不知道如何让gem从上面的目录中正确卸载,这样我就可以清理我的机器并为我的rbenv托管的新版本的ruby重新安装一些宝石的更新版本

例如,我已经为1.8.x安装了Compass和Sass,我不再需要Compass,并希望将它从我的机器中删除,并希望将Sass从3.2升级到3.3但是让它运行ruby 2.1.0。

目前,gem list仅为我rbenv设置的活动版ruby提供了当前安装的宝石,这是完全合理的。

那么如何在gem uninstall <old ruby 1.8.x gem>处找到/Library/Ruby/Gems/1.8/gems

1 个答案:

答案 0 :(得分:7)

rbenv允许您通过运行以下命令切换到您的系统版Ruby:

rbenv global system

然后使用以下方法卸载gems:

sudo gem uninstall -aIx

如果'sudo gem uninstall -aIx'失败,可能是因为你的宝石版本太旧了。然后,您可以运行gem list打印出安装到系统Ruby的所有gem。

sudo gem uninstall [gem name]

关于您要删除的内容。您永远不必在gem安装/卸载上运行sudo,但由于您必须使用它来将gem安装到Ruby的系统版本,因此这是您将它们移出的唯一方法。

我的系统Ruby是2.0,因此您的默认gem可能不同,但默认情况下我预安装了以下内容。如果你不小心试图删除错误的那个,这不是什么大问题,因为它只是警告你它无法卸载默认宝石。

bigdecimal (1.2.0)
io-console (0.4.2)
json (1.7.7)
minitest (4.3.2)
psych (2.0.0)
rake (0.9.6)
rdoc (4.0.0)
rubygems-update (2.5.1)
test-unit (2.0.0.0)

之后,请记得切换回您的rbenv版Ruby。

rbenv list
rbenv global 2.1.0 # or whichever version you have installed

从那里你可以检查你的Ruby版本并安装这样的宝石:

ruby -v
#=> ruby 2.1.0-p648 (2015-12-16 revision 920553) [x86_64-darwin15]
gem install [gem name] # installs to currently set version of Ruby from running ruby -v