我有一台运行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
目录时如此坚持的任何想法?
答案 0 :(得分:2)
听起来这可能是一个路径问题,加上安装了多个版本。
输出之间的任何差异:
sudo gem env
和
gem env
答案 1 :(得分:0)
答案 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