2013-08-30 58 views
2

我工作的Octopress的博客,所以我成立了一个独立的宝石,做rvm use gemset octopress。它一切正常。但是,我打开了一个新的ZSH选项卡(我在OS X Mountain Lion上,如果这是相关的),它会回退到我以前使用的gemset。我当时并不知道,所以我跑了bundle install。我注意到它安装了我已经安装在Octopress gemset中的所有宝石,所以我想清楚发生了什么。问题:有没有撤消此bundle install,所以我没有在其他宝石所有这些宝石一个简单的方法,还是应该手工卸载它们通过宝石的宝石(他们是不少)。谢谢。如何撤销bundle install?

+0

如果你想使用宝石的特定版本只是说明他们在宝石文件和运行包更新。如果有宝石包括你不想要或需要的只是宝石卸载Gem_name –

+1

您正确回答自己的问题。我喜欢在开始卸载任何gem之前,将bundle install的输出复制/粘贴到文本文件以供参考。 – Teddy

回答

3

可以清空gemsets与RVM:

rvm gemset empty 

它将从选定的宝石消除所有的宝石,也可以即暂时切换到其他宝石搭配:

rvm @the-other-gemset do rvm gemset empty 
+0

好的,谢谢:)这样的想法是,我清空相关的宝石,然后从我捆运行正确的应用程序文件夹中安装只需要与该特定应用程序的宝石来填充它,对吗? –

+0

是的,这将工作,如你所愿 – mpapis

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分钟)。然后,您只需在命令提示符下复制并粘贴这些行。

之前执行我的命令:

  1. 确保当前的宝石是它搞砸
  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/