web-dev-qa-db-ja.com

すべてのgemのアンインストールRuby 2.0.0

Ruby 2.0.0は「デフォルト」gemをミックスに追加し、gemのアンインストールによってそれらを取り外し不可にしているようです。

デフォルト以外のすべての宝石を削除するにはどうすればよいですか?

45

この1行のスクリプトを使用しました。

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

デフォルトのgemエラーを無視して続行します。シンプルで自明。

86
ihji

まず、../Ruby/2.0.0-p195/lib/Ruby/gems/2.0.0/specificationsのようなgemsディレクトリに移動します
あなたはdefaultという名前のディレクトリを見つけるでしょう。これにはRuby 2.0

*。gemspecdefault dirに保存されているすべてのspecifications dirに移動し、空のdefault dirを削除します。

その後、昔のように何でもできます。:-)

11
Dolittle Wang

Rubyでデフォルト以外のすべてのgemを削除するスクリプトを作成しました。

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

2.0.0以前とは異なり、一部のgemにはRubyのインストール時に「デフォルト」のラベルが付けられ、gem uninstallでアンインストールできないため、これが必要になりました。これにより、すべてのgemを削除するための以前に一般的な方法が機能しなくなります。

ここでの参照用です。
gem list | cut -d" " -f1 | xargs gem uninstall

6

「デフォルト」の宝石を除外するよりも良い答えをまだ見つけていません。

/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
0
Kevin