ruby - 在 Mac 上运行 ruby​​ 实用程序时出现 GEM LOAD 错误

标签 ruby macos sudo chef-infra

我正在运行 Mac OS X 10.7.2 (Lion)。它带有 ruby​​ 1.8.7。我已经安装了 1.9.2 并将其设置为默认值(通过 rvm 使用)。

事实上,我为以下命令获得了相同的 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 运行它以避免其他错误。

最佳答案

尝试

rvmsudo chef-client

它应该可以正常工作。

关于ruby - 在 Mac 上运行 ruby​​ 实用程序时出现 GEM LOAD 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8313920/

相关文章:

linux - 检查用户是否属于 sudo 组的脚本

macos - 在没有 sudo 的情况下安装 Cordova 和 Ionic

linux - 图像处理管道中已安装卷的文件权限?

ruby - 打印顶部没有 XML 标题行的 XML 文档

ruby-on-rails - rake stats可以在json中获取吗?

python - 在 Snow Leopard 上查找 Python 附带的默认包时遇到问题

python - 如何在 Mac OS 上使用 pip 安装 PIL?

ruby-on-rails - 连接到多个数据库时,ActiveRecord 似乎会泄漏内存

ruby-on-rails - 将 Spree 集成到现有的 Rails 应用程序中?

python - NUMPY 操作 : Memory Efficiency: PYTHON