【问题标题】:Installing NVM / NodeJs / EmberJS inside a Vagrant box在 Vagrant 框中安装 NVM / NodeJs / EmberJS
【发布时间】:2014-11-25 08:59:47
【问题描述】:

我从中获得了各种乐趣。

最初的问题是安装 NVM 后需要重新启动终端,以便我可以使用 .bashrc 设置重新初始化,然后安装 NodeJS - 所以我的想法是我会构建一个已经安装了 NVM 的基础盒。这样终端就已经用 NVM 的东西初始化了。

不是这样...显然使用 Vagrant 打包 basebox 会忽略 /home/vagrant 文件夹中的所有内容。啊啊啊啊啊啊!!

真的吗?!!1个

有没有人遇到过这种情况?将 NVM 安装在 vagrant box 中?甚至没有 sudo 的 NodeJs?这是一个可怕的兔子洞自动取款机,我想出去!

【问题讨论】:

  • 你能分享你的 Vagrantfile 吗?
  • 我们在 Vagrant 盒子中运行了 nodejs/ember-cli,但无法让 livereload 工作,所以我们放弃了 Vagrant,只在本地运行,livereload 太重要了!
  • 我想通了。在密封基础盒之前,您需要安装和配置 NVM/NPM 和 ember。对于 livereload,您应该使用 NFS 并增加操作系统的观看次数 :) 我会尝试在博客上写下我的经验并报告

标签: node.js ember.js vagrant nvm


【解决方案1】:

我建议你回到 shell 配置策略,我也经历过这个,但绝对是可行的。 经过大量谷歌搜索后,我发现您需要两个非常模糊的文档设置才能使其正常工作:

首先,最重要的部分是您需要在您的 config.vm.provider 块上使用这一行启用在 VirtualBox 实例上创建符号链接,没有这个 NVM 就无法工作(看在here):

config.vm.provider "virtualbox" do |vb|

  # (...)

  vb.customize ["setextradata", :id, "VBoxInternal2/SharedFoldersEnableSymlinksCreate/vagrant","1"]
end

接下来,您必须将您的配置脚本分成两部分,一部分将以 root 身份运行普通的 apt/git/whatever 内容...另一部分将以默认的 '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,祝你好运!

【讨论】:

  • 嘿!谢谢你 - 我最终只是构建了一个安装了所有内容的basebox。我确实尝试过类似的 privileged: false - 但永远不会得到 setextradata 部分!我会尝试这个解决方案 - 我不敢相信它这么忙!
  • 您是否有机会测试此设置?我在使用 node-sass 时遇到了一些问题,但我不确定它们是否与 Vagrant Box 配置有关。
  • 希望我能对此投票 100 次。谢谢!这变得非常令人沮丧。
猜你喜欢
  • 1970-01-01
  • 2021-08-10
  • 2015-04-29
  • 1970-01-01
  • 1970-01-01
  • 2016-02-17
  • 1970-01-01
  • 2014-11-12
  • 1970-01-01
相关资源
最近更新 更多