主要针对 Linux 非 root 用户,在没有 root 权限下如果安装及配置 NodeJS(注:这里安装的是官网上已经编译好的二进制包)。
首先,到 NodeJS 的官网(https://nodejs.org/en/download/)下载对应的已经编译好的二进制包。
这里以 CentOS7 32bit 为例,安装 NodeJS 的 LTS 版本:
1. 下载 Linux Binaries 64bit 版本:
curl -o node-v8.9.4-linux-x64.tar.xz https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.xz
2. 下载好的二进制压缩包解压至指定的安装目录(这里以~/tools/nodejs 为例)
mkdir -p ~/tools/nodejs
tar -xJf node-v8.9.4-linux-x64.tar.xz --no-wildcards-match-slash \
--anchored --exclude */CHANGELOG.md --exclude */LICENSE --exclude */README.md \
--strip 1 -C ~/tools/nodejs
注:如果出错并提示 xz: Cannot exec: No such file or directory,可能是未安装 xz 解压工具。
这里,你可以重新下载 gzip 格式的压缩包(https://nodejs.org/dist/v8.9.4/node-v8.9.4-linux-x64.tar.gz),然后将上面命令中的 -xJf 换成 -xzf
当然,也可以安装 xz ,如下:
# 没有xz这个命令,发现还需要按照这样一个工具包.于是,下了这样一个包http://tukaani.org/xz/ 要选择.bz2的,
# 别选.xz的,否则还是解压不了
# 这个包很容易解压
tar -jxvf xz-5.0.3.tar.bz2
# 解压后一定要进入解压后的文件目录输命令
cd xz-5.0.1
# 接下来大家一定都用这条命令
./configure --prefix=/usr/local/xz
# 然后就进行make了, 这样安装好后,就可以再次进入到存放xz解压工具的文件目录
# (普通用户)进行如下命令
cd xz-5.0.3/
./configure
make
make install
# 之后就可以愉快地解压tar.xz文件啦
3. 编辑 ~/.bash_profile 或者 ~/.profile,将~/tools/nodejs/bin 添加到环境变量 PATH 中:
export PATH="${PATH}:${HOME}/tools/nodejs/bin"
# 注1:如果配置文件中已经有了 PATH 变量,可以在其后面添加 ${HOME}/apps/bin。
# 注2:如果系统里已经安装了其他版本的 # node,可以将 ${HOME}/tools/nodejs/bin 放在 ${PATH} 的前面,
# 防止使用系统使用的版本,而不是需要安装的版本
4. 现在可以使用 source ~/.bash_profile 或 source ~/.profile(如果修改的是这个配置文件),使上面的修改生效。
这时,键入 node -v 如果可以看到刚刚安装的 node 的版本号,表明已经安装成功了。
5. 配置 npm,在 shell 中执行以下命令(如果输入 npm -v 可以看到 npm 的版本号,该步骤可忽略):
mkdir -p ~/tools/nodejs/etc
echo 'prefix = ${HOME}/tools/nodejs' > ~/tools/nodejs/etc/npmrc
6. 通过配置 npmrc 到当前用户下
如果系统已经安装了 NodeJS,在使用 npm -g 时,又不想使用 root 权限将 package 安装到 /usr 下面,可以通过配置 npmrc 到当前用户下。以安装到 ~/.npm_packages 下为例:
首先将以下内容添加到 ~/.npmrc 下:
echo 'prefix = ${HOME}/.npm_packages' > ~/.npmrc
然后将 ${HOME}/.npm_packages/bin 添加到环境变量 PATH 里,
export PATH="${PATH}:${HOME}/.npm_packages/bin"
当环境变量更新后,就可以使用 npm -g install <package> 将package 安装到 ~/.npm_packages/lib 下面了。
7. 安装gulp
npm install -g gulp
gulp -v
注意:若gulp –v不显示版本号,看nodejs是否配置了环境变量