【问题标题】:Uninstalling rails and gems, getting error "cannot uninstall, check 'gem list -d ...'卸载 rails 和 gems,出现错误“无法卸载,检查 'gem list -d ...'
【发布时间】:2011-04-29 18:08:05
【问题描述】:

我将从通常的菜鸟行开始,“我是 Rails 新手”。哦,我正在运行 Mac OSX 10.6.4

我一直在按照一堆指南进行设置,特别是这两个 herehere。指南很棒,我使用第二个的原因是 RVM,而我使用第一个的原因是 MYSQL。

无论如何,当我开始时,我并没有完全按照说明进行操作,所以在我安装了 RVM 之后,出于某种原因,我使用 sudo gem install rails -v 2.3.8 安装了 rails,因为那是我需要的版本。所以......我意识到我正在使用系统红宝石,并没有利用 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 中找到了 gem。我应该手动删除它们吗?

【问题讨论】:

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


【解决方案1】:

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

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

事不宜迟 - 事实证明,当尝试卸载 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)。

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

【讨论】:

  • 我用过:gem list --no-versions | xargs sudo gem uninstall -aIx -i /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8 gem list --no-versions | xargs sudo gem uninstall -aIx -i /Library/Ruby/Gems/1.8 取决于 Gem 的安装位置。
  • solution.. 但我使用 rvm.. 并使用 sudo 安装 gems 听起来不是一个好主意..
【解决方案2】:

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

  1. 你应该永远不要使用sudo来安装gem,只需使用gem install xxx

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


 rvm gemset use global
 gem uninstall xxx

【讨论】:

  • -1 我对此感到很奇怪,无法识别的命令行参数:'global'(参见:'rvm usage')
  • rvm gemset use global(和gem cleanup <gemname>gem uninstall <gemname>)之后,请确保使用rvm gemset use default 切换回您的默认gemset
【解决方案3】:

在 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

【讨论】:

  • 不错的脚本,它成功删除了我 90% 的 gem...但是,它的左侧像 bundler,它给出了错误“错误:执行 gem ... (Gem::FilePermissionError ) 您没有对 /Library/Ruby/Gems/1.8/bin 目录的写入权限。”。我将sudo 添加到gem uninstall,但这仍然会给出错误。它似乎是 install-dir 选项,它在 bin 中查找但不存在。
【解决方案4】:

试试这个方法:

sudo apt purge rails

【讨论】:

    【解决方案5】:

    好吧,我明白了……

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

    我怀疑您可能没有使用正确的 rvm 名称来包含您要安装的 gem,所以这就是为什么我建议重新安装 ruby​​gems 并在您的 Global rvm gemset 中从头开始构建您的核心 gem名字。

    【讨论】:

    【解决方案6】:

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

    宝石列表--no-versions | xargs sudo gem 卸载 -aIx

    【讨论】:

      【解决方案7】:

      我正在使用 RVM 管理我的 gemset,但没有选择 gemset。我并不是我选错了宝石,而是我根本没有选错宝石。度过暑假后的第一天早上大部分时间的好方法!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2016-03-23
        • 2016-04-03
        • 1970-01-01
        • 2016-08-09
        • 2014-04-26
        • 2017-07-23
        相关资源
        最近更新 更多