Ruby: How to install a specific version of a ruby gem?

RubyRubygems

Ruby Problem Overview


Using the command-line gem tool, how can I install a specific version of a gem?

Ruby Solutions


Solution 1 - Ruby

Use the -v flag:

$ gem install fog -v 1.8

Solution 2 - Ruby

Use the --version parameter (shortcut -v):

$ gem install rails -v 0.14.1
…
Successfully installed rails-0.14.1

You can also use version comparators like >= or ~>

$ gem install rails -v '~> 0.14.0'
…
Successfully installed rails-0.14.4

With newer versions of rubygems you can tighten up your requirements:

$ gem install rails -v '~> 0.14.0, < 0.14.4'
…
Successfully installed rails-0.14.3

Since some time now you can also specify versions of multiple gems:

$ gem install rails:0.14.4 rubyzip:'< 1'
…
Successfully installed rails-0.14.4
Successfully installed rubyzip-0.9.9

But this doesn't work for more than one comparator per gem (yet).

Solution 3 - Ruby

For installing gem install gemname -v versionnumber

For uninstall gem uninstall gemname -v versionnumber

Solution 4 - Ruby

for Ruby 1.9+ use colon.

gem install sinatra:1.4.4 prawn:0.13.0

Solution 5 - Ruby

As others have noted, in general use the -v flag for the gem install command.

If you're developing a gem locally, after cutting a gem from your gemspec:

$ gem install gemname-version.gem

Assuming version 0.8, it would look like this:

$ gem install gemname-0.8.gem

Solution 6 - Ruby

You can use the -v or --version flag. For example

gem install bitclock -v '< 0.0.2'

To specify upper AND lower version boundaries you can specify the --version flag twice

gem install bitclock -v '>= 0.0.1' -v '< 0.0.2'

or use the syntax (for example)

gem install bitclock -v '>= 0.0.1, < 0.0.2'

The other way to do it is

gem install bitclock:'>= 0.0.1'

but with the last option it is not possible to specify upper and lower bounderies simultaneously.

[gem 3.0.3 and ruby 2.6.6]

Solution 7 - Ruby

Linux

To install different version of ruby, check the latest version of package using apt as below:

$ 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

Then install it:

$ sudo apt-get install ruby=1:1.9.3

To check what's the current version, run:

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

If the version is still old, you may try to switch the version to new by using ruby version manager (rvm) by:

rvm 1.9.3

Note: You may prefix it by sudo if rvm was installed globally. Or run /usr/local/rvm/scripts/rvm if your command rvm is not in your global PATH. If rvm installation process failed, see the troubleshooting section.


Troubleshooting:

  • If you still have the old version, you may try to install rvm (ruby version manager) via:

     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. 
    

then if installed locally (only for current user), load rvm via:

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

if globally (for all users), then:

    sudo bash -c "source /usr/local/rvm/scripts/rvm; rvm 1.9.3"
  • if you still having problem with the new ruby version, try to install it by 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.
    
  • if you'd like to install some gems globally and you have rvm already installed, you may try:

     rvmsudo gem install [gemname]
    

instead of:

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

> Note: It's prefered to NOT use sudo to work with RVM gems. When you do > sudo you are running commands as root, another user in another shell > and hence all of the setup that RVM has done for you is ignored while > the command runs under sudo (such things as GEM_HOME, etc...). So to > reiterate, as soon as you 'sudo' you are running as the root system > user which will clear out your environment as well as any files it > creates are not able to be modified by your user and will result in > strange things happening.

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionmjsView Question on Stackoverflow
Solution 1 - RubymjsView Answer on Stackoverflow
Solution 2 - RubyschmijosView Answer on Stackoverflow
Solution 3 - RubyEmjeyView Answer on Stackoverflow
Solution 4 - RubyKokizzuView Answer on Stackoverflow
Solution 5 - RubymyconodeView Answer on Stackoverflow
Solution 6 - RubyMael StorView Answer on Stackoverflow
Solution 7 - RubykenorbView Answer on Stackoverflow