Vagrant:使用Chef安装git

时间:2016-08-14 01:24:05

标签: git vagrant chef

我使用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

1 个答案:

答案 0 :(得分:2)

git::default配方从您的发行版软件包安装,对于Ubuntu Trusty是1.9.1。您可以使用git::source配方强制它从可以安装任何版本的源代码编译。