卸载rails和gem,得到错误“无法卸载,检查'gem list -d ......'

时间:2010-10-24 03:40:45

标签: ruby-on-rails rubygems osx-snow-leopard uninstall rvm

我将从通常的noob线开始,“我是铁杆新手”。哦,我正在运行Mac OSX 10.6.4

我一直在关注一系列指南,特别是这两个herehere。指南很棒,我使用第二个的原因是因为RVM,我使用第一个的原因是MYSQL。

无论如何,当我开始时,我没有完全遵循指示,所以在我安装RVM之后,出于某种原因我安装了sudo gem install rails -v 2.3.8的rails,因为那是我需要的版本。所以...我意识到我正在使用系统ruby,并没有利用RVM。我现在做的是安装Ruby 1.9.2所以我可以安装rails 3并测试它,我还安装了1.8.7和rails 2.3.8所以我可以将它用于我需要它。

现在,我正在尝试从系统Ruby中卸载gem,但每当我尝试收到此错误时:

  

错误:执行gem时......   (宝石:: InstallError)
    无法卸载,请检查'gem list -d    我尝试卸载的任何宝石 '

有关如何移除导轨和所有这些宝石的任何想法?我只想从头开始使用RVM。


更新

通过运行命令gem list -d rails,我在/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/18中找到了宝石。我应该手动删除它们吗?

7 个答案:

答案 0 :(得分:34)

<强> SOLUTION !!我仍然不明白为什么会发生这种情况,如果有人能够解释,我会很高兴。为什么路径不存在?是什么导致了这个错误?

另外,我想提一下,我链接的解决方案有一条评论说这个问题是重复的。然而,原版有一个不同的解决方案,并没有帮助我(虽然它是找到这个答案的基础)。只需在finder中手动删除gems,就不会将它们从gem列表中删除。

没有进一步的ado - 事实证明,当尝试卸载gem时,它无法找到它的路径(我认为问题是因为使用sudo安装,但我可能错了) 。你需要做的是(你必须逐个为每个宝石做这个,或者至少我必须这样做):

  1. gem list -d 'name of gem'并注意“已安装在:”位置(在我的情况下为/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8)
  2. sudo gem uninstall 'name of gem' -i 'the path noted above'(例如,在我的情况下,sudo gem uninstall rails -i /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
  3. 某些gem仍然可能无法卸载返回权限错误。如果是这种情况,您需要做的是在上面的路径中创建一个文件夹/ bin。 (就我而言,mkdir /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8/bin
  4. 按照步骤2继续卸载,仍然使用原始路径(/System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8)。
  5. 现在所有卸载都应该有效!

答案 1 :(得分:17)

使用rvm时应注意两件事:

  1. 您应该从不使用sudo安装宝石,只需执行gem install xxx

  2. 您无法从其他gemset中卸载安装在全局 gemset中的gem。您应该切换到全局gemset并从那里卸载:

  3. 
     rvm gemset use global
     gem uninstall xxx
    

答案 2 :(得分:5)

在irb或正确的脚本中执行此操作:

`gem list --no-versions`.split("\n").each do |gem|
  `gem list -d #{gem}`.gsub(/Installed at(.*):.*/).each do |dir|
    dir = dir.gsub(/Installed at(.*): /,'').gsub("\n", '')
    system "gem uninstall #{gem} -aIx -i #{dir}"
  end  
end

答案 3 :(得分:3)

尝试这种方式:

sudo apt purge rails

答案 4 :(得分:0)

好的,我明白了......

此时,如果你在终端,不应该花几分钟重新安装整个shebang

我怀疑你可能没有正确的rvm名称,那里有你想要安装的宝石,这就是为什么我建议重新安装rubygems并从Global开始构建你的核心宝石rvm gemset name。

答案 5 :(得分:0)

删除旧版gem 1.8的所有宝石的更通用的答案。

gem list --no-versions | xargs sudo gem uninstall -aIx

答案 6 :(得分:0)

我使用RVM来管理我的gemsets并且没有选择gemset。我不是选择了错误的宝石,而是我根本没有选择宝石。一个可爱的方式,在我暑假后的第一个早晨花一个小时的时间!