使用'sudo'而不使用sudo时,RubyGems安装错误

时间:2010-04-21 16:40:16

标签: ruby installation rubygems

我有一台运行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

通常当我以root用户身份安装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.

这是我想去的地方。我已经尝试清除source_caches,尝试不同版本的RubyGems(1.3.5),强制安装到/usr/lib -i无效。关于为什么RubyGems在以root身份安装时检查我的/home目录时如此坚持的任何想法?

4 个答案:

答案 0 :(得分:2)

听起来这可能是一个路径问题,加上安装了多个版本。

输出之间的任何差异:

sudo gem env

gem env

答案 1 :(得分:0)

尝试跑步:

gem environment

并检查GEM PATH的值。有关详情,请访问http://docs.rubygems.org/read/chapter/10#page31

答案 2 :(得分:0)

我在Fedora 15上遇到了同样的问题,所以我使用'--backtrace'选项运行'gem install'以查看发生了什么。

原来它在/usr/lib/ruby/site_ruby/1.8/rubygems/doc_manager.rb:203失败了,它试图将chdir发送到它之前存储的目录(我运行的用户的主目录) sudo as)

我没有进行大量调试以查看根本原因是什么,而是使用快速解决方法以便继续前进。解决方法只是在运行gem install命令之前cd到根目录,例如 cd /

希望这有助于/解决您的问题。

答案 3 :(得分:-3)

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