对于我机器上的某些宝石,有多个版本:
$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
命令会调用默认版本?
答案 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'