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

GiH*_*GiH 13 rubygems uninstall ruby-on-rails osx-snow-leopard rvm

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

我一直在关注一些指南来设置,特别是这两个在这里这里.指南很棒,我使用第二个的原因是因为RVM和我使用第一个的原因是MYSQL.

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

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

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

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


更新:

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

GiH*_*GiH 34

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

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

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

  1. gem list -d 'name of gem' 并注意"安装在:"位置(在我的情况下,/ System/Library/Frameworks/Ruby.framework/Version/1.8/usr/lib/luby/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).

现在所有卸载都应该有效!


cal*_*las 17

使用rvm时应注意的两件事:

  1. 你应该永远不会使用sudo安装宝石,只是做了gem install xxx

  2. 您无法从另一个gemset中卸载安装在全局 gemset 中的gem .你应该切换到全局gemset并从那里卸载:


 rvm gemset use global
 gem uninstall xxx
Run Code Online (Sandbox Code Playgroud)

  • 在'rvm gemset使用global`(以及`gem cleanup <gemname>`或`gem uninstall <gemname>`)之后,请确保使用`rvm gemset use default切换回默认的gemset. (2认同)

jac*_*eon 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
Run Code Online (Sandbox Code Playgroud)