ruby - 删除旧版本的 gem

标签 ruby rubygems

对于我机器上的一些 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

更新 什么是默认 gem?为什么不能删除?

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

最佳答案

很可能 gem cleanup 没有工作,因为你安装了一些依赖于这些旧版本的东西。您可以通过运行 gem dependency your-gem-name --reverse-dependencies 来检查旧 gem 的依赖项。

如果该命令没有显示任何依赖项,您可以使用 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'

关于ruby - 删除旧版本的 gem ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27933683/

相关文章:

ruby - rack 复制每条日志消息

ruby - 安装 gem 时无法将 "\x89"从 ASCII-8BIT 转换为 UTF-8 xxx

ruby-on-rails - 有人知道在 Amazon S3 上存储 Rails 页面缓存的简单方法吗?

rubygems - 您没有/var/lib/gems/2.3.0目录的写权限

ruby - Faker 中的单词长度

ruby - 无法使用 Ruby Mechanize 登录亚马逊

ruby - 从 ActiveRecord 原始 SQL 获取类型化结果

ruby-on-rails - ActiveRecord::RecordInvalid 验证失败:帐户必须存在

html - Chrome 自动为 body 元素添加高度

rubygems - gemspec中test_files配置的目的是什么