ver saber rails instalar instaladas gemas actualizar ruby rubygems

ruby - saber - Desinstalar todas las gemas instaladas, en OSX?



version of ruby (13)

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 anteriormente usaban la gem todo el sistema, experimentaba muchos dolores de cabeza cuando trabajaba en varios proyectos. Esencialmente, él era el poster-niño de un convertido RVM.

¿Cómo puedo desinstalar elegantemente todas las gemas de su sistema OSX?


Al intentar eliminar las gemas instaladas como raíz, xargs parece detenerse cuando encuentra un error al intentar desinstalar una gema predeterminada:

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


Esto no funcionará para todos, pero esto es lo que usé en su lugar:

sudo for gem (`gem list | cut -d" " -f1`); do gem uninstall $gem -aIx; done


El único comando me ayudó a limpiar todas las gemas e ignorar las gemas predeterminadas, que no se pueden desinstalar

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


Lo hice no hace mucho tiempo (la misma situación de conmutador RVM de poster-niño):

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

Toma la lista de todas las gemas (incluido el material de la versión), la corta para guardar solo el nombre de la gema y luego desinstala todas las versiones de dichas gemas.

El sudo solo es útil si tiene gemas instaladas en todo el sistema, y ​​no debería incluirse a menos que sea necesario.


Primero asegúrate de tener al menos la versión de gema 2.1.0

gem update --system gem --version # 2.6.4

Para desinstalar simplemente ejecute:

gem uninstall --all

Puede necesitar usar el comando sudo :

sudo gem uninstall --all


Rubygems> = 2.1.0

gem uninstall -aIx

Si el terminal devuelve el siguiente error

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

Luego escriba el comando anterior como se muestra a continuación

sudo gem uninstall -aIx

E ingrese la contraseña de su cuenta mac mac ¡Hecho!


Si está usando Rubygems versión 2.1.0 o posterior, puede probar: gem uninstall --all .


Si te gusta hacerlo usando ruby:

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

Aclamaciones


También podría construir un nuevo Gemfile y ejecutar bundle clean --force . Esto eliminará todas las demás gemas que no están incluidas en el nuevo Gemfile.


Una versión diferente más suelta, omitiendo el paso de corte, aprovechando la opción ''--no-versión'':

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

Como está eliminando todo, no veo la necesidad de la opción ''I''. Cada vez que se quita la gema, está bien.


Utilizar cualquiera

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

o

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

Dependiendo de lo que desee, es posible que necesite ejecutar ambos, porque "lista de gemas" y "lista de gemas de 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 sudo (antiguas) o recibiendo muchos errores (últimos).


Y para aquellos de ustedes que están aquí porque quieren eliminar todas las gemas con un cierto prefijo (¡ ejem , los estoy mirando, aws-sdk!), Pueden ejecutar algo como esto:

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

Obviamente pon tu consulta en lugar de aws-sdk- . Necesitas el -I allí para ignorar las dependencias.

Forma adoptada La respuesta anterior de Ando


Rubygems> = 2.1.0

gem uninstall -aIx

a quita todas las versiones
Ignoro las dependencias
x incluye ejecutables

Rubgems <2.1.0

for i in `gem list --no-versions`; do gem uninstall -aIx $i; 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 aquí está excluyendo las gemas predeterminadas. Todas las demás gemas se desinstalarán. También puede precederlo con sudo en caso de que obtenga problemas de permisos.