I have several versions of a Ruby gem:
$ gem list rjb (1.3.4, 1.3.3, 1.1.9) How can I remove old versions but keep the most recent?
07 Answers
# 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' 1For removing older versions of all installed gems, following 2 commands are useful:
gem cleanup --dryrun Above command will preview what gems are going to be removed.
gem cleanup Above command will actually remove them.
3Way to clean out any old versions of gems.
sudo gem cleanup If you just want to see a list of what would be removed you can use:
sudo gem cleanup -d You can also cleanup just a specific gem by specifying its name:
sudo gem cleanup gemname for remove specific version like 1.1.9 only
gem uninstall gemname --version 1.1.9 If you still facing some exception to install gem, like:
invalid gem: package is corrupt, exception while verifying: undefined method `size' for nil:NilClass (NoMethodError) in /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2.gem
the, you can remove it from cache:
rm /home/rails/.rvm/gems/ruby-2.1.1@project/cache/nokogiri-1.6.6.2.gem For more detail:
1Try something like gem uninstall rjb --version 1.3.4.
gem cleanup uses system commands. Installed gems are just directories in the filesystem. If you want to batch delete, use rm -R.
gem environmentand note the value ofGEM PATHScd <your-gem-paths>/gemsls -1 |grep rjb- |xargs rm -R
You might need to set GEM_HOME for the cleanup to work. You can check what paths exist for gemfiles by running:
gem env Take note of the GEM PATHS section.
In my case, for example, with gems installed in my user home:
export GEM_HOME="~/.gem/ruby/2.4.0" gem cleanup bundler clean Stopped the message showing for me, as a last step after I tried all of the above.
1