清理 Ruby Version Manager (RVM) 中的旧引用

10

我需要在本地机器上释放磁盘空间,其中几乎全部分配给了我的Ruby版本管理器(RVM)目录。

现在,看起来我只安装了一个 Ruby 版本(1.9.2p136):

lsoave@ubuntu:~/rails/github/gitwatcher$ ruby -v
ruby 1.9.2p136 (2010-12-25 revision 30365) [i686-linux]
lsoave@ubuntu:~/rails/github/gitwatcher$ 

lsoave@ubuntu:~/rails/github/gitwatcher$ rvm list
rvm rubies
=> ruby-1.9.2-p136 [ i386 ] 
lsoave@ubuntu:~/rails/github/gitwatcher$

lsoave@ubuntu:~/rails/github/gitwatcher$ which ruby
/home/lsoave/.rvm/rubies/ruby-1.9.2-p136/bin/ruby
lsoave@ubuntu:~/rails/github/gitwatcher$ 

但是我的RVM目录中有许多与其无关的其他目录/版本:

lsoave@ubuntu:~/rails/github/gitwatcher$ ls -la ~/.rvm/gems
total 72
drwxr-xr-x 18 lsoave lsoave 4096 2011-05-21 15:44 .
drwxr-xr-x 23 lsoave lsoave 4096 2011-02-10 22:46 ..
drwxr-xr-x  2 lsoave lsoave 4096 2010-08-29 19:50 cache
drwxr-xr-x  2 lsoave lsoave 4096 2010-08-31 21:50 jruby-1.3.7
drwxr-xr-x  2 lsoave lsoave 4096 2010-08-31 21:50 jruby-1.3.8
drwxr-xr-x  2 lsoave lsoave 4096 2011-05-21 15:44 ree-1.8.7-2010.02
drwxr-xr-x  8 lsoave lsoave 4096 2010-09-08 11:25 ruby-1.8.7-p302
drwxr-xr-x  7 lsoave lsoave 4096 2010-08-29 22:00 ruby-1.8.7-p302@global
drwxr-xr-x  7 lsoave lsoave 4096 2010-08-29 22:24 ruby-1.9.2-head
drwxr-xr-x  7 lsoave lsoave 4096 2010-08-29 22:24 ruby-1.9.2-head@global
drwxr-xr-x  8 lsoave lsoave 4096 2010-08-31 23:47 ruby-1.9.2-p0
drwxr-xr-x  7 lsoave lsoave 4096 2010-08-29 19:50 ruby-1.9.2-p0@global
drwxr-xr-x  8 lsoave lsoave 4096 2011-02-10 19:44 ruby-1.9.2-p136
drwxr-xr-x  7 lsoave lsoave 4096 2011-02-10 19:23 ruby-1.9.2-p136@global
drwxr-xr-x  7 lsoave lsoave 4096 2011-04-08 21:21 ruby-1.9.2-p136@greendog
drwxr-xr-x  7 lsoave lsoave 4096 2011-04-09 00:57 ruby-1.9.2-p136@greendog2
drwxr-xr-x  7 lsoave lsoave 4096 2011-02-15 00:09 ruby-1.9.2-p136@greendog99
drwxr-xr-x  2 lsoave lsoave 4096 2011-02-10 19:04 system
lsoave@ubuntu:~/rails/github/gitwatcher$

删除只剩下 "ruby-1.9.2-p136" 和 "ruby-1.9.2-p136@global" 目录是否安全("ruby-1.9.2-p136@greendog*" 是旧的,且 "rvm system" 未返回任何内容)?我应该使用 "rm" 命令,还是有 RVM 内置命令可以更好地清理?是否可以清理缓存目录?

谢谢您提前的帮助。 卢卡。

2个回答

18
我想rvm cleanup命令可能就能解决问题。
除此之外,如果RVM中的实际gem目录与其不再相关联,则我认为删除这些目录是没有问题的。
如果在environments中找不到匹配的条目,则可以安全地删除相应的gem目录。因为没有其他指向它的东西,RVM也无法使用它。

如果在“environments”中找不到匹配的条目,则可以安全地删除相应的gem目录。因为没有其他指向它的东西,RVM也无法使用它。 - stuartc
我执行了 rvm cleanup all 命令,以删除未使用的 Ruby 版本 1.9.3-p362。它几乎删除了所有内容,但是留下了 .rvm/patches/ruby/1.9.3/p362.rvm/patchsets/ruby/1.9.3/p362 目录。实际上,.rvm/patches/ruby/.rvm/patchsets/ruby/ 目录仍然包含我计算机上安装的所有 Ruby 版本的子目录。 - Teemu Leisti

2

事实证明,之前一些未使用的引用实际上只是gemsets:

rvm gemset list
lsoave@ubuntu:~$ rvm gemset list

gemsets for ruby-1.9.2-p136 (found in /home/lsoave/.rvm/gems/ruby-1.9.2-p136)
global
greendog
greendog2
greendog99

lsoave@ubuntu:~$

我已经按照以下方式删除了它:
lsoave@ubuntu:~$ rvm gemset delete greendog99
Are you SURE you wish to remove the entire gemset directory 'greendog99' (/home/lsoave/.rvm/gems/ruby-1.9.2-p136@greendog99)?
(anything other than 'yes' will cancel) > yes
lsoave@ubuntu:~$ rvm gemset delete greendog2
Are you SURE you wish to remove the entire gemset directory 'greendog2' (/home/lsoave/.rvm/gems/ruby-1.9.2-p136@greendog2)?
(anything other than 'yes' will cancel) > yes
lsoave@ubuntu:~$ rvm gemset delete greendog
Are you SURE you wish to remove the entire gemset directory 'greendog' (/home/lsoave/.rvm/gems/ruby-1.9.2-p136@greendog)?
(anything other than 'yes' will cancel) > yes
lsoave@ubuntu:~$

接着,我备份了一个旧的“lib”文件夹(以防万一……):

lsoave@ubuntu:~/.rvm/gems$ tar zcvf ruby-1.8.7-p302.gz ./ruby-1.8.7-p302

并且去掉了作为以前评论中谈到的相对目录,与stuartc:

lsoave@ubuntu:~/.rvm/gems$ rm -rf ./ruby-1.8.7-p302

现在回到工作中。

我将等待几天,确保一切都正确...


一切都好,我现在可以删除旧的ruby-1.8.7-p302.gz文件了。谢谢stuartc。 - Luca G. Soave

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接