【问题标题】:Installing NodeJS with Vagrant shell provisioner not working使用 Vagrant shell 配置器安装 NodeJS 不起作用
【发布时间】:2014-10-11 16:38:43
【问题描述】:

我正在尝试通过 Vagrant 和 shell 配置器安装 node.js 和一些包。

我发现了三种情况:

1- 简单的vagrant up 并在vagrant ssh 中手动引入命令

  • 这个工作完美,这就是为什么我不明白为什么接下来的两个案例没有

2- 从在 VagrantFile 中调用的 bootstrap.sh 安装,权限为:false

  • vagrant up 期间,所有内容都已安装(甚至显示“Now using node v0.11.14

  • 一旦进入 vagrant ssh 节点,nvm 和 npm 就在我的 vagrant 用户文件夹中,但无法识别 node 命令以及 npmnvm 已被识别,但 nvm ls 未列出任何内容。

3- 从 bootstrap.sh 安装,在 VagrantFile 中使用权限调用:true

  • vagrant up 期间,所有内容都已安装(甚至显示“Now using node v0.11.14

  • node、nvm 和 npm 安装在 /root 目录中。 node_modules 在 vagrant 用户目录下。

  • 找不到命令节点和 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

bootstrap.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,所以我有一个问题:如果您手动安装 nvm 和所有内容,然后注销(退出)并再次 ssh。它有效吗?我假设您必须将 ~/.nvm 添加到您的路径中。

标签: linux node.js ubuntu vagrant


【解决方案1】:

您需要将nvm use 0.11.14nvm alias default 0.11.14 添加到您的配置脚本中,以便nvm 在您运行npm 或node 命令时知道要使用哪个版本。

【讨论】:

    【解决方案2】:

    你只需要找到它在哪里,你总是有 $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 时,vagrant 有别名但没有权限)

    您可能需要 sudo - 无论如何,这对 npm 来说不是一个坏主意。我的配置(Vagrant+ansible)在大多数情况下使用 root。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多