本文並非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到樹莓派上。
解壓
tar xvzf node-v4.2.1-linux-armv7l.tar.gz
移動
mv node-v4.2.1-linux-armv7l /usr/local/bin
配置
為了讓node和npm命令在所有目錄都有效,要麼在已有的PATH路徑中建立node和npm的鏈接,要麼在PATH中加入node和npm所在的路徑。我選了鏈接的方案。
node鏈接
sudo ln /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。
sudo ln -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 $basedir
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
NODE_EXE="$basedir/node.exe"
if ! [ -x "$NODE_EXE" ]; then
NODE_EXE=node
fi
NPM_CLI_JS="$basedir/node_modules/npm/bin/npm-cli.js"
if ! [ -x "$NPM_CLI_JS" ]; then
NPM_CLI_JS=npm-cli.js
fi
case `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" ]; then
NPM_CLI_JS="$NPM_PREFIX_NPM_CLI_JS"
fi
;;
esac
"$NODE_EXE" "$NPM_CLI_JS" "$@"
確認起效
