我使用Chef cookbook在我的Vagrant VM中安装Git。根据{{3}},食谱应该安装Git 2.8.1,但我得到的是Git 1.9.1。
使用Chef安装更新的Git版本的正确方法是什么?为了保持配置简单,我仍然想使用Cookbook。
到目前为止,这是我的配置:
Vagrantfile:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.berkshelf.enabled = true
config.vm.provision "chef_solo" do |chef|
chef.add_recipe "git"
end
end
metadata.rb:
name 'vagrant-example'
recipe 'git', 'Installs git'
Berksfile:
source "https://supermarket.chef.io"
metadata
cookbook "git"
Berksfile.lock:
DEPENDENCIES
git
vagrant-example
path: .
metadata: true
GRAPH
build-essential (6.0.3)
compat_resource (>= 12.10)
mingw (>= 1.1)
seven_zip (>= 0.0.0)
chef_handler (1.4.0)
compat_resource (12.10.7)
dmg (2.4.0)
git (4.6.0)
build-essential (>= 0.0.0)
dmg (>= 0.0.0)
windows (>= 0.0.0)
yum-epel (>= 0.0.0)
mingw (1.2.4)
compat_resource (>= 0.0.0)
seven_zip (>= 0.0.0)
seven_zip (2.0.1)
windows (>= 1.2.2)
vagrant-example (0.0.0)
windows (1.44.1)
chef_handler (>= 0.0.0)
yum (3.11.0)
yum-epel (0.7.0)
yum (>= 3.6.3)
来自Vagrant的输出:
==> default: Installing Cookbook Gems:
==> default: Compiling Cookbooks...
==> default: Converging 1 resources
==> default: Recipe: git::package
==> default:
==> default: * git_client[default] action install
==> default:
==> default: * apt_package[default :create git] action install
==> default: [2016-08-14T01:11:04+00:00] INFO: apt_package[default :create git] installed git at 1:1.9.1-1ubuntu0.3
==> default: - install version 1:1.9.1-1ubuntu0.3 of package git
==> default:
==> default:
==> default:
==> default:
==> default: [2016-08-14T01:11:04+00:00] INFO: Chef Run complete in 13.492574359 seconds
我甚至尝试在Vagrantfile中使用Chef属性指定版本,但它也不起作用:
Vagrant.configure("2") do |config|
config.vm.box = "ubuntu/trusty64"
config.berkshelf.enabled = true
config.vm.provision "chef_solo" do |chef|
chef.add_recipe "git"
chef.json = {
"git" => {
"version" => "2.8.1"
}
}
end
end
答案 0 :(得分:2)
git::default
配方从您的发行版软件包安装,对于Ubuntu Trusty是1.9.1。您可以使用git::source
配方强制它从可以安装任何版本的源代码编译。