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?
Rubygems> = 2.1.0
gem uninstall -aIx
a
supprime toutes les versionsI
ignore les dépendancesx
inclut les exécutables
Rubgems <2.1.0
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
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.
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.
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
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).
Si vous utilisez Rubygems version 2.1.0 ou ultérieure, vous pouvez essayer: gem uninstall --all
.
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é
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é !!
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
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.
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
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
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.