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?
# 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'
For 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.
Way 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:
http://blog.grepruby.com/2015/04/way-to-clean-up-gem-or-remove-old.html
Try 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 environment
and note the value ofGEM PATHS
cd <your-gem-paths>/gems
ls -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.
精彩评论