【问题标题】:rbenv clobbering my gem INSTALLATION DIRECTORY when using systemrbenv 在使用系统时破坏了我的 gem 安装目录
【发布时间】:2013-02-18 00:55:58
【问题描述】:

我想使用 rbenv 在每个项目的基础上设置 ruby​​ 版本。否则,我想将我的默认系统 ruby​​ 设置用于其他所有内容。

我遇到的问题是即使rbenv version 返回systemgem 命令仍然使用rbenv shim (.rbenv/shims/gem)。所以当我做gem environment时,我的安装目录是'/Library/Ruby/Gems/1.8'。我宁愿它保持~/.gem/。我可以看到它仍然是当我运行/usr/bin/gem enviroment 时。我不知道 rbenv shim gem 是从哪里得到它的设置的。

我尝试在我的 shell 中修改我的 GEM_HOME,并在 ~/.gemrc 中更改它,但这没有任何效果。我一直在寻找没有运气。希望这里有人可以提供帮助。只是一些指向 rbenv gem shim 从哪里提取其值的指针会很有帮助。

谢谢

【问题讨论】:

    标签: ruby macos rbenv


    【解决方案1】:

    由于 rbenv 垫片在您的 PATH 中相当高,它们的目的是拦截任何对 rubygem 和类似的调用,即使当前选择的 Ruby 版本是“系统”。你不应该担心这个。

    现在,系统 Ruby 的默认安装路径将始终为 /Library/Ruby/Gems/1.8。这是我的RBENV_VERSION=system gem env

      - GEM PATHS:
         - /Library/Ruby/Gems/1.8
         - /Users/mislav/.gem/ruby/1.8
         - /System/Library/Frameworks/Ruby.framework/Versions/1.8/usr/lib/ruby/gems/1.8
    

    但是,如果您使用sudo(并且您不应该),gem install 将没有对该目录的写入权限,并将在下一个安装 gem可写路径,即~/.gem/ruby/1.8。这似乎是您想要的行为。

    【讨论】:

    • 感谢米斯拉夫。出于某种原因,我没有看到它回退到可写路径。 :/ 似乎只尝试安装到安装目录 - 它似乎没有使用 GEM PATHS 进行安装。
    • 不使用 sudo 时会出现什么行为? ~/.gem/ruby/1.8 你的用户可以写吗?如果它不存在,它的父目录是否可以被您的用户执行+写入?
    • 是的,我的用户都可以写。使用 /usr/bin/gem 时,一切正常。它只通过 rbenv 垫片,它的行为不像我想要的那样。
    • 通过 rbenv 运行 gem 应该与运行 /usr/bin/gem 相同(检查 rbenv which gem)。
    • 这就是我的想法。而 rbenv which gem 确实显示 /usr/bin/gem 。所以我不知道为什么gem env(使用rbenv shim)报告的配置与/usr/bin/gem env不同。你可以在这里看到输出:gist.github.com/meeech/f0d4393bb6d0b9f54c30
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-01-12
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多