Desinstalar versiones antiguas de gemas Ruby


381

Tengo varias versiones de una gema de rubí:

$ gem list
rjb (1.3.4, 1.3.3, 1.1.9)

¿Cómo puedo eliminar versiones antiguas pero mantener la más reciente?

Respuestas:


654
# remove all old versions of the gem
gem cleanup rjb

# choose which ones you want to remove
gem uninstall rjb

# remove version 1.1.9 only
gem uninstall rjb --version 1.1.9

# remove all versions less than 1.3.4
gem uninstall rjb --version '<1.3.4'

259

Para eliminar versiones anteriores de todas las gemas instaladas, son útiles los siguientes 2 comandos:

 gem cleanup --dryrun

El comando anterior mostrará una vista previa de las gemas que se eliminarán.

 gem cleanup

El comando anterior en realidad los eliminará.


No funciona en mi configuración de ubuntu cloud9 ... tengo que ejecutar con sudo
Mirv - Matt

13

Intenta algo como gem uninstall rjb --version 1.3.4.


1
la pregunta era "¿Cómo puedo eliminar versiones antiguas pero mantener la más reciente?" Esta respuesta eliminaría la versión más reciente.
austinheiman

10

Manera de limpiar cualquier versión antigua de gemas.

sudo gem cleanup

Si solo desea ver una lista de lo que se eliminaría, puede usar:

sudo gem cleanup -d

También puede limpiar solo una gema específica especificando su nombre:

sudo gem cleanup gemname

para eliminar versiones específicas como 1.1.9 solamente

gem uninstall gemname --version 1.1.9

Si aún enfrenta alguna excepción para instalar gem, como:

gema no válida: el paquete está dañado, excepción al verificar: método 'tamaño' indefinido para nil: NilClass (NoMethodError) en /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2. joya

el, puedes eliminarlo de la caché:

rm /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2.gem

Para más detalles:

http://blog.grepruby.com/2015/04/way-to-clean-up-gem-or-remove-old.html


Probablemente no deberías estar usandosudo
PR Whitehead

8

gem cleanupusa comandos del sistema. Las gemas instaladas son solo directorios en el sistema de archivos. Si desea eliminar por lotes, use rm -R.

  1. gem environment y tenga en cuenta el valor de GEM PATHS
  2. cd <your-gem-paths>/gems
  3. ls -1 |grep rjb- |xargs rm -R

2
"Las gemas instaladas son solo directorios en el sistema de archivos". bueno saber, gracias
frágil

0

Es posible que deba configurar GEM_HOMEla limpieza para que funcione. Puede verificar qué rutas existen para los archivos de gemas ejecutando:

gem env

Tome nota de la sección GEM PATHS.

En mi caso, por ejemplo, con gemas instaladas en mi casa de usuario:

export GEM_HOME="~/.gem/ruby/2.4.0"
gem cleanup
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.