【问题标题】:gem install permission problemgem安装权限问题
【发布时间】:2010-04-12 03:16:05
【问题描述】:
qichunren@zhaobak:~> gem install hpricot
ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8 directory.

当前登录用户是qichunren,qichunre用户对.gem dir有写权限。我想知道gem为什么不先将文件安装到我家的.gem dir?为什么我的 gem common 首先要安装文件到 /opt/ruby-enterprise-1.8.7/lib/ruby/gems/1.8

【问题讨论】:

    标签: ruby-on-rails ruby gem


    【解决方案1】:

    尝试将GEM_HOMEGEM_PATH 设置为~/.gem

    对于当前终端会话,只需键入:

    export GEM_HOME=~/.gem
    export GEM_PATH=~/.gem
    

    如果您希望在打开终端时设置这些命令,请将上述命令添加到您的 ~/.bashrc 文件中。

    有关设置自定义 ruby​​ 环境的更全面的解决方案,请参阅 this tutorial from Site5KB,其中描述了使用 .gemrc 文件。

    【讨论】:

    • 这是真正的正确答案。如果没有必要,不要去使用 sudo 安装东西。
    • 答案中的链接似乎已更改。不过,本指南的第一步为我完成了同样的事情:kb.site5.com/ruby-on-rails/…
    • @MikeSlutsky 感谢您指出这一点。将来,如果您发现链接损坏(或已更改且不再相关的链接),如果您认为有合适的替代品,请随时提交“修改”建议。
    • @meagar 我更新了@Mike-Slutsky 给出的链接,但注意到它是.gemrc 配置的文档。对于 ruby​​ gem 新手来说,这是令人生畏的,因为我理解您的解决方案是我添加的更简单的解决方案。该解决方案适用于我,但作为 ruby​​ 新手,请确认我的更改符合您的意图。
    • 记得将你的 GEM_PATH 添加到全局 PATH。这就是我所做的:PATH=$HOME/.gems/bin:$HOME/bin:$PATH GEM_HOME=$HOME/.gems GEM_PATH=$HOME/.gems:/var/lib/gems/2.1.0:/usr/lib/ruby/gems/2.1.0 export PATH GEM_HOME GEM_PATH
    【解决方案2】:

    对于系统范围的 Ruby 安装,请成为 root。例如:

    $ sudo gem install hpricot
    

    但是,在许多情况下(包括在开发中),现代方法是使用一种工具,让您可以像普通用户一样轻松安装和使用 Ruby。这可以让您避免成为 root。有几个这样的工具,我用的是RVM

    # install rvm into your ~
    $ \curl -sSL https://get.rvm.io | bash -s stable
    
    # install latest version of ruby into your ~
    $ rvm install ruby
    
    # installs a gem into your ~
    $ gem install $SOME_GEM_NAME
    

    【讨论】:

    • 不要使用 sudo,因为您将以 root 身份安装它们,并且在使用普通用户时无法访问它们。使用 RVM 和 gemsets。
    • 例如rvm gem install hpricot
    • 您可能想删除此答案。您将保留积分,并为人们省去很多麻烦。
    【解决方案3】:

    我通过 1and1 托管在我的共享服务器上收到此错误。 我的解决方案是添加--user-install 选项,它只是为您的登录用户安装它(这是您在共享服务器环境中所需要的全部) 例子;安装 sass

    gem install sass --user-install
    

    【讨论】:

    • 有趣的是,虽然我指定了--user-install,但我收到了这个错误。
    【解决方案4】:

    如果您正在使用 rbenv 并且正在发生这种情况,您需要将以下内容添加到您的 .bash_profile:

    export RBENV_ROOT="$HOME/.rbenv"
    
    if [ -d $RBENV_ROOT ]; then
      export PATH="$RBENV_ROOT/bin:$PATH"
      eval "$(rbenv init -)"
    fi
    

    【讨论】:

      【解决方案5】:

      重新安装 ruby​​ 解决我的问题。

      brew install ruby
      

      【讨论】:

        猜你喜欢
        • 2019-12-13
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-07-18
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多