Deinstallieren Sie alte Versionen von Ruby Gems

381

Ich habe mehrere Versionen eines Ruby-Edelsteins:

$ gem list
rjb (1.3.4, 1.3.3, 1.1.9)

Wie kann ich alte Versionen entfernen, aber die neuesten behalten?

Philippe Blayo
quelle

Antworten:

653
# remove all old versions of the gem
gem cleanup rjb

# choose which ones you want to remove
gem uninstall rjb

# remove version 1.1.9 only
gem uninstall rjb --version 1.1.9

# remove all versions less than 1.3.4
gem uninstall rjb --version '<1.3.4'
Dylan Markow
quelle
259

Zum Entfernen älterer Versionen aller installierten Edelsteine ​​sind die folgenden 2 Befehle hilfreich:

 gem cleanup --dryrun

Der obige Befehl zeigt eine Vorschau der Edelsteine ​​an, die entfernt werden sollen.

 gem cleanup

Der obige Befehl entfernt sie tatsächlich.

Oh ho
quelle
Funktioniert nicht in meinem Ubuntu Cloud9-Setup ... muss mit sudo
Mirv - Matt
13

Versuchen Sie etwas wie gem uninstall rjb --version 1.3.4.

Daniel O'Hara
quelle
1
Die Frage war: "Wie kann ich alte Versionen entfernen, aber die neuesten behalten?" Diese Antwort würde die neueste Version entfernen.
Austinheiman
10

Weg, um alte Versionen von Edelsteinen zu entfernen.

sudo gem cleanup

Wenn Sie nur eine Liste der zu entfernenden Elemente anzeigen möchten, können Sie Folgendes verwenden:

sudo gem cleanup -d

Sie können auch nur einen bestimmten Edelstein bereinigen, indem Sie seinen Namen angeben:

sudo gem cleanup gemname

nur zum Entfernen bestimmter Versionen wie 1.1.9

gem uninstall gemname --version 1.1.9

Wenn Sie immer noch eine Ausnahme bei der Installation von gem haben, wie zum Beispiel:

ungültiges gem: Paket ist beschädigt, Ausnahme bei der Überprüfung: undefinierte Methode `size 'für nil: NilClass (NoMethodError) in /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2. Juwel

Sie können es aus dem Cache entfernen:

rm /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2.gem

Für mehr Details:

http://blog.grepruby.com/2015/04/way-to-clean-up-gem-or-remove-old.html

user3118220
quelle
Sie sollten wahrscheinlich nicht verwendensudo
PR Whitehead
8

gem cleanupverwendet Systembefehle. Installierte Gems sind nur Verzeichnisse im Dateisystem. Wenn Sie stapelweise löschen möchten, verwenden Sie rm -R.

  1. gem environment und notieren Sie den Wert von GEM PATHS
  2. cd <your-gem-paths>/gems
  3. ls -1 |grep rjb- |xargs rm -R
Anatoly
quelle
2
"Installierte Edelsteine ​​sind nur Verzeichnisse im Dateisystem." Gut zu wissen, danke
Philant
0

Möglicherweise müssen Sie festlegen, GEM_HOMEdass die Bereinigung funktioniert. Sie können überprüfen, welche Pfade für Gemfiles vorhanden sind, indem Sie Folgendes ausführen:

gem env

Beachten Sie den Abschnitt GEM PATHS.

In meinem Fall zum Beispiel mit Edelsteinen, die in meinem Benutzerhaus installiert sind:

export GEM_HOME="~/.gem/ruby/2.4.0"
gem cleanup
lkraider
quelle