Acabei de encontrar este caso de uso novamente; Eu farei um registro sucinto aqui de como eu lidei com isso.
Eu queria baixar (mas não instalar) o Git e o PostgreSQL, e depois instalá-los durante o processo de provisão do vagrant.
Eu usei o seguinte comando de uma VM nova para baixar os pacotes com todas as dependências (após sudo mkdir /vagrant/packages
):
sudo yumdownloader --destdir=/vagrant/packages/ --resolve -y git postgresql
O truque desse comando é que ele faz downloads demais. O próximo passo foi estabelecer os RPMs que eu realmente precisava para a instalação. Eu fiz isso tentando:
sudo yum install /vagrant/packages/git-1.7.1-4.el6_7.1.x86_64.rpm /vagrant/packages/postgresql-8.4.20-6.el6.x86_64.rpm
E pressionando "Não" no prompt de confirmação, porque pude ver que estava planejando fazer o download das dependências. Eu peguei as dependências listadas e as adicionei ao meu comando:
sudo yum install /vagrant/packages/git-1.7.1-4.el6_7.1.x86_64.rpm /vagrant/packages/postgresql-8.4.20-6.el6.x86_64.rpm /vagrant/packages/perl-* /vagrant/packages/postgresql-libs-8.4.20-6.el6.x86_64.rpm
Isso funcionaria com sucesso sem baixar nada, então eu corri:
cd /vagrant/packages/
mkdir save
mv /vagrant/packages/git-1.7.1-4.el6_7.1.x86_64.rpm /vagrant/packages/postgresql-8.4.20-6.el6.x86_64.rpm /vagrant/packages/perl-* /vagrant/packages/postgresql-libs-8.4.20-6.el6.x86_64.rpm save/
rm *.rpm
mv save/* .
rmdir save
Resultado: Um diretório "packages" com somente as dependências realmente necessárias da nova imagem do Vagrant.
Em seguida, adicione o comando shell provisioning ao meu Vagrantfile
:
config.vm.provision "shell", inline: <<-SHELL
yum install -C -y /vagrant/packages/*
SHELL
... Eu tenho o Git eo PostgreSQL instalados e prontos para uso depois de qualquer vagrant up
, mesmo se vagrant destroy
foi executado.