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?
Rubygems> = 2.1.0
gem uninstall -aIx
a
entfernt alle VersionenI
ignoriert Abhängigkeitenx
enthält ausführbare Dateien
Rubgems <2.1.0
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
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.
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.
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
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.
Wenn Sie Rubygems Version 2.1.0 oder höher verwenden, können Sie Folgendes versuchen: gem uninstall --all
.
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
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 !!
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
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.
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
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
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.