我有各种各样的乐趣。
最初的问题是终端需要在安装NVM后重新启动,以便我可以使用.bashrc设置重新初始化然后安装NodeJS - 所以我的想法是我将构建一个已经安装了NVM的基本盒。这样终端就已经初始化了NVM的东西。
不是这样的......显然使用Vagrant包装一个basebox会忽略/ home / vagrant文件夹中的所有内容。 ARRRRRRRGGGGHHHHH !!
真的?!! -1-酮
有人有运气吗?将NVM安装在流浪盒内?甚至没有sudo的NodeJ?这是一个可怕的兔子洞,我想出去!
答案 0 :(得分:16)
我建议你回到shell配置策略,我也用这个策略搞砸了,但绝对可行。 经过大量的谷歌搜索后,我发现有两个非常含糊的文档设置需要它才能工作:
首先,最重要的部分是您需要在config.vm.provider
块上使用此行在VirtualBox实例上创建符号链接,而此NVM不会起作用(查看here):
config.vm.provider "virtualbox" do |vb|
# (...)
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]
end
接下来,您必须将您的配置脚本分为两部分,一部分将以普通的apt / git /以root身份运行任何东西......另一部分将作为默认的'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仅使用用户权限运行第二个脚本(几乎完全没有文档here):
config.vm.provision "shell", inline: $rootScript
config.vm.provision "shell", inline: $userScript, privileged: false
应该这样做。不漂亮,但它有效。
在这里查看此working gist,祝你好运!