尝试从fnichol/chef-rvm运行rvm::user
食谱时,我遇到了一些问题。我正在使用厨师和Vagrant盒子。 rvm安装得很好,但是每当厨师尝试安装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
1.22.11
59dc482
答案 0 :(得分:3)
事实证明,Vagrant在非交互式/非tty会话中运行厨师。 sudo
命令不喜欢在非交互式会话中运行,并且在尝试安装依赖项时导致rvm失败(通过ubuntu中的apt-get)。
您可以通过将此添加到/etc/sudoers
:
vagrant ALL= (ALL:ALL) NOPASSWD: ALL
我添加了这个后,厨师成功安装了rvm::user
食谱。
答案 1 :(得分:0)
我的设置要复杂得多,但错误是一样的。最终我发现添加适当的厨师食谱修复了一切。
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大厨配方运行apt更新,修复了旧版和不匹配版本的问题。
我收到的错误消息是
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]'