以前にインストールしたすべてのgemを元に戻し、アンインストールしたい場合があります。
たとえば、友人がRails開発マシンを移行してRVMを使用できるようにする必要がありました。以前はシステム全体のgem
を使用していたため、彼は複数のプロジェクトで作業するときに多くの頭痛の種を経験していました。 本質的に、彼はRVM変換のポスターの子でした。
彼のOSXシステム上のすべてのgemをエレガントにアンインストールするにはどうすればよいですか?
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
新しいGemfileを作成して、bundle clean --force
を実行することもできます。これにより、新しいGemfileに含まれていない他のすべてのgemが削除されます。
「--no-version」オプションを利用して、カットステップをスキップして、最も軽量の異なるバージョン:
gem list --no-version |xargs gem uninstall -ax
あなたはすべてを削除しているので、「I」オプションの必要性は見当たりません。 gemが削除されるたびに問題ありません。
どちらかを使用
$ 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をアンインストールする(以前)か、多くのエラーを取得します(後者)。
まず、少なくともgemバージョン2.1.0があることを確認してください
gem update --system
gem --version
# 2.6.4
アンインストールするには、単に次を実行します。
gem uninstall --all
Sudo
コマンドを使用する必要がある場合があります。
Sudo gem uninstall --all
Rubygemsバージョン2.1.0以降を使用している場合は、gem uninstall --all
を試すことができます。
Rubyを使用して行うのが好きな場合:
Ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"
乾杯
そして、特定のプレフィックスを持つすべての宝石を削除するためにここにいる人のために(ahemaws-sdkを見ています!)次のようなものを実行できます。
gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx
明らかにaws-sdk-
の代わりにクエリに入れてください。依存関係を無視するには、そこに-I
が必要です。
安藤の採用形式 以前の回答
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アカウントのパスワードを入力します
唯一のコマンドはすべてのGemをクリーンアップするのに役立ち、アンインストールできないデフォルトのGemを無視します
for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
私はそれほど前にそれをしませんでした(同じポスター子RVMスイッチャーの状況):
gem list | cut -d" " -f1 | Sudo xargs gem uninstall -Iax
すべてのgem(バージョンを含む)のリストを取得し、gem名のみを保持するようにそれをカットし、そのようなgemのすべてのバージョンをアンインストールします。
Sudo
は、システム全体にgemをインストールした場合にのみ有用であり、必要な場合を除き、含めるべきではありません。
ルートとしてインストールされた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
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
を前に付けることもできます。