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 für die Verwendung von RVM zu migrieren. Da sie das System zuvor systemweit verwendet hatten gem
, hatte er bei der Arbeit mit mehreren Projekten viele Kopfschmerzen. Im Wesentlichen war er das Aushängeschild eines RVM-Konvertiten.
Wie kann ich alle Edelsteine auf seinem OSX-System elegant deinstallieren?
yes Y | gem uninstall -a -I
Antworten:
Rubygems> = 2.1.0
a
Entfernt alle Versionen,I
ignoriert Abhängigkeiten undx
ausführbare DateienRubgems <2.1.0
quelle
ERROR: While executing gem ... (Gem::InstallError) gem "test-unit" cannot be uninstalled because it is a default gem
(gem 2.0.3)for i in `gem list --no-versions`; do gem uninstall -aIx $i 2>/dev/null; done
Sie können auch eine neue Gem-Datei erstellen und ausführen
bundle clean --force
. Dadurch werden alle anderen Edelsteine entfernt, die nicht in der neuen Gemfile enthalten sind.quelle
Eine leichteste andere Version, die den Schnittschritt überspringt und die Option '--no-version' nutzt:
Da Sie alles entfernen, sehe ich keine Notwendigkeit für die Option "Ich". Immer wenn der Edelstein entfernt wird, ist es in Ordnung.
quelle
sudo
sollte nicht notwendig sein, wenn die Edelsteine von einem normalen Benutzer installiert wurden.Stellen Sie zunächst sicher, dass Sie mindestens Gem Version 2.1.0 haben
Zum Deinstallieren einfach ausführen:
Möglicherweise müssen Sie den folgenden
sudo
Befehl verwenden:quelle
Benutze das eine oder das andere
oder
Je nachdem, was Sie möchten, müssen Sie möglicherweise beide ausführen, da "Edelsteinliste" und "Sudo-Edelsteinliste" unabhängige Listen bereitstellen.
Mischen Sie keine normale "Gem-Liste" mit einer sudo-ed "Gem-Deinstallation" oder umgekehrt, da Sie sonst möglicherweise sudo-installierte Gems (erstere) deinstallieren oder viele Fehler (letztere) erhalten.
quelle
Wenn Sie Rubygems Version 2.1.0 oder höher verwenden, können Sie Folgendes versuchen :
gem uninstall --all
.quelle
Wenn Sie es gerne mit Rubin machen:
Prost
quelle
Rubygems> = 2.1.0
Wenn das Terminal unter dem Fehler zurückkehrt
Schreiben Sie dann den obigen Befehl wie folgt
Und geben Sie Ihr Mac OS Account Passwort ein. Fertig !!
quelle
Und für diejenigen unter Ihnen, die hier sind, weil Sie alle Edelsteine mit einem bestimmten Präfix entfernen möchten ( ähm, ich sehe Sie aws-sdk an!), Können Sie so etwas ausführen:
Offensichtlich in Ihre Anfrage anstelle von
aws-sdk-
. Sie benötigen das-I
dort, um Abhängigkeiten zu ignorieren.Angenommene Form Andos frühere Antwort
quelle
Der einzige Befehl hat mir geholfen, alle Edelsteine zu bereinigen und Standard-Edelsteine zu ignorieren, die nicht deinstalliert werden können
quelle
Ich habe das vor nicht allzu langer Zeit gemacht (gleiche RVM-Umschalter-Situation für Aushängeschilder):
Nimmt die Liste aller Edelsteine (einschließlich Versionsmaterial), schneidet sie so, dass nur der Edelsteinname erhalten bleibt, und deinstalliert dann alle Versionen solcher Edelsteine.
Dies
sudo
ist nur nützlich, wenn Sie Edelsteine systemweit installiert haben, und sollte nicht enthalten sein, es sei denn, dies ist erforderlich.quelle
Beim Versuch, als root installierte Gems zu entfernen, scheint xargs anzuhalten, wenn beim Versuch, ein Standard-Gem zu deinstallieren, ein Fehler auftritt:
Dies wird nicht für alle funktionieren, aber hier ist, was ich stattdessen verwendet habe:
quelle
grep schließt hier Standardedelsteine aus. Alle anderen Edelsteine werden deinstalliert. Sie können es auch voranstellen,
sudo
falls Sie Berechtigungsprobleme erhalten.quelle