Désinstaller les anciennes versions de Ruby Gems


381

J'ai plusieurs versions d'une gemme Ruby:

$ gem list
rjb (1.3.4, 1.3.3, 1.1.9)

Comment supprimer les anciennes versions mais conserver les plus récentes?

Réponses:


654
# 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

Pour supprimer les anciennes versions de toutes les gemmes installées, les 2 commandes suivantes sont utiles:

 gem cleanup --dryrun

La commande ci-dessus affichera un aperçu des gemmes qui seront supprimées.

 gem cleanup

La commande ci-dessus les supprimera.


Ne fonctionne pas dans ma configuration ubuntu cloud9 ... doit fonctionner avec sudo
Mirv - Matt

13

Essayez quelque chose comme gem uninstall rjb --version 1.3.4.


1
la question était "Comment puis-je supprimer les anciennes versions mais garder les plus récentes?" cette réponse supprimerait la dernière version.
austinheiman

10

Manière de nettoyer toutes les anciennes versions de gemmes.

sudo gem cleanup

Si vous voulez juste voir une liste de ce qui serait supprimé, vous pouvez utiliser:

sudo gem cleanup -d

Vous pouvez également nettoyer uniquement une gemme spécifique en spécifiant son nom:

sudo gem cleanup gemname

pour supprimer une version spécifique comme 1.1.9 uniquement

gem uninstall gemname --version 1.1.9

Si vous rencontrez toujours une exception pour installer gem, comme:

gem non valide: le package est corrompu, exception lors de la vérification: méthode non définie `taille 'pour nil: NilClass (NoMethodError) dans /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2. gemme

le, vous pouvez le supprimer du cache:

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

Pour plus de détails:

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


Vous ne devriez probablement pas utilisersudo
PR Whitehead

8

gem cleanuputilise des commandes système. Les gemmes installées ne sont que des répertoires du système de fichiers. Si vous souhaitez supprimer par lots, utilisez rm -R.

  1. gem environment et notez la valeur de GEM PATHS
  2. cd <your-gem-paths>/gems
  3. ls -1 |grep rjb- |xargs rm -R

2
"Les gemmes installées ne sont que des répertoires du système de fichiers." bon à savoir, merci
philant

0

Vous devrez peut-être définir GEM_HOMEle nettoyage pour qu'il fonctionne. Vous pouvez vérifier quels chemins existent pour les gemfiles en exécutant:

gem env

Prenez note de la section GEM PATHS.

Dans mon cas, par exemple, avec des gemmes installées dans ma maison d'utilisateur:

export GEM_HOME="~/.gem/ruby/2.4.0"
gem cleanup
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.