Ubuntu (12.04/ 14.04/ 16.04) 安装 Node.js

本文将要介绍如何在Ubuntu (12.04/14.04/16.04)系统上通过不同的方法来安装日常开发中最常用的JavaScript运行环境Node.js。

什么是Node.js

Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。 Node.js 使用了一个事件驱动、非阻塞式 I/O 的模型,使其轻量又高效。 Node.js 的包管理器NPM,是全球最大的开源库生态系统。摘自 node中文站

通过Ubuntu默认的软件源安装Node.js

当ubuntu 系统安装完成后,其默认的软件源里会包含一个已经发布的Node.js 稳定版,我们可以通过apt-get命令来安装。 执行下面的命令:

$ sudo apt-get update
$sudo apt-get install nodejs

命令输出如下:

root@devops:~# apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
命中:2 http://mirrors.aliyun.com/ubuntu xenial-security InRelease
命中:3 http://mirrors.aliyun.com/ubuntu xenial-updates InRelease
命中:4 http://mirrors.aliyun.com/ubuntu xenial-proposed InRelease
命中:5 http://mirrors.aliyun.com/ubuntu xenial-backports InRelease
忽略:6 http://dl.google.com/linux/chrome/deb stable InRelease
命中:7 http://dl.google.com/linux/chrome/deb stable Release
命中:9 http://ppa.launchpad.net/ondrej/php/ubuntu xenial InRelease
忽略:10 http://archive.ubuntu.com/ubuntu trusty InRelease
命中:11 http://archive.ubuntu.com/ubuntu trusty Release
命中:12 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
正在读取软件包列表... 完成
root@devops:~# apt-get install nodejs
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
  linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
  linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
  libuv1
下列【新】软件包将被安装:
  libuv1 nodejs
升级了 0 个软件包,新安装了 2 个软件包,要卸载 0 个软件包,有 223 个软件包未被升级。
需要下载 3,221 kB 的归档。
解压缩后会消耗 13.4 MB 的额外空间。
您希望继续执行吗? [Y/n]

安装Node.js 包管理器NPM (Node package manager

在大多数情况下,我们还需要安装npm, 也就是Node.js 的包管理器, 执行下面的命令:

$sudo apt-get install npm

命令输出如下:

root@devops:~# apt-get install npm
正在读取软件包列表... 完成
正在分析软件包的依赖关系树
正在读取状态信息... 完成
下列软件包是自动安装的并且现在不需要了:
  java-common libappindicator1 libindicator7 linux-headers-4.10.0-28
  linux-headers-4.10.0-28-generic linux-image-4.10.0-28-generic
  linux-image-extra-4.10.0-28-generic
使用'apt autoremove'来卸载它(它们)。
将会同时安装下列软件:
......
node-tar node-tunnel-agent
  node-underscore node-which nodejs nodejs-dev
建议安装:
  node-hawk node-aws-sign node-oauth-sign node-http-signature
下列【新】软件包将被安装:
......
  node-tar node-tunnel-agent
  node-underscore node-which nodejs nodejs-dev npm
下列软件包将被升级:
  libssl1.1
升级了 1 个软件包,新安装了 59 个软件包,要卸载 0 个软件包,有 222 个软件包未被升级。
需要下载 10.4 MB 的归档。
解压缩后会消耗 42.1 MB 的额外空间。
您希望继续执行吗? [Y/n]

查看Node.js的版本号

当我们通过上面的默认软件源安装完成后,可以通过下面的命令来查看当前的node.js 的版本:

$nodejs –v

命令输出如下:

root@devops:~# nodejs -v
v4.2.6

查看NPM的版本号

执行下面的命令:

$npm –v

输出如下:

root@devops:~/node-v9.1.0# npm -v
5.5.1

 

通过PPA安装Node.js

你也可以通过添加PPA源到ubuntu系统里,之后再安装PPA源里提供的Node.js 软件包。

首先通过下面的命令添加PPA到系统里:

$  sudo apt-get install python-software-properties
$ curl -sL https://deb.nodesource.com/setup_9.x  -o setup_9.x
$ bash setup_9.x

该PPA源包含了最新的node.js版本V9

如果需要安装稳定版本的node.js, 可以添加下面的ppa源,执行命令:

$ sudo apt-get install python-software-properties
$ curl -sL https://deb.nodesource.com/setup_8.x   -o  setup_8.x命令输出如下:
$ bash setup_8.x

命令输出如下:

root@devops:~# bash setup_8.x
## Installing the NodeSource Node.js v8.x LTS Carbon repo...
## Ppulating apt-get cache...
+ apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
......
命中:13 http://ppa.launchpad.net/webupd8team/java/ubuntu xenial InRelease
正在读取软件包列表... 完成
## Confirming "xenial" is supported...
+ curl -sLf -o /dev/null 'https://deb.nodesource.com/node_8.x/dists/xenial/Relse'
## Adding the NodeSource signing key to your keyring...
+ curl -s https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
OK
## Creating apt sources list file for the NodeSource Node.js v8.x LTS Carbon ro...
+ echo 'deb https://deb.nodesource.com/node_8.x xenial main' > /etc/apt/sourcelist.d/nodesource.list
+ echo 'deb-src https://deb.nodesource.com/node_8.x xenial main' >> /etc/apt/srces.list.d/nodesource.list
## Running `apt-get update` for you...
+ apt-get update
命中:1 http://mirrors.aliyun.com/ubuntu xenial InRelease
......
获取:17 https://deb.nodesource.com/node_8.x xenial/main i386 Packages [1,002 B
已下载 7,415 B,耗时 6秒 (1,118 B/s)
正在读取软件包列表... 完成
## Run `apt-get install nodejs` (as root) to install Node.js v8.x LTS Carbon a npm

通过源码包安装Node.js

我们也可以通过从官方网站下载node.js 的源码包进行编译安装。

1# 下载node.js源码包

执行下面的命令:

$ wget https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz

命令输出如下:

root@devops:~# wget https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz
--2018-03-30 22:34:26--  https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz
正在解析主机 nodejs.org (nodejs.org)... 104.20.22.46, 104.20.23.46, 2400:cb00:2048:1::6814:162e, ...
正在连接 nodejs.org (nodejs.org)|104.20.22.46|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度: 30918002 (29M) [application/gzip]
正在保存至: “node-v9.1.0.tar.gz”
node-v9.1.0.tar.gz   71%[===========>      ]  21.03M  33.4KB/s    in 12m 12s
2018-03-30 22:46:40 (29.4 KB/s) - 在 22052617 字节处连接关闭。 重试中。
--2018-03-30 22:46:41--  (尝试次数: 2)  https://nodejs.org/dist/v9.1.0/node-v9.1.0.tar.gz
正在连接 nodejs.org (nodejs.org)|104.20.22.46|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 206 Partial Content
长度: 30918002 (29M),剩余 8865385 (8.5M) [application/gzip]
正在保存至: “node-v9.1.0.tar.gz”
node-v9.1.0.tar.gz  100%[++++++++++++=====>]  29.49M  26.3KB/s    in 5m 9s
2018-03-30 22:51:52 (28.0 KB/s) - 已保存 “node-v9.1.0.tar.gz” [30918002/30918002])

