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?

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'

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.


Funktioniert nicht in meinem Ubuntu Cloud9-Setup ... muss mit sudo
Mirv - Matt

13

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


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


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

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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.