5 node.js vagrant ember.js nvm
我有各种各样的乐趣.
最初的问题是终端需要在安装NVM后重新启动,以便我可以使用.bashrc设置重新初始化然后安装NodeJS - 所以我的想法是我将构建一个已经安装了NVM的基本盒.这样终端就已经初始化了NVM的东西.
不是这样的......显然使用Vagrant包装一个basebox会忽略/ home/vagrant文件夹中的所有内容.ARRRRRRRGGGGHHHHH!
真的吗?!-1-酮
有人有运气吗?将NVM安装在流浪盒内?甚至没有sudo的NodeJ?这是一个可怕的兔子洞,我想出去!
小智 18
我建议你回到shell配置策略,我也已经通过这个地狱,但绝对可行.经过大量的谷歌搜索后,我发现有两个非常含糊的文档设置需要它才能工作:
首先,也是最重要的部分是你需要在你的config.vm.provider块上使用这一行在VirtualBox实例上创建符号链接,而这个NVM不会起作用(请看这里):
config.vm.provider "virtualbox" do |vb|
# (...)
vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]
end
Run Code Online (Sandbox Code Playgroud)
接下来,您必须将配置脚本分为两部分,一部分将以普通的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
Run Code Online (Sandbox Code Playgroud)
最后,您需要告诉vagrant仅使用用户权限运行第二个脚本(这里几乎完全没有记录):
config.vm.provision "shell", inline: $rootScript
config.vm.provision "shell", inline: $userScript, privileged: false
Run Code Online (Sandbox Code Playgroud)
那应该做.不漂亮,但它的工作原理.
看看这个工作要点,祝你好运!
| 归档时间: |
|
| 查看次数: |
2827 次 |
| 最近记录: |