2# 解压缩刚才下载node.js源码包

执行命令:

#tar –zxvf node-v9.1.0.tar.gz

3# 进入解压后的目录 node-v9.10, 执行下面的命令:

#./configure
# make
# make install

命令输出如下:

root@devops:~/node-v9.1.0# ./configure
creating ./icu_config.gypi
* Using ICU in deps/icu-small
creating ./icu_config.gypi
{ 'target_defaults': { 'cflags': [],
'default_configuration': 'Release',
'defines': [],
'include_dirs': [],
'libraries': []},
'variables': { 'asan': 0,
'coverage': 'false',
'debug_devtools': 'node',
'debug_http2': 'false',
'debug_nghttp2': 'false',
'force_dynamic_crt': 0,
'gas_version': 0,
'host_arch': 'x64',
u_data_file': 'icudt59l.dat',
'icu_data_in': '../../deps/icu-small/source/data/in/icudt59                dat',
'icu_endianness': 'l',
'icu_gyp_path': 'tools/icu/icu-generic.gyp',
'icu_locales': 'en,root',
'icu_path': 'deps/icu-small',
'icu_small': 'true',
'icu_ver_major': '59',
'node_byteorder': 'little',
'node_enable_d8': 'false',
'node_enable_v8_vtunejit': 'false',
'node_install_npm': 'true',
'node_module_version': 59,
'node_no_browser_globals': 'false',
'node_prefix': '/usr/local',
'node_release_urlbase': '',
'node_shared': 'false',
'node_shared_cares': 'false',
'node_shared_http_parser': 'false',
'node_shared_libuv': 'false',
'node_shared_openssl': 'false',
'node_shared_zlib': 'false',
'node_tag': '',
'node_use_bundled_v8': 'true',
'node_use_dtrace': 'false',
'node_use_etw': 'false',
'node_use_lttng': 'false',
'node_use_openssl': 'true',
'node_use_perfctr': 'false',
'node_use_v8_platform': 'true',
'node_without_node_options': 'false',
'openssl_fips': '',
'openssl_no_asm': 0,
'shlib_suffix': 'so.59',
'target_arch': 'x64',
'uv_parent_path': '/deps/uv/',
'uv_use_dtrace': 'false',
'v8_enable_gdbjit': 0,
'v8_enable_i18n_support': 1,
'v8_enable_inspector': 1,
'v8_no_strict_aliasing': 1,
'v8_optimized_debug': 0,
'v8_promise_internal_field_count': 1,
'v8_random_seed': 0,
'v8_trace_maps': 0,
'v8_use_snapshot': 'true',
'want_separate_host_toolset': 0}}
creating ./config.gypi
creating ./config.mk

root@devops:~/node-v9.1.0# make
root@devops:~/node-v9.1.0# make install

4# 查看安装后的node.js版本

执行命令如下:

#node --version

命令输出:

root@devops:~/node-v9.1.0# node --version
v9.1.0

卸载Node.js

你可以通过执行apt-get 命令来删除之前安装好的node.js工具,执行命令:

#apt-get remove nodejs

该命令在删除软件包后,依旧会保持node.js的配置文件,这样当你以后再次要安装node.js软件包后,可以被重复使用。 当然如果你删除所有的跟node.js相关的文件,可以执行下面的删除node.js的命令:

# apt-get purge nodejs

通过node.js 测试js脚本

首先创建一个新的js脚本test.js, 将下面的脚本内容添加到文件里。

# vim test.js

var http = require('http');
http.createServer(function (req, res) {
res.writeHead(200, {'Content-Type': 'text/plain'});
res.end('Hello World\n');
}).listen(3000, "127.0.0.1");
console.log('Server running at http://127.0.0.1:5800/');

执行node命令启动应用:

#node test.js

输出:

root@devops:~/node-v9.1.0# node test.js
Server running at http://127.0.0.1:5800/

99%的人还阅读了:

Leave a Reply