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?

Philippe Blayo
la source

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'
Dylan Markow
la source
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.

ohho
la source
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.

Daniel O'Hara
la source
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

user3118220
la source
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
Anatoly
la source
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
lkraider
la source