2

我正在开发一个 Octopress 博客,所以我设置了一个单独的 gemset 并做了rvm use gemset octopress. 一切都很好。但是,我打开了一个新的 ZSH 选项卡(我在 OS X Mountain Lion 上,如果相关的话),它又回到了我使用的以前的 gemset。不过当时我还不知道,所以我跑了bundle install。我注意到它安装了我已经在 Octopress gemset 中安装的所有 gem,所以我弄清楚发生了什么。问题:有没有一种简单的方法可以撤消这个bundle install,这样我就不会在另一个 gemset 中拥有所有这些 gem,或者我应该逐个 gem 手动卸载它们(它们很多)。谢谢。

4

2 回答 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。然后,您只需在命令提示符处复制并粘贴这些行。

在执行我的命令之前:

  1. 确保当前的 gemset 是混乱的
  2. 将 设置为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 回答