删除旧版本的宝石

时间:2015-01-13 23:54:22

标签: ruby gem

对于我机器上的某些宝石,有多个版本:

$gem list bigdecimal
bigdecimal (1.2.6, 1.2.5)

$gem list io-console
io-console (0.4.3, 0.4.2)

$gem list json
json (1.8.2, 1.8.1)

...

我想删除旧版本。我尝试了几个命令:

$gem cleanup
Cleaning up installed gems...
Clean Up Complete

$sudo gem cleanup
Cleaning up installed gems...
Clean Up Complete

$gem cleanup json
Cleaning up installed gems...
Clean Up Complete

$sudo gem cleanup json
Cleaning up installed gems...
Clean Up Complete

但旧版本未删除。为什么cleanup未检测到旧版本?我该如何删除它们?

更新奇怪的是,我可以手动卸载较新版本,但不能删除旧版本。例如,

$ sudo gem uninstall json --version 1.8.1
ERROR:  While executing gem ... (Gem::InstallError)
    gem "json" cannot be uninstalled because it is a default gem

$ sudo gem uninstall json --version 1.8.2
Successfully uninstalled json-1.8.2

更新什么是默认宝石?为什么不能删除它?

更新如果我有一个默认的旧版本,是否意味着没有使用较新的版本,而require命令会调用默认版本?

1 个答案:

答案 0 :(得分:1)

gem cleanup可能无法正常工作,因为您安装了一些依赖于这些旧版本的内容。您可以通过运行gem dependency your-gem-name --reverse-dependencies来检查旧宝石的依赖项。

如果该命令没有显示任何依赖关系,您可以使用gem uninstall手动删除旧版本:

# remove specific version
gem uninstall your-gem-name --version 2.1.0

# remove all versions less than a certain version
gem uninstall your-gem-name --version '<2.1.0'