我建议你回到 shell 配置策略,我也经历过这个,但绝对是可行的。经过大量谷歌搜索后,我发现您需要两个非常模糊的文档设置才能使其正常工作:
首先也是最重要的部分是,您需要在config.vm.provider
块上的这条线上启用在 VirtualBox 实例上创建符号链接,没有这个 NVM 就无法工作(看这里):
config.vm.provider "virtualbox" do |vb|
# (...)
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]
end
接下来,您必须将您的配置脚本分为两部分,一个将以 root 身份运行普通的 apt/git/whatever 东西......另一个将以默认的“vagrant”用户身份运行:
$rootScript = <<SCRIPT
# some rooty stuff (just don't forget to include git and curl here)
SCRIPT
## This is the script that will install nvm as the default 'vagrant' user
$userScript = <<SCRIPT
cd /home/vagrant
# Installing nvm
wget -qO- https://raw.github.com/creationix/nvm/master/install.sh | sh
# This enables NVM without a logout/login
export NVM_DIR="/home/vagrant/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
# Install a node and alias
nvm install 0.10.33
nvm alias default 0.10.33
# You can also install other stuff here
npm install -g bower ember-cli
SCRIPT
最后,您需要告诉 vagrant 仅使用用户权限运行第二个脚本(此处几乎完全没有记录):
config.vm.provision "shell", inline: $rootScript
config.vm.provision "shell", inline: $userScript, privileged: false
应该这样做。不漂亮,但它有效。
在这里查看这个工作要点,祝你好运!