我正在开发一个 Octopress 博客,所以我设置了一个单独的 gemset 并做了rvm use gemset octopress
. 一切都很好。但是,我打开了一个新的 ZSH 选项卡(我在 OS X Mountain Lion 上,如果相关的话),它又回到了我使用的以前的 gemset。不过当时我还不知道,所以我跑了bundle install
。我注意到它安装了我已经在 Octopress gemset 中安装的所有 gem,所以我弄清楚发生了什么。问题:有没有一种简单的方法可以撤消这个bundle install
,这样我就不会在另一个 gemset 中拥有所有这些 gem,或者我应该逐个 gem 手动卸载它们(它们很多)。谢谢。
问问题
3865 次
2 回答
3
您可以使用 rvm 清空 gemset:
rvm gemset empty
它将从选定的 gemset 中删除所有 gem,您还可以临时切换到其他 gemset:
rvm @the-other-gemset do rvm gemset empty
于 2013-08-30T23:09:34.260 回答
2
几天前,我遇到了同样的问题(再次)并通过编写以下命令解决了它:
$ threshold="20m"; dir="`rvm gemdir`/gems"; find -X "$dir" -type d -maxdepth 1 -mindepth 1 -mtime -"$threshold" | xargs basename | sed -e 's/-\(\([0-9]\{1,\}.\)*[0-9]\{1,\}\)$/ \1/g' -e 's/\(.*\) \(.*\)/gem uninstall \1 --version \2 --executables --ignore-dependencies \&/g'
它会根据需要生成尽可能多的命令行来卸载在给定阈值(超过 20 分钟)之后添加的每个 gem。然后,您只需在命令提示符处复制并粘贴这些行。
在执行我的命令之前:
- 确保当前的 gemset 是混乱的
- 将 设置为
threshold
适合您需要的值
例如,上面的命令可以生成以下行:
gem uninstall elasticsearch --version 1.0.1 --executables --ignore-dependencies &
gem uninstall elasticsearch-api --version 1.0.1 --executables --ignore-dependencies &
gem uninstall elasticsearch-extensions --version 0.0.14 --executables --ignore-dependencies &
gem uninstall elasticsearch-transport --version 1.0.1 --executables --ignore-dependencies &
如果您想了解更多信息,我在这里发表了一篇文章:http: //noteslog.com/post/how-to-undo-a-wrong-bundle-install/
于 2014-03-19T23:15:37.917 回答