Il y a des cas où je voudrais revenir et désinstaller toutes les installations de gemmes précédentes.
Par exemple, j'avais besoin d'aider un ami à migrer sa machine de développement de rails pour utiliser RVM. Comme ils utilisaient auparavant le système à l'échelle du système gem
, il éprouvait de nombreux maux de tête lorsqu'il travaillait sur plusieurs projets. Essentiellement, il était l'affiche d'un converti RVM.
Comment puis-je désinstaller élégamment toutes les gemmes de son système OSX?
yes Y | gem uninstall -a -I
Réponses:
Rubygèmes> = 2.1.0
a
supprime toutes les versionsI
ignore les dépendancesx
inclut les exécutablesRubgems <2.1.0
for i in `gem list --no-versions`; do gem uninstall -aIx $i; done
la source
ERROR: While executing gem ... (Gem::InstallError) gem "test-unit" cannot be uninstalled because it is a default gem
(gem 2.0.3)for i in `gem list --no-versions`; do gem uninstall -aIx $i 2>/dev/null; done
Vous pouvez également créer un nouveau Gemfile et exécuter
bundle clean --force
. Cela supprimera toutes les autres gemmes qui ne sont pas incluses dans le nouveau Gemfile.la source
Une version différente la plus légère, sautant l'étape de coupe, profitant 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, tout va bien.
la source
sudo
ne devrait pas être nécessaire si les gemmes ont été installées par un utilisateur ordinaire.Assurez-vous d'abord que vous avez au moins la version 2.1.0 de gem
gem update --system gem --version # 2.6.4
Pour désinstaller, exécutez simplement:
Vous devrez peut-être utiliser la
sudo
commande:la source
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 gemmes" sudo-ed ni l'inverse, sinon vous risquez de désinstaller les gemmes installées sur sudo (anciennement) ou d'obtenir beaucoup d'erreurs (ce dernier).
la source
Si vous utilisez la version Rubygems 2.1.0 ou ultérieure, vous pouvez essayer:
gem uninstall --all
.la source
Si vous aimez le faire avec du rubis:
ruby -e "`gem list`.split(/$/).each { |line| puts `gem uninstall -Iax #{line.split(' ')[0]}` unless line.strip.empty? }"
À votre santé
la source
Rubygèmes> = 2.1.0
Si le terminal retourne 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.
Ensuite, écrivez la commande ci-dessus comme ci-dessous
Et entrez le mot de passe de votre compte Mac OS Terminé !!
la source
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
Mettez évidemment votre requête au lieu de
aws-sdk-
. Vous avez besoin du-I
dedans pour ignorer les dépendances.Adopté la réponse précédente d'Ando
la source
La seule commande m'a aidé à nettoyer toutes les gemmes et ignore 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
la source
Je l'ai fait il n'y a pas si longtemps (même situation de commutateur RVM affiche-enfant):
gem list | cut -d" " -f1 | sudo xargs gem uninstall -Iax
Prend la liste de toutes les gemmes (y compris les éléments de version), la coupe pour ne conserver que le nom de la gemme, puis désinstalle toutes les versions de ces gemmes.
Le
sudo
n'est utile que si vous avez installé des gemmes à l'échelle du système et ne doit pas être inclus sauf si nécessaire.la source
Lorsque vous essayez de supprimer les gemmes installées 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
la source
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 ici les gemmes par défaut. Toutes les autres gemmes seront désinstallées. Vous pouvez également le faire précéder
sudo
au cas où vous auriez des problèmes d'autorisation.la source