当我在 Mac 上运行 ruby 实用程序时出现 GEM LOAD 错误
我正在运行 Mac OS X 10.7.2 (Lion)。它随 ruby 1.8.7 一起提供。我已经安装了 1.9.2 并将其设置为默认值(通过 rvm use)。
事实上,我为以下命令获得相同的 ruby 版本:
>ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.2.0]
>sudo ruby --version
Password:
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.2.0]
但是,如果我尝试使用 sudo 命令运行基于 ruby 的实用程序,它会给我一个“gem 加载错误”:
~/chef-repo>sudo chef-client
Password:
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [minitest-1.6.0, rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
from ~/.rvm/gems/ruby-1.9.2-p290/bin/chef-client:18:in `<main>'
如果我直接运行相同的实用程序,它会在没有任何命令的情况下运行出现问题,但稍后会失败(不是由于 gem 加载问题,而是由于对其他仅限 root 的文件夹的访问权限)。
~/chef-repo>chef-client
[Tue, 29 Nov 2011 11:11:55 -0500] INFO: *** Chef 0.10.4 ***
[Tue, 29 Nov 2011 11:12:00 -0500] INFO: Client key /etc/chef/client.pem is not present - registering
[Tue, 29 Nov 2011 11:12:00 -0500] INFO: HTTP Request Returned 409 Conflict: Client already exists.
~/.rvm/gems/ruby-1.9.2-p290/gems/chef-0.10.4/lib/chef/mixin/create_path.rb:49:in `mkdir': Permission denied - /var/chef (Errno::EACCES)
还有其他人遇到过这个问题吗?有谁知道解决方案吗?我确实需要使用 sudo 运行它以避免出现其他错误。
I am running Mac OS X 10.7.2 (Lion). It came with ruby 1.8.7. I have installed 1.9.2 and set it as the default (via rvm use).
In fact I get the same ruby version for the following commands:
>ruby --version
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.2.0]
>sudo ruby --version
Password:
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-darwin11.2.0]
However, if I try to run a ruby based utility with the sudo command, it gives me a "gem load error":
~/chef-repo>sudo chef-client
Password:
~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [minitest-1.6.0, rake-0.8.7, rdoc-2.5.8] (Gem::LoadError)
from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from ~/.rvm/rubies/ruby-1.9.2-p290/lib/ruby/site_ruby/1.9.1/rubygems.rb:1210:in `gem'
from ~/.rvm/gems/ruby-1.9.2-p290/bin/chef-client:18:in `<main>'
If I run the same utility directly it runs without any problems but fails later (not due to gem load issues but due to access rights on other folders that are root-only).
~/chef-repo>chef-client
[Tue, 29 Nov 2011 11:11:55 -0500] INFO: *** Chef 0.10.4 ***
[Tue, 29 Nov 2011 11:12:00 -0500] INFO: Client key /etc/chef/client.pem is not present - registering
[Tue, 29 Nov 2011 11:12:00 -0500] INFO: HTTP Request Returned 409 Conflict: Client already exists.
~/.rvm/gems/ruby-1.9.2-p290/gems/chef-0.10.4/lib/chef/mixin/create_path.rb:49:in `mkdir': Permission denied - /var/chef (Errno::EACCES)
Has anyone else run into this problem? Does anyone know the solution? I do need to run this with sudo to avoid other errors down the line.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试
一下应该可以正常工作。
Try
It should work fine.
Try
It 将允许您在没有 sudo 或 rvmsudo 的情况下运行 Chef。这对我有用。
Try
It will allow you to run chef without sudo or rvmsudo. It works for me.