OSXでインストールされているすべてのgemをアンインストールしますか?


177

以前のすべてのgemインストールを元に戻してアンインストールしたい場合があります。

たとえば、RVMを使用するために友人がRails開発マシンを移行するのを支援する必要がありました。以前はシステム全体gemで使用していたため、複数のプロジェクトで作業するときに多くの頭痛の種を抱えていました。 本質的に、彼はRVM変換の代名詞でした。

OSXシステム上のすべてのgemをエレガントにアンインストールするにはどうすればよいですか?


1
現在、これは不要です。RVMは、正しいRubyバージョンに切り替えた後、gemを探す場所を認識しています。
フランクリン・ユー

1
yes Y | gem uninstall -a -I
stopanko

@FranklinYuへの簡単なメモ-これは常にそうであるとは限りません。私は鋸山のグローバルインストールされたコピーは、常にRVMのgemset上の先例を取るように見えたのインスタンスを持っていた、とグローバル一つは持っていたアンインストールします。
Nathan Crause

@NathanCrause次に、それはRVMのバグであり、報告する必要があります。これはRVMの意図された動作ではないと確信しています。
フランクリンYu

@FranklinYuあなたは正しいですが、そのような問題が解決されるまで、すべての宝石を削除する方法が依然として必要です。私はそれが「不必要」であるという点だけを言及していましたが、それは理想的な状況では当てはまりますが、ねえ、物事は常に横向きです。
Nathan Crause

回答:


427

Rubygems> = 2.1.0

gem uninstall -aIx

aすべてのバージョンを削除し、実行可能ファイルを含む
I依存関係を無視し
xます

ラブジェム<2.1.0

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

1
ああ、あなたは私をスピードに打ち負かした:)
ロマン

3
もちろん、デフォルトのgemの正しいリストを再インストールすることをお勧めします。「gem install bundler json minitest rake rdoc」
Wil Moore III

5
宝石リスト| カット-d "" -f1 | sudo xargs gem uninstall -Iax -worked for me
lesyk

5
動作しません:ERROR: While executing gem ... (Gem::InstallError) gem "test-unit" cannot be uninstalled because it is a default gem(gem 2.0.3)
M. Anthony Aiello

@Anthonyこれは少し危険ですが、エラーを抑制することができますfor i in `gem list --no-versions`; do gem uninstall -aIx $i 2>/dev/null; done
Darren Cheng

46

新しいGemfileを作成して実行することもできますbundle clean --force。これにより、新しいGemfileに含まれていない他のすべてのgemが削除されます。


3
これは非常に便利です:)
user1190286 2013年

1
test-unitをアンインストールできず、プロセスを強制終了するため、最良の回答です。
westonplatter 2013

2
はい、これが最良の答えです。OPはこのポスト2.0.0を選択すべきだと思います。
theTuxRacer 14

2
これは確かに私のために働いており、他のバージョンよりもはるかにエレガントです
Crispen Smith

29

'--no-version'オプションを利用して、カット手順をスキップして、最も小さい異なるバージョン:

gem list --no-version |xargs gem uninstall -ax

あなたはすべてを削除しているので、「I」オプションの必要性はわかりません。宝石が取り除かれるときはいつでも、それは結構です。


1
sudogemが通常のユーザーによってインストールされた場合は必要ありません。
sampablokuper、2012年

私が反対票を投じた理由については、私の回答を参照してください。ここでコメントしたかったのですが、コメントは行を許可しません...
aercolino

良い、多くの宝石を削除できるが、bundle、rake、rvmのようなものではない
2014年

非常にエレガントですが、デフォルトの宝石を削除できないため失敗します。代わりにcrftrのソリューションを
提案してください

11

まず、少なくともgemバージョン2.1.0があることを確認してください

gem update --system
gem --version
# 2.6.4

アンインストールするには、単に実行します:

gem uninstall --all

sudo次のコマンドを使用する必要がある場合があります。

sudo gem uninstall --all

10

どちらかを使用

$ gem list --no-version | xargs gem uninstall -ax

または

$ sudo gem list --no-version | xargs sudo gem uninstall -ax

「gemリスト」と「sudo gemリスト」は独立したリストを提供するため、必要に応じて、両方を実行する必要があります。

通常の「gemリスト」とsudo-edの「gem uninstall」やその逆を混在させないでください。そうしないと、sudoでインストールされたgem(以前)をアンインストールしたり、多くのエラー(後半)が発生する可能性があります。


あなたは正しい、私は私の回答を編集してsudoを除外しました。どちらのバージョンでも、ユーザーはあなたの答えを信頼できます。
チアゴガンザロリ2012

9

Rubygemsバージョン2.1.0以降を使用している場合は、以下を試すことができますgem uninstall --all


3
「gem」ではなく「gem」である必要があります。
2016年

6

ルビを使ってそれをしたい場合:

ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"

乾杯


これでエラーが発生します:エラー:gemの実行中...(Gem :: CommandLineError)少なくとも1つのgem名を指定してください(例:gem build GEMNAME)
mbdev

1
@mbdev修正済み、彼はStack Overflowで私の答えにサポートを提供しています:)
Haris Krajina

これは、コマンドシェルが適切でないWindowsで機能するので便利です。
AdamC、2015

5

Rubygems> = 2.1.0

gem uninstall -aIx

ターミナルがエラー以下を返す場合

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

次に、上記のコマンドを以下のように記述します

sudo gem uninstall -aIx

Mac OSアカウントのパスワードを入力してください。


5

そして、あなたは、特定の接頭辞で、すべての宝石を削除するためにここにいるあなたの人々のために(エヘン、私はあなたを見てい-SDKをAWS!)あなたはこのような何かを実行することができます:

gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx

明らかにクエリの代わりに入れてくださいaws-sdk--I依存関係を無視するには、そこにが必要です。

安藤の以前の答えから採用


4

唯一のコマンドはすべての宝石をクリーンアップするのに役立ち、アンインストールできないデフォルトの宝石を無視します

for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done

2

私はそれほど前にそれをしませんでした(同じポスター-子RVMスイッチャーの状況):

gem list | cut -d" " -f1 | sudo xargs gem uninstall -Iax

すべてのgem(バージョンを含む)のリストを取得し、それをカットしてgem名のみを保持し、そのようなgemのすべてのバージョンをアンインストールします。

これsudoは、gemsがシステム全体にインストールされている場合にのみ有用であり、必要でない限り含めないでください。


1

rootとしてインストールされたgemを削除しようとすると、デフォルトのgemをアンインストールしようとしてエラーが発生すると、xargsが停止したように見えます。

sudo gem list | cut -d" " -f1 | xargs gem uninstall -aIx
# ERROR:  While executing gem ... (Gem::InstallError)
#    gem "test-unit" cannot be uninstalled because it is a default gem


これは誰にとってもうまくいくわけではありませんが、代わりに私が使ったものがこれです:

sudo for gem (`gem list | cut -d" " -f1`); do gem uninstall $gem -aIx; done

1
gem list --no-version | grep -v -e 'psych' -e 'rdoc' -e 'openssl' -e 'json' -e 'io-console' -e 'bigdecimal' | xargs sudo gem uninstall -ax

ここのgrepはデフォルトのgemを除外しています。他のすべての宝石はアンインストールされます。sudo権限の問題が発生した場合に備えて、その前に置くこともできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.