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?

Philippe Blayo
fuente

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'
Dylan Markow
fuente
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á.

Oh ho
fuente
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.

Daniel O'Hara
fuente
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

usuario3118220
fuente
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
Anatoly
fuente
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
lkraider
fuente