Node.js是一個獨立的JavaScript執行環境(亦即,不在瀏覽器中執行的JavaScript),可以讓我們使用JavaScript程式語言開發應用程式,直接在Windows, Mac OS X和Linux/Unix等系統上執行。
在Raspbian Wheezy系統使用apt-get命令安裝Node.js(例如:sudo apt-get install nodejs),將會安裝0.6版本,Raspbian Jessie系統內建的是0.10.29版,跟目前最新5.8.0版差距不小(註:在經過Node.js和io.js陣營鬧分家又合併事件之後,Node.js從0.12.x版直接躍升到4.x版)。
在Raspbian Jessie系統上編譯新版Node.js
在Jessie系統上編譯Node.js原始碼的步驟,跟其他Linux軟體一樣:
- 使用wget命令下載原始碼(壓縮檔)
- 解壓縮
- 切換到解壓縮檔案後的目錄
- 執行./configure設置編譯環境
- 執行make開始編譯
- 執行make install安裝編譯好的軟體
Node.js的所有版本都可以在https://nodejs.org/dist/路徑底下的各個子路徑取得,例如,v4.4.0版位在“latest-v4.x/”或“v4.4.0/ ”路徑底下:
此外,這個檔案路徑始終代表目前的最新版本:
https://nodejs.org/dist/node-latest.tar.gz
Node.js官網目前建議大眾使用的版本是4.4.0,想嘗試新功能的人可安裝5.8.0版(具體的新增功能請參閱Node.js官網的What You Should Know about Node.js v5 and More)。
假設要編譯5.8.0版,請在終端機視窗中依序執行下列命令:
wget https://nodejs.org/dist/v5.8.0/node-v5.8.0.tar.gz tar -xvzf node-v5.8.0.tar.gz cd node-v5.8.0 ./configure make
在樹莓派2代和3代,make命令後面可以附加-j 4參數,代表使用四核心進行編譯,加快編譯速度(但仍需花費數十分鐘):
make -j 4
編譯完成之後,可用管理員身份執行make install命令安裝Node.js:
sudo make install
或者,先把編譯完成的檔案封裝成一個套件包(.deb檔),再透過.deb檔安裝也行。安裝新版Node.js之前,你可能需要先執行底下的命令,刪除系統預先安裝的Node.js:
sudo apt-get remove nodejs
製作、下載與安裝Node.js的Debian套件包(.deb檔)
Debian是一種Linux作業系統發行版本,它的軟體安裝套件的檔案格式為.deb;Raspbian是基於Debian系統的樹莓派硬體最佳化版本,所以也能使用.deb檔案安裝軟體。
程式原始碼編譯完成(亦即,成功執行make命令)之後,若想要佈署在其他樹莓派或者分享給他人使用,可透過checkinstall工具程式建立.deb格式的套件包(詳細說明請參閱IBM 中国软件开发中心的「Linux的源码安装工具CheckInstall」文章)。
請先安裝checkinstall:
sudo apt-get install checkinstall
接著,在上一節的node-v5.8.0路徑裡面,以管理員身份執行checkinstall命令(後面的參數代表封裝完畢後先不要安裝,以及設定此套件包的版本編號):
sudo checkinstall --install=no --pkgversion 5.8.0
等待一段時間之後(註:進行封裝之前,它大概會詢問三個問題,直接按下Enter鍵採用預設值即可),它將在node-v5.8.0目錄當中建立一個node_5.8.0-1_armhf.deb檔,檔名裡的armhf代表它是一種ARM處理器的二進位檔(可執行檔)。
筆者把編譯好的node_4.4.0-1_armhf.deb和node_5.8.0-1_armhf.deb檔存放在Google雲端磁碟,不想花費數十分鐘編譯的朋友可直接下載到樹莓派,並在下載路徑中執行dpkg命令安裝Node.js:
sudo dpkg -i node_5.8.0-1_armhf.deb
測試Node.js
安裝完畢後,可先執行底下的命令查看Node.js和npm的版本:
用一個簡單的HTTP伺服器程式測試看看:
const http = require('http'); const port = 8080; http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/html' }); res.end('<h1>Hello World</h1>'); }).listen(port, () => { console.log('本機網站伺服器在 ${port} 埠啟動了!'); });
確認能正常運作:
Raspbian Wheezy系統上安裝GCC 4.8
本節內容摘譯自Andy Felong先生的這篇貼文:Node.js v4 & v5 on Raspberry Pi 2。在Raspbian Wheezy系統上編譯新版的Node.js,需要將gcc/g++編譯器升級到4.8版。
先使用nano編輯軟體來源清單:
sudo nano /etc/apt/sources.list
改成底下的內容:
deb http://mirrordirector.raspbian.org/raspbian/ wheezy main contrib non-free rpi deb http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi # Source repository to add deb-src http://archive.raspbian.org/raspbian wheezy main contrib non-free rpi deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi deb http://archive.raspbian.org/raspbian jessie main contrib non-free rpi # Source repository to add deb-src http://archive.raspbian.org/raspbian jessie main contrib non-free rpi
新增偏好設定檔:
sudo nano /etc/apt/preferences
在其中輸入:
Package: * Pin: release n=wheezy Pin-Priority: 900 Package: * Pin: release n=jessie Pin-Priority: 300 Package: * Pin: release o=Raspbian Pin-Priority: -10
更新套件清單:
sudo apt-get update
從Jessie資源庫安裝gcc/g++ 4.8:
sudo apt-get install -t jessie gcc-4.8 g++-4.8
若要移除gcc/g++ 替代軟體設置(如果有的話,預設是沒有),請執行:
sudo update-alternatives --remove-all gcc sudo update-alternatives --remove-all g++
安裝替代軟體(alternatives):
sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20 sudo update-alternatives --install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.6 20 sudo update-alternatives --install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
現在,4.8就變成預設的編譯器,你可以透過底下的命令確認:
sudo gcc --version
接著就可以嘗試編譯Node.js原始碼了。
假如要改變此設定,你可以執行:
sudo update-alternatives --config gcc sudo update-alternatives --config g++
node.js 有出三個 ARM的版本,測試後可以 Raspberry PI B/2B+/3 使用
https://nodejs.org/en/download/current/
直接解開來就可以用了~
感謝告知!
thanks,
jeffrey
老師請問一下
我在輸入這邊的指令的時候
sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.6 20
sudo update-alternatives –install /usr/bin/gcc gcc /usr/bin/gcc-4.8 50
sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.6 20
sudo update-alternatives –install /usr/bin/g++ g++ /usr/bin/g++-4.8 50
出現 update-alternatives :–install 要有
use ‘ update-alternatives–help’ for program usage information
在做上面的步驟都可以但是這邊發現問題
我是使用pi3
Node.js官網已經有提供事先編譯好的ARM版本,可直接給Raspberry Pi使用。例如,底下網址包含已編譯好的Node.js全部版本:
https://nodejs.org/dist/
例如,其中的”latest-v4.x”路徑代表「最新4.x版」,適用於Raspberry Pi的是檔名以armv71結尾的檔案。
以下載、安裝4.7.2版為例,請在終端機視窗輸入下列命令(#號與後面的文字代表註解,不用輸入):
最後,重新啟動樹莓派。
thanks,
jeffrey
CUBIE的留言很有用. 已成功由4.8轉成8.8版本.
另外, 如要跟CUBIE的安裝方法, 請先行解裝現有版本, 例如:-
sudo apt-get remove nodejs 及 sudo apt autoremove
感謝Teddy的補充說明!
thanks,
jeffrey