在Raspberry Pi編譯與安裝最新版Node.js

Node.js是一個獨立的JavaScript執行環境(亦即,不在瀏覽器中執行的JavaScript),可以讓我們使用JavaScript程式語言開發應用程式,直接在Windows, Mac OS X和Linux/Unix等系統上執行。

Node.js

在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軟體一樣:

  1. 使用wget命令下載原始碼(壓縮檔)
  2. 解壓縮
  3. 切換到解壓縮檔案後的目錄
  4. 執行./configure設置編譯環境
  5. 執行make開始編譯
  6. 執行make install安裝編譯好的軟體

Node.js的所有版本都可以在https://nodejs.org/dist/路徑底下的各個子路徑取得,例如,v4.4.0版位在“latest-v4.x/”或“v4.4.0/ ”路徑底下:

https://nodejs.org/dist/路徑

此外,這個檔案路徑始終代表目前的最新版本:

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版,請在終端機視窗中依序執行下列命令:

在樹莓派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.js安裝套件

筆者把編譯好的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的版本:

查看Node.js和npm的版本

用一個簡單的HTTP伺服器程式測試看看:

確認能正常運作:

瀏覽器連結Node.js網站伺服器程式

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

改成底下的內容:

新增偏好設定檔:

sudo nano /etc/apt/preferences

在其中輸入:

更新套件清單:

sudo apt-get update

從Jessie資源庫安裝gcc/g++ 4.8:

sudo apt-get install -t jessie gcc-4.8 g++-4.8

若要移除gcc/g++ 替代軟體設置(如果有的話,預設是沒有),請執行:

安裝替代軟體(alternatives):

現在,4.8就變成預設的編譯器,你可以透過底下的命令確認:

sudo gcc --version

接著就可以嘗試編譯Node.js原始碼了。

假如要改變此設定,你可以執行:

4 thoughts on “在Raspberry Pi編譯與安裝最新版Node.js

  1. 老師請問一下
    我在輸入這邊的指令的時候
    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

    1. Node.js官網已經有提供事先編譯好的ARM版本,可直接給Raspberry Pi使用。例如,底下網址包含已編譯好的Node.js全部版本:

      https://nodejs.org/dist/

      例如,其中的”latest-v4.x”路徑代表「最新4.x版」,適用於Raspberry Pi的是檔名以armv71結尾的檔案。

      以下載、安裝4.7.2版為例,請在終端機視窗輸入下列命令(#號與後面的文字代表註解,不用輸入):

      最後,重新啟動樹莓派。

      thanks,
      jeffrey

發表迴響

你的電子郵件位址並不會被公開。 必要欄位標記為 *