web-dev-qa-db-ja.com

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

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

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

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

164
crftr

Rubygems> = 2.1.

gem uninstall -aIx

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

Rubgems <2.1.

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

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

43
bswinnerton

「--no-version」オプションを利用して、カットステップをスキップして、最も軽量の異なるバージョン:

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

あなたはすべてを削除しているので、「I」オプションの必要性は見当たりません。 gemが削除されるたびに問題ありません。

27

どちらかを使用

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

または

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

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

通常の「gemリスト」とSudo版の「gem uninstall」や他の方法を混在させないでください。そうしないと、Sudoでインストールされたgemをアンインストールする(以前)か、多くのエラーを取得します(後者)。

9
aercolino

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

gem update --system
gem --version
# 2.6.4

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

gem uninstall --all

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

Sudo gem uninstall --all
8
collect

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

8
rrrub

Rubyを使用して行うのが好きな場合:

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

乾杯

5
Haris Krajina

そして、特定のプレフィックスを持つすべての宝石を削除するためにここにいる人のために(ahemaws-sdkを見ています!)次のようなものを実行できます。

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

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

安藤の採用形式 以前の回答

3
Trevor Elwell

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アカウントのパスワードを入力します

3
Kirtikumar A.

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

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

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

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

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

Sudoは、システム全体にgemをインストールした場合にのみ有用であり、必要な場合を除き、含めるべきではありません。

1
Romain

ルートとしてインストールされた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
0
Zaz
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を除外しています。他のすべてのgemはアンインストールされます。許可の問題が発生した場合に備えて、Sudoを前に付けることもできます。

0
moeabdol