webentwicklung-frage-antwort-db.com.de

Alle installierten Gems in OSX deinstallieren?

Es gibt Fälle, in denen ich alle vorherigen Gem-Installationen zurücksetzen und deinstallieren möchte.

Zum Beispiel musste ich einem Freund helfen, seine Rails-Entwicklungsmaschine zur Verwendung von RVM zu migrieren. Da sie zuvor die systemweite Variable gem verwendet hatten, hatte er bei der Arbeit mit mehreren Projekten Kopfschmerzen. Im Wesentlichen war er das Aushängeschild für eine RVM-Konvertierung.

Wie kann ich alle Edelsteine ​​auf seinem OSX-System elegant deinstallieren?

155
crftr

Rubygems> = 2.1.0

gem uninstall -aIx

a entfernt alle Versionen
I ignoriert Abhängigkeiten
x enthält ausführbare Dateien

Rubgems <2.1.0

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

Sie können auch ein neues Gemfile erstellen und bundle clean --force ausführen. Dadurch werden alle anderen Edelsteine ​​entfernt, die nicht in der neuen Gemfile enthalten sind.

42
bswinnerton

Eine etwas andere Version, die den Schneideschritt überspringt und die Option "--no-version" nutzt:

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

Da Sie alles entfernen, sehe ich keine Notwendigkeit für die Option "Ich". Wenn der Edelstein entfernt wird, ist das in Ordnung.

27

Stellen Sie zunächst sicher, dass Sie mindestens eine Gem-Version 2.1.0 haben 

gem update --system
gem --version
# 2.6.4

Zur Deinstallation einfach ausführen:

gem uninstall --all

Möglicherweise müssen Sie den Befehl Sudo verwenden: 

Sudo gem uninstall --all
8
collect

Benutze das eine oder das andere

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

oder

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

Je nachdem, was Sie möchten, müssen Sie möglicherweise beide ausführen, da "gem list" und "Sudo gem list" unabhängige Listen enthalten.

Mischen Sie keine normale "gem-Liste" mit einer Sudo-ed "gem-Deinstallation" oder andersherum. Andernfalls könnten Sie Sudo-installierte Gems deinstallieren (früher) oder viele Fehler (letztere) erhalten.

8
aercolino

Wenn Sie Rubygems Version 2.1.0 oder höher verwenden, können Sie Folgendes versuchen: gem uninstall --all.

8
rrrub

Wenn Sie es gerne mit Ruby machen:

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

Prost

5
Haris Krajina

Rubygems> = 2.1.0

gem uninstall -aIx

Wenn das Terminal den Fehler zurückgibt

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

Dann schreibe den obigen Befehl wie folgt

Sudo gem uninstall -aIx

Und geben Sie Ihr Mac OS Account-Passwort ein Fertig !!

3
Kirtikumar A.

Der einzige Befehl half mir, alle Edelsteine ​​zu bereinigen und ignoriert die Standard-Edelsteine, die nicht deinstalliert werden können

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

Ich habe das vor nicht allzu langer Zeit getan (gleiche Situation mit RVM-Umschaltern):

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

Nimmt die Liste aller Edelsteine ​​(einschließlich Versionssachen), schneidet sie so ab, dass nur der Name des Edelsteins erhalten bleibt, und deinstalliert dann alle Versionen solcher Edelsteine.

Die Variable Sudo ist nur nützlich, wenn Sie systemweit Edelsteine ​​installiert haben.

1
Romain

Und für diejenigen von Ihnen, die hier sind, weil Sie alle Edelsteine ​​mit einem bestimmten Präfix entfernen möchten (ahem Ich sehe Sie an, aws-sdk!), Können Sie so etwas ausführen: 

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

Geben Sie offensichtlich Ihre Abfrage anstelle von aws-sdk- ein. Sie benötigen den -I, um Abhängigkeiten zu ignorieren.

Angenommene Form Andos frühere Antwort

1
Trevor Elwell

Beim Versuch, als root installierte Gems zu entfernen, scheint xargs anzuhalten, wenn ein Fehler beim Deinstallieren eines Standard-Gems auftritt:

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


Dies funktioniert nicht für alle, aber ich habe stattdessen Folgendes verwendet:

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 hier schließt Standard-Edelsteine ​​aus. Alle anderen Edelsteine ​​werden deinstalliert. Sie können auch Sudo angeben, falls Sie Probleme mit der Berechtigung erhalten.

0
moeabdol