代码之家  ›  专栏  ›  技术社区  ›  Kenny Peng

使用“sudo”和不使用sudo时rubygems安装错误

  •  5
  • Kenny Peng  · 技术社区  · 14 年前

    我有一台运行ubuntu hardy的机器,它提供了自己的rubygems包。不幸的是,rubygems(1.1.1)的版本太旧,无法使用,所以我决定手动将rubygems更新到当前版本(1.3.6)。那部分进展顺利 gem -v 我得到 1.3.6 这是意料之中的。问题是当我试图做到: sudo gem install rack ,它返回此错误:

    ERROR:  While executing gem ... (Errno::EACCES)
    Permission denied - /home/username/.gem
    

    通常当我以根用户身份安装gems时,它知道如何将它安装到 /usr/lib/ruby/gems ,那它为什么要检查我的主目录呢?另一个怪癖是当我这样做的时候 gem install rack (不是根),上面写着:

    ERROR:  While executing gem ... (Gem::FilePermissionError)
    You don't have write permissions into the /usr/lib/ruby/gems/1.8 directory.
    

    这就是我想要它去的地方。我已经尝试清除源缓存,尝试不同版本的rubygems(1.3.5),强制安装到 /usr/lib 具有 -i 无济于事。关于为什么RubyGems坚持要检查我的 /home 作为根目录安装时的目录?

    4 回复  |  直到 13 年前
        1
  •  2
  •   SundayEdition    14 年前

    听起来这可能是由于安装了多个版本而导致的路径问题。

    输出之间的任何差异:

    sudo gem env
    

    gem env
    
        2
  •  0
  •   nutcracker    14 年前

    试运行:

    gem environment
    

    并检查gem路径的值。更多信息 http://docs.rubygems.org/read/chapter/10#page31

        3
  •  0
  •   Mo Morsi    13 年前

    在Fedora15上,我自己也遇到了同样的问题,所以我使用“--backtrace”选项运行了“gem install”来查看发生了什么。

    结果它在/usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:203失败,它试图将chdir指向先前存储的目录(运行sudo as的用户的主目录)

    我没有进行广泛的调试来了解根本原因是什么,只是使用了一个快速的解决方法,以便我可以继续前进。解决方法只是将cd放在根目录下,例如 CD/ ,然后再运行gem install命令。

    希望这能帮助你解决问题。

        4
  •  -3
  •   Chris    13 年前

    su(密码)比chmod 755/usr/lib/ruby/gems/1.8更容易