【问题标题】:How to undo bundle install?如何撤消捆绑安装?
【发布时间】:2013-08-30 20:23:24
【问题描述】:

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

【问题讨论】:

  • 如果你想使用特定版本的 Gems,只需在 gem 文件中声明它们并运行包更新。如果包含您不想要或不需要的 gem,只需 gem 卸载 Gem_name
  • 您正确回答了自己的问题。在开始卸载任何 gem 之前,我喜欢将 bundle install 的输出复制/粘贴到文本文件中以供参考。

标签: rubygems gem rvm gemset


【解决方案1】:

您可以使用 rvm 清空 gemset:

rvm gemset empty

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

rvm @the-other-gemset do rvm gemset empty

【讨论】:

  • 很好,谢谢 :) 所以我的想法是我清空相关的 gemset,然后从正确的应用程序文件夹中运行 bundle install 以仅使用该特定应用程序所需的 gem 填充它,对吧?
【解决方案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/

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-03-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多