web-dev-qa-db-fra.com

Désinstallez tous les gems installés, sous OSX?

Il y a des cas où je voudrais revenir et désinstaller toutes les installations précédentes de Gem.

Par exemple, je devais aider un ami à migrer sa machine de développement Rails pour qu’il utilise RVM. Comme ils utilisaient auparavant la variable gem à l'échelle du système, il souffrait de nombreuses migraines lorsqu'il travaillait avec plusieurs projets. Essentiellement, il était l'enfant de l'affiche pour un converti RVM.

Comment puis-je désinstaller élégamment toutes les pierres précieuses de son système OSX?

155
crftr

Rubygems> = 2.1.0

gem uninstall -aIx

a supprime toutes les versions
I ignore les dépendances
x inclut les exécutables

Rubgems <2.1.0

for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
377
crftr

Vous pouvez également créer un nouveau fichier Gemfile et exécuter bundle clean --force. Cela supprimera toutes les autres pierres précieuses qui ne sont pas incluses dans le nouveau fichier Gemfile.

42
bswinnerton

Une version différente la plus légère, saute l’étape de coupe et tire parti de l’option '--no-version'

gem list --no-version |xargs gem uninstall -ax

Puisque vous supprimez tout, je ne vois pas la nécessité de l’option «I». Chaque fois que la gemme est retirée, c'est bon.

27
Thiago Ganzarolli

D'abord, assurez-vous d'avoir au moins la version 2.1.0 de Gem 

gem update --system
gem --version
# 2.6.4

Pour désinstaller simplement, lancez:

gem uninstall --all

Vous devrez peut-être utiliser la commande Sudo

Sudo gem uninstall --all
8
collect

Utilisez soit

$ gem list --no-version | xargs gem uninstall -ax

ou

$ Sudo gem list --no-version | xargs Sudo gem uninstall -ax

Selon ce que vous voulez, vous devrez peut-être exécuter les deux, car "gem list" et "Sudo gem list" fournissent des listes indépendantes.

Ne mélangez pas une "liste de gemmes" normale avec une "désinstallation de gem" Sudo-ed, ni le contraire, sinon vous risquez de désinstaller des gemmes installées par Sudo (anciennes) ou d'obtenir de nombreuses erreurs (dernières).

8
aercolino

Si vous utilisez Rubygems version 2.1.0 ou ultérieure, vous pouvez essayer: gem uninstall --all.

8
rrrub

Si vous aimez le faire avec Ruby:

Ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"

À votre santé

5
Haris Krajina

Rubygems> = 2.1.0

gem uninstall -aIx

Si le terminal revient en dessous de l'erreur

ERROR:  While executing gem ... (Gem::FilePermissionError)
You don't have write permissions for the /Library/Ruby/Gems/2.0.0 directory.

Puis écrivez la commande ci-dessus comme ci-dessous

Sudo gem uninstall -aIx

Et entrez le mot de passe de votre compte Mac OS Terminé !!

3
Kirtikumar A.

La seule commande m'a aidé à nettoyer toutes les gemmes et à ignorer les gemmes par défaut, qui ne peuvent pas être désinstallées

for x in `gem list --no-versions`; do gem uninstall $x -a -x -I; done
2
Attenzione

Je l'ai fait il n'y a pas si longtemps (même situation de commutateur RVM avec afficheur enfant):

gem list | cut -d" " -f1 | Sudo xargs gem uninstall -Iax

Prend la liste de toutes les gemmes (y compris la version), la coupe pour ne conserver que le nom de la gemme, puis désinstalle toutes les versions.

La Sudo n'est utile que si vous avez installé des gemmes sur tout le système et ne doit pas être incluse sauf si nécessaire.

1
Romain

Et pour ceux d'entre vous qui sont ici parce que vous voulez supprimer toutes les gemmes avec un certain préfixe (ahem je vous regarde aws-sdk!), Vous pouvez exécuter quelque chose comme ceci: 

gem list --no-version | grep "aws-sdk-" | xargs gem uninstall -aIx

Évidemment, mettez votre requête au lieu de aws-sdk-. Vous avez besoin du -I pour ignorer les dépendances.

Forme adoptée par Ando's réponse précédente

1
Trevor Elwell

En essayant de supprimer les gems installés en tant que root, xargs semble s'arrêter lorsqu'il rencontre une erreur en essayant de désinstaller un gem par défaut:

Sudo gem list | cut -d" " -f1 | xargs gem uninstall -aIx
# ERROR:  While executing gem ... (Gem::InstallError)
#    gem "test-unit" cannot be uninstalled because it is a default gem


Cela ne fonctionnera pas pour tout le monde, mais voici ce que j'ai utilisé à la place:

Sudo for gem (`gem list | cut -d" " -f1`); do gem uninstall $gem -aIx; done
0
Zaz
gem list --no-version | grep -v -e 'psych' -e 'rdoc' -e 'openssl' -e 'json' -e 'io-console' -e 'bigdecimal' | xargs Sudo gem uninstall -ax

grep exclut les gemmes par défaut. Toutes les autres pierres précieuses seront désinstallées. Vous pouvez également le faire précéder de Sudo au cas où vous rencontriez des problèmes d'autorisation.

0
moeabdol