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


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

 693
Author: mjs, 2013-06-10

6 answers

Utilice la bandera -v:

$ gem install fog -v 1.8
 929
Author: mjs,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-10 14:37:15

Utilice el parámetro --version (acceso directo -v):

$ gem install rails -v 0.14.1

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

$ gem install rails -v '~> 0.14.0'

O con versiones más recientes de gem incluso:

$ gem install rails:0.14.4 rubyzip:'< 1'
…
Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9
 153
Author: schmijos,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-01-08 11:35:30

Para Ruby 1.9+ use dos puntos..

gem install sinatra:1.4.4 prawn:0.13.0
 69
Author: Kokizzu,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-18 08:04:14

Para instalar gem install gemname -v versionnumber

Para desinstalar gem uninstall gemname -v versionnumber

 40
Author: Mrityunjeyan S,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-01-26 08:14:45

Como otros han señalado, en general use la bandera -v para el comando gem install.

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

$ gem install gemname-version.gem

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

$ gem install gemname-0.8.gem
 18
Author: thelostspore,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-10-06 22:29:03

Linux

Para instalar una versión diferente de ruby, verifique la última versión del paquete usando apt como se muestra a continuación:

$ 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 instalarlo:

$ sudo apt-get install ruby=1:1.9.3

Para comprobar 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 usando ruby version manager (rvm) por:

rvm 1.9.3

Nota: Puede prefijarlo por sudo si rvm se instaló globalmente. O ejecute /usr/local/rvm/scripts/rvm si su comando rvm es no en su PATH global. Si el proceso de instalación de rvm falla, consulte la sección solución de problemas.


Solución de problemas:

  • Si todavía tiene la versión anterior, puede intentar instalar rvm (ruby version manager) 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 se instala localmente (solo para el usuario actual), cargue rvm a través de:

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

    Si globalmente (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 rvm via:

    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 globalmente y ya tiene rvm instalado, puede probar:

    rvmsudo gem install [gemname]
    

    En lugar de:

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

Nota: Se prefiere NO usar sudo para trabajar con gemas RVM. Cuando lo haces sudo está ejecutando comandos como root, otro usuario en otro shell y por lo tanto, toda la configuración que RVM ha hecho por usted se ignora mientras el comando se ejecuta bajo sudo (cosas como GEM_HOME, etc...). Así que reitere, tan pronto como 'sudo' se está ejecutando como el sistema raíz usuario que limpiará su entorno, así como cualquier archivo que crea no son capaces de ser modificados por el usuario y dará lugar a están pasando cosas extrañas.

 6
Author: kenorb,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-08-05 08:28:18