Sto utilizzando Vagrant + VirtualBox per configurare una macchina virtuale per la mia app Rails. Sto lavorando sulla pulizia uno script .sh
provisioning a cui fa riferimento Vagrantfile
in questo modo:Provisioning VM Vagrant/VirtualBox: rbenv installa correttamente ma gli usi successivi nello script falliscono
config.vm.provision "shell", path: "script/provision-script.sh"
Lo script disposizione fa un certo numero di cose, ma verso la fine si suppone di installare rbenv Rubino controllo delle versioni e quindi utilizzare rbenv installare Ruby 2.2.1. Quella parte dello script disposizione simile a questa:
echo "setting up rbenv"
# execute the remaining commands as vagrant user, instead of root
sudo -H -u vagrant bash -c "git clone https://github.com/sstephenson/rbenv.git ~vagrant/.rbenv"
sudo -H -u vagrant bash -c "git clone https://github.com/sstephenson/ruby-build.git ~vagrant/.rbenv/plugins/ruby-build"
sudo -H -u vagrant bash -c "git clone https://github.com/sstephenson/rbenv-gem-rehash.git ~vagrant/.rbenv/plugins/rbenv-gem-rehash"
echo "setting up rbenv environment in bash"
echo 'export PATH="$HOME/.rbenv/bin:$PATH"' >> ~vagrant/.bashrc
echo 'eval "$(rbenv init -)"' >> ~vagrant/.bashrc
# start new vagrant shell so rbenv will work
echo "building ruby"
su vagrant
rbenv install 2.2.1 && rbenv global 2.2.1 && rbenv rehash && cd /path/to/my/app && gem install bundler rake && rbenv rehash && bundle && rbenv rehash
Tutto fino alla parte rbenv install...
funziona correttamente. L'installazione di ruby non riesce con il seguente errore:
==> default: setting up rbenv
==> default: Cloning into '/home/vagrant/.rbenv'...
==> default: Cloning into '/home/vagrant/.rbenv/plugins/ruby-build'...
==> default: Cloning into '/home/vagrant/.rbenv/plugins/rbenv-gem-rehash'...
==> default: setting up rbenv environment in bash
==> default: building ruby
==> default: /tmp/vagrant-shell: line 73: rbenv: command not found
La sceneggiatura termina quindi. Posso aprire il VM con vagrant ssh
e quindi eseguire correttamente rbenv install 2.2.1
, quindi suppongo che durante il provisioning non venga effettivamente avviata una nuova shell vagabonda. Ho avuto l'impressione che ciò dovesse accadere con su vagrant
subito prima del rbenv install 2.2.1
.
Cosa posso fare per assicurarmi che una nuova shell sia inizializzata durante questo provisioning e che il comando rbenv
funzioni?
Si prega di considerare di contrassegnare la mia risposta come valida. Grazie –