使用vagrant + Berkshelf,我正在尝试将现有的VM更新为较新的git
版本。
Vagrantfile
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
# Every Vagrant virtual environment requires a box to build off of.
config.vm.box = "centos_64" # CentOS 6.5 box
config.vm.box_url = "https://github.com/2creatives/vagrant-centos/releases/download/v6.5.1/centos65-x86_64-20131205.box" # URL of the `centos_64` box
config.berkshelf.enabled = true # use Berkshelf
config.omnibus.chef_version = :latest # install chef
config.vm.provider "virtualbox" do |vb|
vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"] # speed up networking on guest
vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"] # ditto
vb.memory = 1024 # 1 GB RAM for guest VM
vb.customize ["modifyvm", :id, "--cpuexecutioncap", "75"] # 75% of CPU goes to host VM.
end
end
Berksfile
cookbook 'git', '>= 1.9.0'
请注意,我在创建VM后添加了版本约束。
但是,在运行vagrant reload --version
时,未对git
版本进行软件更新。
此外,销毁VM,然后运行vagrant up --provision
不会导致安装v 1.9.0(或更好)版本的git。
为什么?
答案 0 :(得分:1)
你错过了一个供应商:
config.vm.provision :chef_solo do |chef|
chef.add_recipe "git"
end
答案 1 :(得分:1)
如果你想安装git版本1.9.1,你需要在你的vagrant文件中有这样的东西:
config.vm.provision :chef_solo do |chef|
chef.json = {
"git" => {
"version" => "1.9.1",
"checksum" => "8e300c0b72c2738ca273c38ea9566d5326d554f8bb5f4d6aa40c87783edcd153"
}
}
chef.add_recipe "git::source"
end
版本是您要下载的git版本(这将变为“https://nodeload.github.com/git/git/tar.gz/v1.9.1
”)
校验和是下载文件的sha256sum以验证内容
chef.add_recipe“git :: source”将从源代码(上面的下载文件)安装git,而不是从yum或apt或者你的发行版使用的任何软件包管理器获取它。
Git 1.9.1将安装到/ usr / local但是如果你已经在/ usr / bin中安装了git,那么你可能需要先卸载它。