2

我在尝试从fnichol/chef-rvm运行rvm::user食谱时遇到了问题。我正在使用厨师和流浪者盒子。rvm 安装正常,但每次 chef 尝试安装 ruby​​ 时,都会失败并出现以下错误:

WARN: Failed to install rvm_ruby[ruby-1.9.3-p448]. Check logs in /log/ruby-1.9.3-p448

这是我的Vagrantfile

Vagrant.configure("2") do |config|
  config.vm.box       = 'precise32'
  config.vm.box_url   = 'http://files.vagrantup.com/precise32.box'

  config.vm.provision "chef_solo" do |chef|
    chef.add_recipe "rvm::vagrant" 
    chef.add_recipe "rvm::user"

    chef.json = {
      :rvm => {
        :user_installs => [
           {
              :user => "vagrant",
              :default_ruby => "1.9.3",
              :rubies => ["1.9.3"],
              :global_gems => [
                  { :name => 'bundler' }
              ],                   
           }
        ]
      }
  end
end
  • 环境细节:
    • 流浪版本:1.2.7
    • 流浪虚拟机:precise32
    • rvm版本:1.22.11
    • 厨师-rvm 参考:59dc482
4

2 回答 2

3

事实证明,Vag​​rant 在非交互式/非 tty 会话中运行 chef。该sudo命令不喜欢在非交互式会话中运行,并在尝试安装依赖项时导致 rvm 失败(通过 ubuntu 中的 apt-get)。

您可以通过将其添加到以下内容来允许 sudo 以非交互方式运行/etc/sudoers

vagrant  ALL= (ALL:ALL) NOPASSWD: ALL

一旦我添加了这个,厨师rvm::user成功安装了食谱。

于 2013-09-24T21:41:02.943 回答
0

我的设置要复杂得多,但是错误是一样的。最终,我发现添加 apt chef 食谱可以解决所有问题。

chef.add_recipe "apt" 
chef.add_recipe "rvm::vagrant" 
chef.add_recipe "rvm::user"

> Run List is [recipe[apt], recipe[curl], recipe[rvm::vagrant], recipe[rvm::user]]

添加行

vagrant ALL=(ALL:ALL) NOPASSWD: ALL 

不适用于我的场景。

我相信 apt chef recipe 运行 apt update 修复了旧版本和不匹配版本的问题。

我收到的错误消息是

Error executing action `install` on resource 'package[libxml2-dev]'
apt-get -q -y install libxml2-dev=2.7.8.dfsg-5.1ubuntu4.1 returned 100, expected 0
....
Error executing action `install` on resource 'rvm_ruby[2.1.1]'
于 2014-03-05T12:42:25.997 回答