web-dev-qa-db-fra.com

Désinstaller tous les joyaux Ruby 2.0.0

Il semble que Ruby 2.0.0 a ajouté des gemmes "par défaut" au mélange et les rend non amovibles par désinstallation de gemmes).

Comment pouvez-vous supprimer toutes les gemmes non par défaut?

45
Nathan Lilienthal

J'ai utilisé ce script d'une ligne.

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

Il ignore les erreurs de gemme par défaut et continue simplement. Simple et évident.

86
ihji

Tout d'abord, allez dans le répertoire gems Like ../Ruby/2.0.0-p195/lib/Ruby/gems/2.0.0/specifications
Vous trouverez un répertoire nommé par défaut, qui inclut toutes les gemmes par défaut livrées avec Ruby 2.0

Déplacez tous les *. Gemspec stockés dans par défaut dir vers spécifications dir et supprimez le par défaut dir vide.

Ensuite, vous pouvez faire ce que vous voulez comme autrefois. :-)

11
Dolittle Wang

J'ai écrit un script en Ruby pour supprimer toutes les gemmes non par défaut.

https://Gist.github.com/nixpulvis/5042764

Ceci est nécessaire maintenant car contrairement à la version 2.0.0, certaines gemmes sont étiquetées "par défaut" avec l'installation de Ruby et ne peuvent pas être désinstallées avec gem uninstall. Cela rend les méthodes précédemment utilisées pour supprimer toutes les gemmes ne fonctionnent pas.

Pour référence ici c'est.
gem list | cut -d" " -f1 | xargs gem uninstall

6
Nathan Lilienthal

Je n'ai pas encore trouvé de meilleure réponse que d'exclure les gemmes "par défaut":

/usr/local/bin/gem list --no-versions | \
grep -v -E "(bigdecimal|io-console|json|minitest|psych|rake|rdoc|test-unit)" | \
xargs --no-run-if-empty /usr/local/bin/gem uninstall --executables --user-install --all --force
0
Kevin