Cómo actualizar rubygems

206

Necesito actualizar gemas a 1.8 Intenté instalar los respectivos paquetes de Debian pero parece que no se está actualizando

anujm@test:~$ dpkg -l |grep -i rubygem
ii  rubygems                               1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems-lwes                          0.8.2-1323277262                                LWES rubygems
ii  rubygems1.8                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
ii  rubygems1.9                            1.3.5-1ubuntu2                                  package management framework for Ruby libraries/applications
anujm@test:~$ 


anujm@test:~$ gem
gem     gem1.8  gem1.9  
anujm@test:~$ sudo gem1.8 install serve
ERROR:  Error installing serve:
        multi_json requires RubyGems version >= 1.3.6
anujm@test:~$
Anuj
fuente
2
Solo para aclarar, su pregunta es sobre cómo actualizar Rubygems en sí mismo, no ninguna gema en particular administrada por rubygems.
Michael

Respuestas:

471

Instalar rubygems-update

gem install rubygems-update
update_rubygems
gem update --system

ejecuta estos comandos como root o usa sudo.

Sacx
fuente
1
Recibo esta excepción cuando sigo la sugerencia de actualización de gemas: el sistema está deshabilitado en Debian. RubyGems puede actualizarse utilizando los repositorios oficiales de Debian por aptitude o apt-get.
Anuj
3
Aquí debido a problemas con la gema Unicode ( github.com/blackwinter/unicode/issues/5 ): después de ejecutar la solución de respuesta, tuve que ejecutar gem pristine unicodela reconstrucción de la gema y hacerla utilizable.
realmente agradable el
1
Gracias, me ayudó a instalar minitesten una partición NFS cf. github.com/rubygems/rubygems/issues/1161
Oncle Tom
12
rubygems-updateestá instalado por defecto. Entonces, es cuestión de correr solo gem update --system.
dskecse
2
Por lo general, nunca querrás ejecutar este comando como sudo. Eso actualizará el sistema ruby. Considere usar rvmorbenv
Hendrik
54

Puede actualizar todas las gemas simplemente realizando:

sudo gem update

Franco
fuente
44
Esta es una respuesta buscando una pregunta.
Michael
1
sin sudosi instaló gemas como usuario habitual (instalar gemas como root no es muy bueno de todos modos).
akostadinov
44
La pregunta no es "¿Cómo actualizo todas las gemas?" sino "¿Cómo actualizo RubyGems en mi máquina?"
aceofbassgreg
19

O:

gem update `gem outdated | cut -d ' ' -f 1`
jvc26
fuente
#brilliant Gracias por este. Solo agregué --forcepara evitar que la automatización se detenga para la confirmación de sobrescritura
SaxDaddy
no responde la pregunta
agbodike
Respectivamente, con errores shellcheck fijo: gem update "$(gem outdated | cut -d ' ' -f 1)";.
BernhardWebstudio
11

Puedes actualizar gem a cualquier versión específica como esta,

gem update --system 'version'

gem update --system '2.3.0'
Aravin
fuente
1
su comando no funciona en la distribución basada en la actualización de la gema de Debian - ERROR del sistema "2.1.0": Al ejecutar la actualización de la gema gem ... (RuntimeError) - el sistema está deshabilitado en Debian, porque sobrescribirá el contenido del paquete Debian de rubygems, y podría dañar su sistema Debian de maneras sutiles. La forma compatible con Debian de actualizar rubygems es a través de apt-get, utilizando los repositorios oficiales de Debian. Si realmente sabe lo que está haciendo, aún puede actualizar rubygems configurando la variable de entorno REALLY_GEM_UPDATE_SYSTEM, pero recuerde que Debian no lo admite por completo.
Jeff
5

No usaría los paquetes de Debian, eche un vistazo a RVM o Rbenv .

lucas clemente
fuente
El paquete Debian existe para Rbenv
antono
5

Encontré otras respuestas inexactas / desactualizadas. Lo mejor es consultar la documentación real .

Versión corta: en la mayoría de los casos gem update --system será suficiente.

No debe usar a ciegas sudo. De hecho, si no está obligado a hacerlo, lo más probable es que no lo use.

este es mi diseño
fuente
4

Para mí fue suficiente simplemente correr

gem update
Klas Mellbourn
fuente
55
Esto es para actualizar sus gemas, no el software de rubygems en sí.
Peter H. Boling
1
Es cierto, pero este es el primer resultado de Google para búsquedas como "actualizar versión de gema", así que me alegra que esta respuesta haya estado aquí.
ncrypticus
-1

Para actualizar solo una gema (y sus dependencias), haga:

    bundle update gem-name

Pero para actualizar solo la gema sola (sin actualizar sus dependencias), haga

    bundle update --source gem-name
Ruto Collins
fuente
1
Esto es para actualizar gemas específicas, no el software de rubygems en sí.
thisismydesign
1
@thisismydesign ¿Creo que especifiqué que esto actualizará solo una gema específica?
Ruto Collins el
Sí, pero de eso no se trata la pregunta.
thisismydesign
1
Veo. Pero sé que esto ayudará a alguien como yo que aterrizó aquí primero :)
Ruto Collins