【问题标题】:Which Vagrant Ubuntu box to use in order to install latest Node.js?使用哪个 Vagrant Ubuntu 盒子来安装最新的 Node.js?
【发布时间】:2017-02-17 12:06:45
【问题描述】:

我尝试使用许多不同的 Vagrant Boxes,我发现了 here。我试过了:

  • hashicorp/precise64
  • ubuntu/trusty32
  • ubuntu/trusty64
  • ubuntu/xenial64

但是当我尝试安装最新的 Node.js (7.5) 时(我在 Installing Node.js via package manager 上找到了这个):

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -

我总是收到这样的错误:

当前不支持标识为“精确”的分发,如果您认为这不正确或希望考虑支持您的分发,请通过 https://github.com/nodesource/distributions/issues 联系 NodeSource

我还尝试为最新的 Ubuntu 服务器下载 ISO 映像并手动将其安装在 VirtualBox 中,在这种情况下,最新的 Node.js 安装工作正常。 我应该使用哪个 Vagrant Box?

另外,我使用带有 VirtualBox 的 Mac OS 来运行 Vagrant。

我的 Vagrant 配置文件:

Vagrant.configure(2) do |config|

    config.vm.box = "ubuntu/trusty64"
    config.vm.network :forwarded_port, guest: 80, host: 8080
    config.vm.network "forwarded_port", guest: 3306, host: 3309

end

【问题讨论】:

  • ubuntu/trusty64 可以工作 - 我同时使用 trusty 和 xenial 并且它们可以工作。你的 Vagrantfile 怎么样?
  • @FrédéricHenri 我更新了问题描述。

标签: node.js ubuntu vagrant virtualbox


【解决方案1】:

问题出在 Linux 的版本上,当我 ssh 到机器时,这还不够:

sudo apt-get update
sudo apt-get upgrade

我也必须这样做:

do-release-upgrade

在最新的 Node.js 安装顺利之后。

2018 年 1 月 5 日编辑

流浪文件:

Vagrant.configure(2) do |config|
    config.vm.box = "ubuntu/trusty64"
    config.vm.network :forwarded_port, guest: 80, host: 8000
    config.vm.provision :shell, :path => ".provision/bootstrap.sh"
end

.provision/bootstrap.sh:

#!/usr/bin/env bash

# update
sudo apt-get update
sudo apt-get -y upgrade

sudo apt-get -y install software-properties-common python-software-properties
sudo apt-get update

# install packages
sudo apt-get -y install curl git

# nginx
sudo apt-get -y install nginx
sudo service nginx start

# remove default nginx config
sudo rm /etc/nginx/sites-enabled/default

# set up nginx server
sudo cp /vagrant/.provision/nginx/nginx.conf /etc/nginx/sites-available/site.conf
sudo chmod 644 /etc/nginx/sites-available/site.conf
sudo ln -s /etc/nginx/sites-available/site.conf /etc/nginx/sites-enabled/site.conf
sudo service nginx restart

# clean /var/www
sudo rm -Rf /var/www

# symlink /var/www => /vagrant
sudo ln -s /vagrant /var/www

# Node
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

sudo apt-get install -y build-essential

nginx/nginx.conf:

server {
    listen 80;

    server_name todo.dev;
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;

    root   /var/www/dist;
    index index.html index.htm;

    location / {
        try_files $uri $uri/ /index.html;
    }

}

请记住,这是 node 6.x 的旧版本,但您可能只需将 bootstrap.sh 脚本中的 url 切换到新版本。我不再使用 Vagrant(而是现在使用 Docker),所以我不了解它。

【讨论】:

  • 哪个版本的nodejs?您能否添加完整的 vagrant 文件(或至少为节点添加框名称和配置脚本)
  • @epeleg 我更新了答案。您可能只需要更改此行 curl -sL deb.nodesource.com/setup_6.x | sudo -E bash - 在 boostrap.sh 脚本中安装最新的 node.js。
【解决方案2】:

以下对我有用并安装 nodejs

Vagrant.configure(2) do |config|

    config.vm.box = "ubuntu/trusty64"
    config.vm.network :forwarded_port, guest: 80, host: 8080
    config.vm.network "forwarded_port", guest: 3306, host: 3309

    config.vm.provision :shell, :inline => "curl -sL https://deb.nodesource.com/setup_7.x | bash - && apt-get -y install nodejs"

end

节点作为初始配置的一部分安装

vagrant@vagrant-ubuntu-trusty-64:~$ node --version
v7.5.0

【讨论】:

  • 我运行它,但我仍然有旧版本的 Node.js:v0.6.12
  • 奇怪...你能确保先销毁虚拟机! vagrant destroy && vagrant up
  • 我尝试了 10 多次。我同意这很奇怪。还有其他建议吗?
  • 我终于找到了解决问题的方法,但仍然感谢您的帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
  • 2018-09-28
  • 1970-01-01
  • 1970-01-01
  • 2017-08-18
  • 1970-01-01
相关资源
最近更新 更多