本文并非node的编译安装,据说这要花很长时间,所以一开始我就是拒绝的。本文展示的是如何部署ndoe的编译好的执行文件。
node的官网上下载目录里本身就有针对arm的编译好的执行文件。地址在这里:https://nodejs.org/dist/v4.2.1/
选择合适的版本
下载合适的版本弄到树莓派上,合适版本的选择是这样的:SSH登录上树莓派,控制台就会显示相关的信息:
看到上面第4行文字(空行忽略)最后的单词了没armv71,完美匹配。
如果你是有显示设备直连树莓派的,那么你也可以通过在终端窗口里输入
uname-a
来显示系统信息
你也可以找到相关的系统架构信息armv71
选版本的信息我暂时只能提供这么两种,另外,我的硬件是树莓派2代B型(E14),如果是一样的硬件,就直接选择armv71版就好了,好了选好版本,就可以下载了。
下载https://nodejs.org/dist/v4.2.1/node-v4.2.1-linux-armv7l.tar.gz
或者自己用PC下好,sftp到树莓派上。
解压tarxvzf node-v4.2.1-linux-armv7l.tar.gz
移动mvnode-v4.2.1-linux-armv7l /usr/local/bin
配置为了让node和npm命令在所有目录都有效,要么在已有的PATH路径中建立node和npm的链接,要么在PATH中加入node和npm所在的路径。我选了链接的方案。
node链接sudoln/usr/local/bin/node-v4.2.1-linux-armv71/bin/node /usr/local/bin/node
npm链接node-v4.2.1-linux-armv71/bin目录里的npm默认是软链到node-v4.2.1-linux-armv71/lib/node_modules/npm/bin/npm-cli.js由于加载路径和当前工作目录的问题,直接硬链或软链都会有问题,二在node-v4.2.1-linux-armv71/lib/node_modules/npm/bin/目录里面还有一个名为npm的bash脚本,就链这个npm。
sudoln-s /usr/local/bin/node-v4.2.1-linux-armv71/lib/node_modules/npm/bin/npm /usr/local/bin/npm
尝试npm -v发现出错了,说是找不到npmlog模块,又是工作目录的问题。
打开这个脚本,发现这个脚本稍加改造就可以胜任要求。
贴上修改后的文件内容:
#!/bin/sh(set-o igncr)2>/dev/null&& set -o igncr; # cygwin encoding fix
basedir=$(dirname`readlink-f $0`)
cd $basedircase`uname`in*CYGWIN*) basedir=`cygpath -w"$basedir"`;;esacNODE_EXE="$basedir/node.exe"if! [ -x"$NODE_EXE"];thenNODE_EXE=nodefiNPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js"if! [ -x"$NPM_CLI_JS"];thenNPM_CLI_JS=npm-cli.jsficase`uname`in*CYGWIN*)
NPM_PREFIX=`"$NODE_EXE""$NPM_CLI_JS"prefix -g`
NPM_PREFIX_NPM_CLI_JS="$NPM_PREFIX/node_modules/npm/bin/npm-cli.js"if[ -f"$NPM_PREFIX_NPM_CLI_JS"];thenNPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS"fi;;esac"$NODE_EXE""$NPM_CLI_JS""$@"
确认起效