【问题标题】:switching ruby with rvm breaks chef 11.4.4 knife command用 rvm 切换 ruby​​ 会破坏 Chef 11.4.4 刀命令
【发布时间】:2013-07-01 20:35:13
【问题描述】:

我有安装了 ruby​​ 1.9.1 的 chef 11.4.4。我想安装 berkshelf 但它需要 ruby​​ 1.9.2 或更高版本。我用 rvm 安装了 ruby​​ 2.0.0-p247(最新稳定版)。当我运行刀命令时,我得到...

# knife help 
/opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:247:in `to_specs': Could not find chef (>= 0) amongst [rake-10.1.0, rvm-1.11.3.8] (Gem::LoadError)
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems/dependency.rb:256:in `to_spec'
from /opt/chef/embedded/lib/ruby/site_ruby/1.9.1/rubygems.rb:1231:in `gem'
from /usr/bin/knife:22:in `<main>'

如果我把它切换回系统版本,也就是嵌入chef的ruby版本,它会再次工作。

# rvm use system
Now using system ruby.
# knife help
Usage: knife SUBCOMMAND (options)
.
.
.

我在谷歌上搜索了将 ruby​​ 升级到 2.0.0x for chef 的方法,但没有运气。我喜欢如此轻松地切换 ruby​​ 版本的能力。如果 chef 可以做同样的事情,那就太好了,但是让它与最新的稳定版甚至 1.9.2 版的 ruby​​ 一起工作会很棒。谢谢!

【问题讨论】:

  • Chef 11.4.4 已知 Ruby 2.0 存在问题(实际上是 ruby​​gems 2.0.x 格式已更改)。尝试安装旧版本的 ruby​​gem,例如 1.8.25 gem update --system 1.8.25 或暂时切换到 1.9.3-p448。我这样做解决了厨师独奏的问题。
  • 谢谢。这有帮助。我切换到 1.9.3 并安装了 chef gem,它工作正常。
  • 我会回复并添加更多信息。它应该对许多遇到相同问题的其他人有用,请稍后投票:-)

标签: ruby rvm chef-infra berkshelf


【解决方案1】:

你需要在 rvm 中使用 ruby​​:

rvm use 2.0.0-p247

这将设置使用该 ruby​​ 的环境,您可以将其设置为新 shell/会话的默认设置:

rvm alias create default 2.0.0 #OR:
rvm use 2.0.0 --default

当您切换到新的 ruby​​ 时,还需要重新安装 gems:

gem install chef

【讨论】:

  • 感谢您的提示。我运行了您列出的命令,但最后一个命令失败:# gem install chef ^@ERROR: 找不到有效的 gem 'chef' (>= 0),原因如下:无法从 rubygems.org 下载数据 - Errno ::ETIMEDOUT:连接超时 - connect(2) (rubygems.org/latest_specs.4.8.gz) 错误:可能的替代方案:厨师
  • continuation... 在它不起作用后,我按照@Terry wang 的建议切换到 1.9.3,然后重新运行您给出的命令并且它起作用了!谢谢。
  • 我们需要重新安装 chef 的部分更有意义!!
  • 这对我有用。请注意,如果使用 rvm,请不要通过综合安装程序安装 chef。
【解决方案2】:

这既不是 Chef 11.4.4 也不是 Ruby 2.0.0 的错,而是 ruby​​gems 2.0.x;-)

见 => CHEF-3933

解决方法是安装旧版本的rubygems尝试安装旧版本的rubygems,例如1.8.25 gem update --system 1.8.25或暂时切换到1.9.3-p448

我还是解决了chef-solo 运行问题。

更多信息:

【讨论】:

  • 我明白了。感谢您的链接。我没有考虑第三件,红宝石。它看起来很简单。在我将 ruby​​ 切换回 2.0.x 并将 ruby​​gems 设置为 1.8.25 之前,是否应该担心 ruby​​ 和 ruby​​gems 之间是否存在较大的版本差距?我不想让这两个相对接近吗?谢谢。
  • 我觉得没什么好担心的。一旦Chef 修复了新版本中的问题,我们应该能够继续使用最新的 Ruby + ruby​​gems ;-)
  • 在我安装了旧版本的 json gem install json -v 1.7.7 之后,安装旧版本的 ruby​​gems 对我有用。
  • 我决定至少现在坚持使用 1.8.25。感谢您的帮助!
【解决方案3】:

rvm reset 应该可以解决问题。

当您使用 rvm use 切换 ruby​​ 版本时,您需要再次 rvm reset

【讨论】:

    猜你喜欢
    • 2017-04-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多