【问题标题】:Uninstalling all gems Ruby 2.0.0卸载所有 gem Ruby 2.0.0
【发布时间】:2013-02-26 22:19:46
【问题描述】:

似乎 ruby​​ 2.0.0 已将“默认” gem 添加到组合中,并使其无法通过 gem 卸载删除。

如何删除所有非默认宝石?

【问题讨论】:

  • 您能否提供 gems 的示例以及您如何安装 Ruby 2.0(手动?rvm?)
  • 我使用 rbenv 安装 ruby​​ 2.0.0-p0。对我来说“默认”的宝石至少是: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、test -单位 2.0.0.0。 gem uninstall json gem "json" 错误无法卸载,因为它是默认 gem。
  • 抱歉,误会了。我从不删除宝石,不确定是否会。为什么你需要gem cleanup以外的东西?
  • 有时我只是想摆脱一些东西。清理可能是大多数人最需要的。但是有时我想摆脱所有 gem 来测试需要安装 gem 之类的东西的 bash 脚本。
  • rvm 有宝石,不确定rbenv

标签: ruby gem ruby-2.0


【解决方案1】:

我使用了这一行脚本。

for i in `gem list --no-versions`; do gem uninstall -aIx $i; done

它会忽略默认的 gem 错误并继续进行。简单明了。

【讨论】:

  • 假设 ruby​​gems 继续以这种方式工作,这是一个更简单的解决方案:)
  • 干得好!您不会看到很多使用循环发布的简洁 shell 命令。
  • 不起作用。仍然会出现“无法卸载,因为它是默认 gem”错误。
  • @Nippysaurus 这很正常。你可以忽略它。如果您的意思是命令在第一个错误后停止,请输入 set +e 并重试。
  • @ihji 会知道这是否有效gem list --no-version | awk 'NR>1{ print $(NF-1) }' | xargs gem 2>/dev/null uninstall -aIx 它不会出错,但也不会卸载 gem。我假设发生错误时命令仍然停止执行(即使它被重定向)
【解决方案2】:

首先,进入 gems 目录 像 ../ruby/2.0.0-p195/lib/ruby/gems/2.0.0/specifications
您将找到一个名为 default 的目录,其中包括 ruby​​ 2.0 附带的所有默认 gems

将存储在 default 目录中的所有 *.gemspec 移动到 specifications 目录并删除空的 default 目录.

然后你可以像过去一样做任何你想做的事情。:-)

【讨论】:

  • 现在使用的规范目录是什么?它在我假设的加载路径中?
  • 这对我有用。其他 SO 问题、github 甚至 ruby​​ gem 文档中的“解决方案”都不起作用。
【解决方案3】:

我用 ruby​​ 编写了一个脚本来删除所有非默认 gem。

https://gist.github.com/nixpulvis/5042764

现在需要这样做,因为与 2.0.0 之前不同,一些 gem 在安装 ruby​​ 时被标记为“默认”,并且无法使用 gem uninstall 卸载。这使得以前流行的删除所有 gem 的方法不起作用。

供参考。
gem list | cut -d" " -f1 | xargs gem uninstall

【讨论】:

  • 提供的链接不再存在。 “哦,不,404”。这个脚本是否存在于其他地方,或者整个脚本中是否有“供参考”行?
  • 谢谢。我更改了我的用户名。网址是固定的。
  • 默认宝石会崩溃
  • 这不适用于任何特定 gem 有多个版本的情况
【解决方案4】:

我还没有找到比排除“默认”宝石更好的答案:

/usr/local/bin/gem list --no-versions | \
grep -v -E "(bigdecimal|io-console|json|minitest|psych|rake|rdoc|test-unit)" | \
xargs --no-run-if-empty /usr/local/bin/gem uninstall --executables --user-install --all --force

【讨论】:

  • 此代码假设您在 Linux 上从源代码安装了 ruby​​ 2.0。
猜你喜欢
  • 1970-01-01
  • 2017-07-23
  • 1970-01-01
  • 2011-06-09
  • 2011-08-19
  • 1970-01-01
  • 1970-01-01
  • 2012-07-17
  • 2012-04-29
相关资源
最近更新 更多