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.