¿Cómo instalar una versión específica de una gema de rubí?

884

Con la gemherramienta de línea de comandos, ¿cómo puedo instalar una versión específica de una gema?

mjs
fuente

Respuestas:

1158

Usa la -vbandera:

$ gem install fog -v 1.8
mjs
fuente
6060
Si, como yo, que ya había instalado una versión posterior de su joya, a continuación, debe desinstalar la versión posterior con, por ejemplo gem uninstall fog. Le preguntará qué versión desinstalar si tiene más de una.
Dizzley
3
Tengo 3 versiones de rake: gem list | grep rake= rake (10.1.1, 10.1.0, 0.8.7).. Tengo un proyecto de Rails 2.3.5 y otro que es 3.0 en el que estoy trabajando al mismo tiempo. ¿Cómo uso una versión específica de rake para cada proyecto? línea?)
abbood
@abbood rake _10.1.1_ ...debería funcionar, para quien quiera saber :)
Koen.
Vale la pena señalar que esto no parece afectar a los archivos binarios ejecutables. Sin embargo, desinstalar la versión anterior funcionó para los binarios.
Ciro Santilli 郝海东 冠状 病 六四 事件 法轮功
Una vez más, deseando poder hacer múltiples votos a favor. Tal vez si tuvieran que estar separados por al menos un año. :)
Don Branson
192

Use el --versionparámetro (acceso directo -v):

$ gem install rails -v 0.14.1

También puede usar comparadores de versiones como >=o~>

$ gem install rails -v '~> 0.14.0'

O con versiones más nuevas de gem incluso:

$ gem install rails:0.14.4 rubyzip:'< 1'

Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9
schmijos
fuente
Esto funcionó para ~>, pero ¿qué pasa si tiene el tipo de situación '<0.9,> = 0.7'? Intenté aplicar dos argumentos v y parece que el primero fue ignorado. El uso del separador de comas ni siquiera se analizaría. Terminé eliminando el requisito superior al requerido y resultó que instalé una versión aceptable, pero tener una solución formal sería bueno.
Joseph Coco
¿Qué significa el comparador de versiones ~>?
Dragas
Significa que el último dígito puede crecer ( stackoverflow.com/questions/5170547/… )
schmijos
93

Para instalar gem install gemname -v versionnumber

Para desinstalar gem uninstall gemname -v versionnumber

Emjey
fuente
80

para Ruby 1.9+ use colon ..

gem install sinatra:1.4.4 prawn:0.13.0
Kokizzu
fuente
¿Qué gema (y qué versión) estás tratando de instalar?
Kokizzu
dígame el resultado de gem sources, si está vacío, agregue un repositorio usando este comando:gem sources -a https://rubygems.org/
Kokizzu
mis gem -vshows 1.8.23frente a su 2.2.2. Parece que esta característica es nueva :)
kolypto
Ruby 1.8 ya ha finalizado el soporte de ruby-lang.org/en/news/2013/06/30/we-retire-1-8-7
Kokizzu
24

Como otros han señalado, en general use la -vbandera para el gem installcomando.

Si está desarrollando una gema localmente, después de cortar una gema de su gemspec:

$ gem install gemname-version.gem

Asumiendo la versión 0.8, se vería así:

$ gem install gemname-0.8.gem
thelostspore
fuente
3
Gran respuesta. Sin embargo, le sugiero que agregue otro bloque de código para la opción de bandera "-v". Cuando mis ojos leyeron la respuesta, inmediatamente fueron a los bloques de código y no al texto que lo rodeaba. Si otros hacen lo mismo, se perderán la porción "-v".
CamHart
8

Linux

Para instalar una versión diferente de ruby, verifique la última versión del paquete usando aptlo siguiente:

$ apt-cache madison ruby
      ruby |    1:1.9.3 | http://ftp.uk.debian.org/debian/ wheezy/main amd64 Packages
      ruby |        4.5 | http://ftp.uk.debian.org/debian/ squeeze/main amd64 Packages

Luego instálalo:

$ sudo apt-get install ruby=1:1.9.3

Para verificar cuál es la versión actual, ejecute:

$ gem --version # Check for the current user.
$ sudo gem --version # Check globally.

Si la versión aún es antigua, puede intentar cambiar la versión a nueva utilizando el administrador de versiones de ruby ​​( rvm) de la siguiente manera:

rvm 1.9.3

Nota: Puede agregarle un prefijo sudosi rvmse instaló globalmente. O ejecutar /usr/local/rvm/scripts/rvmsi su comando rvmno está en su global PATH. Si el proceso de instalación de rvm falló, consulte la sección de solución de problemas.


Solución de problemas:

  • Si todavía tiene la versión anterior, puede intentar instalar rvm (administrador de versiones de ruby) a través de:

    sudo apt-get install curl # Install curl first
    curl -sSL https://get.rvm.io | bash -s stable --ruby # Install only for the user.
    #or:# curl -sSL https://get.rvm.io | sudo bash -s stable --ruby # Install globally. 

    luego, si está instalado localmente (solo para el usuario actual), cargue rvm a través de:

    source /usr/local/rvm/scripts/rvm; rvm 1.9.3

    si es global (para todos los usuarios), entonces:

    sudo bash -c "source /usr/local/rvm/scripts/rvm; rvm 1.9.3"
  • Si todavía tiene problemas con la nueva versión de Ruby, intente instalarla mediante rvm a través de:

    source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3 # Locally.
    sudo bash -c "source /usr/local/rvm/scripts/rvm && rvm install ruby-1.9.3" # Globally.
  • si desea instalar algunas gemas a nivel mundial y ya tiene instalado rvm, puede intentar:

    rvmsudo gem install [gemname]

    en vez de:

      gem install [gemname] # or:
      sudo gem install [gemname]

Nota: Se prefiere NO usar sudo para trabajar con gemas RVM. Cuando haces sudo, estás ejecutando comandos como root, otro usuario en otro shell y, por lo tanto, toda la configuración que RVM ha hecho por ti se ignora mientras el comando se ejecuta bajo sudo (cosas como GEM_HOME, etc.). Por lo tanto, para reiterar, tan pronto como 'sudo' se está ejecutando como usuario del sistema raíz, lo que borrará su entorno y cualquier archivo que cree no podrá ser modificado por su usuario y dará lugar a cosas extrañas.

kenorb
fuente