我正在尝试通过Vagrant和shell provisioner安装node.js和一些包。
我发现三种情况:
1-简单的vagrant up
,并在vagrant ssh
内手动引入命令一次
- 这一个效果很好,这就是为什么我不明白为什么接下来的两个案例没有
2-从bootstrap.sh以特权在VagrantFile中调用安装:false
-
在
vagrant up
期间,所有东西都已安装(它甚至显示"Now using node v0.11.14
" -
一旦进入
vagrant ssh
节点,nvm和npm就在我的流浪用户文件夹中,但node
命令和npm
都无法识别。CCD_ 8被识别,但CCD_。
3-从bootstrap.sh安装,在VagrantFile中调用权限:true
-
在
vagrant up
期间,所有东西都安装好了(它甚至说"Now using node v0.11.14
" -
node、nvm和npm安装在/root目录中。node_modules位于流浪用户目录中。
-
未找到命令节点和npm
这里是VagrantFile和bootstrap.sh 的内容
流浪者文件:
# -*- mode: ruby -*-
# vi: set ft=ruby :
# Vagrantfile API/syntax version. Don't touch unless you know what you're doing!
VAGRANTFILE_API_VERSION = "2"
Vagrant.configure(VAGRANTFILE_API_VERSION) do |config|
config.vm.box = "ubuntu/trusty64"
config.vm.network "forwarded_port", guest: 80, host: 8080
config.vm.network "forwarded_port", guest: 3306, host: 8081
config.vm.provision "shell", path: "bootstrap.sh", privileged: false
config.vm.synced_folder "Server", "/home/vagrant/Server"
end
引导程序.sh
#!/usr/bin/env bash
sudo apt-get update
sudo apt-get -y install build-essential libssl-dev
curl https://raw.githubusercontent.com/creationix/nvm/v0.17.2/install.sh | bash
source ~/.nvm/nvm.sh
nvm install 0.11.14
npm install express
npm install -g nodemon
谢谢!
您需要将nvm use 0.11.14
或nvm alias default 0.11.14
添加到您的配置脚本中,以便nvm在运行npm或node命令时知道要使用哪个版本。
你只需要找到它在哪里,你总是有$PATH:
$vagrant@box# echo $PATH
会给你一些类似的东西
/home/vagrant/.nvm/v0.10.18/bin:/usr/local/bin:/usr/bin:/bin
所以试试
$vagrant@box# sudo su
$root@box# /home/vagrant/.nvm/v0.10.18/bin/npm install -g qunit --save
(^^例如,当我安装qunit时,流浪者有别名,但没有权限)
你可能需要sudo——无论如何,这对npm来说都是个不错的主意。我的配置(Vagrant+ansible)在大多数情况下都使用root。