Hay casos en los que me gustaría revertir y desinstalar todas las instalaciones de gemas anteriores.
Por ejemplo, necesitaba ayudar a un amigo a migrar su máquina de desarrollo de rieles para usar RVM. Como habían estado utilizando el sistema anteriormente gem
, estaba experimentando muchos dolores de cabeza cuando trabajaba con múltiples proyectos. Esencialmente, él era el niño poster de un converso RVM.
¿Cómo puedo desinstalar elegantemente todas las gemas en su sistema OSX?
yes Y | gem uninstall -a -I
Respuestas:
Rubygems> = 2.1.0
a
elimina todas las versionesI
ignora las dependenciasx
incluye ejecutablesRubgems <2.1.0
fuente
ERROR: While executing gem ... (Gem::InstallError) gem "test-unit" cannot be uninstalled because it is a default gem
(gema 2.0.3)for i in `gem list --no-versions`; do gem uninstall -aIx $i 2>/dev/null; done
También puede construir un nuevo Gemfile y ejecutarlo
bundle clean --force
. Esto eliminará todas las otras gemas que no están incluidas en el nuevo Gemfile.fuente
Una versión diferente más ligera, omitiendo el paso de corte, aprovechando la opción '--no-version':
Como está eliminando todo, no veo la necesidad de la opción 'I'. Cada vez que se quita la gema, está bien.
fuente
sudo
no debería ser necesario si las gemas fueron instaladas por un usuario común.Primero asegúrese de tener al menos gema versión 2.1.0
Para desinstalar simplemente ejecute:
Puede que necesite usar el
sudo
comando:fuente
Utilizar cualquiera
o
Dependiendo de lo que desee, es posible que deba ejecutar ambos, porque "lista de gemas" y "lista de gemas sudo" proporcionan listas independientes.
No mezcle una "lista de gemas" normal con una "desinstalación de gemas" sudo-ed ni al revés, de lo contrario, puede terminar desinstalando gemas instaladas en sudo (anteriores) u obteniendo muchos errores (últimos).
fuente
Si está utilizando la versión 2.1.0 Rubygems o temprano, puede intentar:
gem uninstall --all
.fuente
Si te gusta hacerlo con ruby:
Salud
fuente
Rubygems> = 2.1.0
Si el terminal regresa debajo del error
Luego escriba el comando de arriba como a continuación
E ingrese su contraseña de cuenta de Mac OS ¡Listo!
fuente
Y para aquellos de ustedes que están aquí porque desean eliminar todas las gemas con un cierto prefijo (¡ ejem, lo estoy mirando aws-sdk!) Pueden ejecutar algo como esto:
Obviamente poner en su consulta en lugar de
aws-sdk-
. Necesita el-I
allí para ignorar las dependencias.Forma adoptada respuesta anterior de Ando
fuente
El único comando me ayudó a limpiar todas las gemas e ignora las gemas predeterminadas, que no se pueden desinstalar
fuente
Lo hice no hace mucho tiempo (misma situación de conmutador RVM de póster-niño):
Toma la lista de todas las gemas (incluidas las cosas de la versión), la corta para mantener solo el nombre de la gema, luego desinstala todas las versiones de tales gemas.
Esto
sudo
solo es útil si tenía gemas instaladas en todo el sistema, y no debe incluirse a menos que sea necesario.fuente
Al intentar eliminar las gemas instaladas como root, xargs parece detenerse cuando encuentra un error al intentar desinstalar una gema predeterminada:
Esto no funcionará para todos, pero esto es lo que usé en su lugar:
fuente
grep aquí excluye las gemas predeterminadas. Todas las demás gemas serán desinstaladas. También puede precederlo
sudo
en caso de que tenga problemas de permisos.fuente