如何撤消bundle install?

时间:2013-08-30 20:23:24

标签: rubygems gem rvm gemset

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

2 个答案:

答案 0 :(得分:3)

你可以用rvm清空gemsets:

rvm gemset empty

它将从所选gemset中删除所有gem,您也可以临时切换到其他gemset:

rvm @the-other-gemset do rvm gemset empty

答案 1 :(得分:1)

几天前,我遇到了同样的问题(再一次)并通过编写此命令解决了这个问题:

$ 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设置为适合您需要的值
  3. 例如,上面的命令可以生成以下行:

    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/