使用Vagrant shell provisioner安装NodeJS不起作用



我正在尝试通过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.14nvm 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。

最新更新