Vagrant / VirtualBox-VM-Bereitstellung: rbenv wird erfolgreich installiert, nachfolgende Skriptverwendungen schlagen jedoch fehl.
Ich verwende Vagrant + VirtualBox, um eine virtuelle Maschine für meine Rails-App einzurichten. Ich arbeite daran, ein @ aufzuräum.sh
Provisioning-Skript, auf das in @ verwiesen wiVagrantfile
wie so:
config.vm.provision "shell", path: "script/provision-script.sh"
Das Bereitstellungsskript führt eine Reihe von Aufgaben aus, soll jedoch gegen Ende die Ruby-Versionierung von rbenv installieren und dann mit rbenv Ruby 2.2.1 installieren. Dieser Teil des Bereitstellungsskripts sieht folgendermaßen aus:
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
lles bis zumrbenv install...
Teil funktioniert richtig. Die Installation von ruby schlägt mit folgendem Fehler fehl:
==> 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
Das Skript wird dann beendet. Ich kann das vm mit @ öffnvagrant ssh
und dann erfolgreich ausführenrbenv install 2.2.1
, ich vermute also, dass während der Bereitstellung eine neue Vagrant-Shell nicht gestartet wird. Ich hatte den Eindruck, dass dies mit @ passieren sollsu vagrant
kurz bevorrbenv install 2.2.1
.
Was kann ich tun, um sicherzustellen, dass während dieser Bereitstellung eine neue Shell initialisiert wird und dasrbenv
Befehl wird funktionieren?