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.