Este é um pequeno truque que uso para acelerar a instalação de pacotes nas caixas do Debian / Ubuntu no Vagrant .
Eu adiciono uma função simples que verifica se um diretório chamado algo semelhante a ~ / .vagrant.d / cache / apt / opscode-ubuntu-12.04 / partial (pode ter outro caminho no Windows ou MacOS) e crio o diretório se não já não existe.
def local_cache(box_name)
cache_dir = File.join( File.expand_path(Vagrant::Environment::DEFAULT_HOME),
'cache',
'apt',
box_name)
partial_dir = File.join(cache_dir, 'partial')
FileUtils.mkdir_p(partial_dir) unless File.exists? partial_dir
cache_dir
end
Coloquei essa função no meu Vagrantfile para que eu possa usar assim:
Vagrant::Config.run do |config|
config.vm.box = "opscode-ubuntu-12.04"
cache_dir = local_cache(config.vm.box)
config.vm.share_folder "v-cache",
"/var/cache/apt/archives/",
cache_dir
end
O resultado é que o cache apt dentro da VM ( / var / cache / apt / archives / ) é sempre montado no mesmo diretório do host ( ~ / .vagrant.d / cache / apt / opscode-ubuntu-12.04 / in neste caso) e apt basta baixar os pacotes na primeira vez ou se o pacote foi atualizado.
Isso me economiza muito tempo enquanto estou desenvolvendo ou depurando livros de receitas do Chef. Principalmente quando minhas receitas precisam instalar muitos pacotes.
O original (com melhor formato) está aqui: https://gist.github.com/3797297