2013-02-26 9 views
43

ruby​​ 2.0.0が「デフォルト」の宝石をミックスに追加し、宝石をアンインストールすることで取り外しできないようです。すべての宝石をアンインストールするRuby 2.0.0

どのようにデフォルト以外の宝石をすべて削除できますか?

+0

あなたはの例を提供することができますgems&Ruby 2.0のインストール方法(手動? 'rvm'?) –

+1

ruby​​ 2.0.0-p0をインストールするためにrbenvを使いました。少なくとも私にとっては「デフォルト」の宝石は、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 -unit 2.0.0.0。 gem "json"の 'gem uninstall json'エラーは、デフォルトのgemであるためアンインストールできません。 –

+1

申し訳ありませんが、誤解されています。私は決して宝石を削除することは決してありません。なぜあなたは 'gem cleanup'以外のものが必要なのですか? –

答えて

84

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

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

デフォルトのgemエラーは無視され、そのまま実行されます。シンプルで自明です。

+0

これはrubygemsがこのように動作し続けると仮定すれば、この問題のより簡単な解決策です:) –

+0

素敵な仕事!あなたは、ループを使ってポストされた簡潔なシェルコマンドをたくさん見ることはできません。 –

+14

動作しません。それはデフォルトのgemのエラーであるため、まだアンインストールできません。 – Nippysaurus

4

すべてのデフォルト以外の宝石を削除するためにrubyにスクリプトを書きました。

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

2.0.0前にいくつかの宝石はルビーのインストールで「デフォルト」と表示され、そしてgem uninstallをアンインストールすることができないとは異なりので、これが今必要とされています。これにより、以前は一般的に使用されていたすべての宝石を削除する方法が機能しません。

ここを参考にしてください。
gem list | cut -d" " -f1 | xargs gem uninstall

+0

提供されたリンクはもう存在しません。 "OH NOES、404"。このスクリプトが他に存在するのですか、またはスクリプト全体の "参照用"ラインですか? –

+1

ありがとうございます。ユーザー名を変更しました。 URLは固定されています。 –

+0

デフォルトの宝石ではこれがクラッシュする – brauliobo

9

まず、あなたはすべてを含めデフォルトという名前のディレクトリを、見つける../ruby/2.0.0-p195/lib/ruby/gems/2.0.0/specifications
と同様に宝石ディレクトリ に行きますルビー2.0

移動に付属しているデフォルトの宝石のすべてのディレクトリに仕様 dirと空デフォルトディレクトリを削除デフォルトに保存されている* .gemspec。 。

次に、あなたが昔のようにやりたいことができます:-)

+0

現在使用されている仕様ディレクトリは何ですか?私が想定している負荷経路にありますか? –

0

私はまだ「デフォルト」宝石を除外するためのより良い答えを見つけることができます:

/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

このコードは、Linuxのソースからruby 2.0をインストールしたことを前提としています。 – Kevin

関連する問題