似乎 Ruby 2.0.0 添加了“默认” gem,并使它们无法通过 gem uninstall 卸载。如何删除所有非默认 gem?
我使用了这个一行脚本。
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
set +e
再试一次。 - ihjigem list --no-version | awk 'NR>1{ print $(NF-1) }' | xargs gem 2>/dev/null uninstall -aIx
它没有报错,但也没有卸载gems。我猜想当错误发生时(即使被重定向),命令仍然停止执行。 - Integralistfor i in $(gem list --no-versions); gem uninstall -aIx $i
。 - Pablo Olmos de Aguilera C.首先,转到宝石(gems)目录,例如../ruby/2.0.0-p195/lib/ruby/gems/2.0.0/specifications
您会发现一个名为default的目录,其中包含了ruby 2.0附带的所有默认宝石(gems)
移动存储在default目录中的*.gemspec到specifications目录,并删除空的default目录。
然后您可以像以前一样随心所欲地进行操作。:-)
https://gist.github.com/nixpulvis/5042764
现在需要这样做是因为与2.0.0之前不同,一些gem会在安装ruby时被标记为“默认”,不能使用gem uninstall
来卸载。这使得以前流行的删除所有gems的方法不再起作用。
供参考,以下是代码:
gem list | cut -d" " -f1 | xargs gem uninstall
我还没有找到比排除“默认”宝石更好的答案:
/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
gem uninstall json
会出现错误,提示无法卸载gem“json”,因为它是默认的gem。 - Nathan Lilienthalgem cleanup
之外的其他东西呢? - Marc-André Lafortunervm
有 gemsets,不确定rbenv
是否有。 - Marc-André Lafortunervm
或rbenv
的Ruby系统。但是如果我有rvm
,那么简单的rvm gemset empty
就可以了 :) - Nathan Lilienthal