2013-08-30 91 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/