代码之家  ›  专栏  ›  技术社区  ›  GiH

卸载Rails和Gems,获取错误“无法卸载,请检查'gem list-d…'

  •  13
  • GiH  · 技术社区  · 15 年前

    我将从通常的noob行开始,“我对rails不熟悉”。哦,我在运行Mac OSX 10.6.4

    我一直在遵循一系列的指南来进行设置,特别是这两个 here here .指南很好,我使用第二个是因为RVM,而我使用第一个是为了MySQL。

    不管怎样,当我开始的时候,我没有完全遵循指示,所以在我安装了RVM之后,出于某种原因我安装了 sudo gem install rails -v 2.3.8 因为那是我需要的版本。所以…我意识到我在使用Ruby系统,没有利用RVM。我现在所做的是安装Ruby1.9.2,这样我就可以安装Rails3并进行测试,我还安装了1.8.7和Rails2.3.8,这样我就可以根据需要使用它。

    现在,我正试图从系统Ruby中卸载gems,但每当我尝试卸载时,都会出现以下错误:

    错误:执行gem时… (gem::安装错误)
    无法卸载,请选中“gem list-d” 我要卸载的宝石

    关于如何移除铁轨和所有这些宝石有什么想法吗?我只想从零开始用RVM。


    更新:

    通过运行命令 gem list -d rails 我在/system/library/frameworks/ruby.framework/versions/1.8/usr/lib/ruby/gems/18中找到了gems。我应该手动删除它们吗?

    7 回复  |  直到 9 年前
        1
  •  34
  •   Community Mohan Dere    8 年前

    SOLUTION !!我还是不明白为什么会这样,如果有人能解释的话,我很乐意。为什么路径不存在?是什么导致了这个错误?

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

    不用再多费吹灰之力 -结果发现,当试图卸载gem时,它找不到它的路径(我认为问题是因为安装了sudo,但我可能错了)。你需要做的是(你必须为每颗宝石一个一个地做,或者至少我必须这样做):

    1. gem list -d 'name of gem' 并注意“installed at:”位置(在我的例子中是/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. 有些gems可能仍然无法卸载,返回权限错误。如果是这种情况,您需要做的是在上面的路径中创建一个文件夹/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)。

    现在所有卸载都可以工作了!

        2
  •  17
  •   calas    14 年前

    使用RVM时应注意两件事:

    1. 你应该 从未 使用 sudo 要安装gems,只需执行 gem install xxx

    2. 您不能卸载安装在 全球的 宝石来自另一个宝石。您应该切换到全局gemeset并从中卸载:

    
     rvm gemset use global
     gem uninstall xxx
    
        3
  •  5
  •   jacobsimeon    14 年前

    在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
    
        4
  •  3
  •   Luan D    11 年前

    尝试这种方式:

    sudo apt purge rails
    
        5
  •  0
  •   Justin Soliz    15 年前

    好的,我明白了…

    此时,如果您在终端,只需几分钟就可以重新安装整个shebang。

    我怀疑你可能没有正确的RVM名称,你试图安装的宝石,所以我建议重新安装rubygems,从一开始就建立你的核心宝石。 Global RVM宝石名称。

        6
  •  0
  •   Waheed    10 年前

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

    gem list—无版本xargs sudo gem uninstall-AIX

        7
  •  0
  •   atw    9 年前

    我使用RVM管理我的宝石,但没有选择宝石。我不是选错了宝石,而是根本没有选。暑假过后,我第一个早晨的大部分时间都能度过,这是一个很好的方法!