【问题标题】:rbenv continually generating vagrant shimrbenv 不断生成 vagrant shim
【发布时间】:2013-05-05 23:15:06
【问题描述】:

我正在使用带有 rbenv 和各种 rubies 的最新 vagrant。

我正在使用最新的 vagrant,它不再使用 gem。当我执行 vagrant 命令时,我看到以下错误:

rbenv: vagrant: command not found

我已经从所有 ruby​​ 环境中删除了旧的 vagrant gem,但是每次我“cd”时,vagrant shim 都会重新生成,这意味着 vagrant 停止工作,直到我手动 rm shim:

rm /home/{user}/.rbenv/shims/vagrant   

有没有办法强制 rbenv 停止这种行为?

正在使用的 rbenv 插件”:

  • ruby 构建
  • rbenv-gemset

【问题讨论】:

    标签: ruby vagrant rbenv


    【解决方案1】:

    试试:

    ls ~/.rbenv/versions/*/bin | grep 'vagrant'

    如果有 gemset 插件

    ls ~/.rbenv/*/gemsets/*/bin/ | grep 'vagrant'

    如果命令返回结果,则删除文件。在此运行后rbenv rehash

    【讨论】:

    • 是否安装了其他插件?
    • 只有 ruby​​-build 和 rbenv-gemset
    • 奇怪,垫片是使用 rehash 构建的,仅来自版本/*/bin 中的 bin。
    【解决方案2】:

    其他人显然也有同样的问题;见https://github.com/sstephenson/rbenv/issues/388

    如果您将the bundler plugin 用于 rbenv,那么出售一个使用 vagrant gem 的项目显然会导致构建 shim;尝试删除 bundler 插件,删除 vagrant shim,然后运行 ​​rbenv rehash 以查看问题是否已修复。

    如果您不使用 bundler 插件,能否给我们一份您正在使用的所有 rbenv 插件的列表?

    【讨论】:

    • docker 有类似的问题。上面引用的问题线程(#388)为我解决了这个问题。正是 ~/.rbenv/bundles 文件引用了我系统上的一个项目,该项目包含一个 bin/docker 二进制文件...在 rm ~/.rbenv/bundles && rbenv rehash 之后,陈旧的 docker shim 终于没有重新出现。
    【解决方案3】:

    在 rbenv 中解决此问题之前,您可以这样做:

    alias vagrant /full/path/to/vagrant
    

    然后每次运行 vagrant 时,都会执行实际的 vagrant 二进制文件,而不是 shim。

    【讨论】:

    • 您也可以将其放入~/.bashrc(或~/.zshrc)以使其成为默认值。
    • 应该想到那个。令人愉快的懒惰。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多