Jimmy 的架站筆記

嗨~我是 Jimmy!我可能不是你認識的第 1 個 Jimmy,但一定是最帥的那個。


Linux Node.js 的升級與安裝

By Jimmy 2024-06-03
發表於 devops linux
Linux Node.js 的升級與安裝

最近在處理公司產品的套件升級,發現滿多套件都依賴 Node.js,需要先升級機器的 Node.js 才能進行後續的處理,這篇文章就以 Ubuntu 為例,筆記一下在 Linux 中升級 Node.js 的方法。

如果擔心直接升級機器的 Node.js 的話,我滿推薦先用 OrbStack 在自己的電腦開 Linux 的 VM 來做一些測試。(OrbStack 是 mac 用來開發 docker container 以及啟用 VM 的好工具!)

延伸閱讀:Docker Desktop 殺手 – OrbStack 教學

1. 使用 nodesource 來安裝

nodesource 有在維護各種版本的 Node.js,方便開發人員在不同的 linux 作業系統上安裝。使用這個方法的好處是,Linux 只會有一種版本的 Node.js。

以下以 ubuntu 為例,將 Node.js 從 16 版升到 18 版。

1.1 確認目前使用的 Node.js 版本

$ node -v
v16.20.2

1.2 下載設定指令

nodesource 提供了安裝前設定 Node.js 的 shell script,可以直接用 curl 下載到 local

(如果要安裝的 Node.js 版本是 20 的話,只需要把 setup_ 後面的 18 改成 20 即可)

$ curl -sL <https://deb.nodesource.com/setup_18.x> -o /tmp/nodesource_setup.sh

1.3 執行設定指令

執行剛剛下載下來的 shell script,會先安裝 Node.js 相依的 package

$ sudo bash /tmp/nodesource_setup.sh

1.4 安裝欲升級的 Node.js

$ sudo apt install nodejs

1.5 確認安裝後的 Node.js 版本

$ node -v
v18.20.3

可以看到,使用 nodesource 提供的 script 可以說是無痛升級,還可以維持 linux 中只有一個版本的 Node.js,可說是皆大歡喜。

1.6 解除安裝 Node.js

如果用這個方法安裝 Node.js 的話,要解除安裝也很簡單,直接用 apt remove 即可

$ sudo apt remove nodejs

$ node -v
-bash: node: command not found

2. 使用 nvm

nvm (Node Version Manager) 是許多開發者在 local 會使用的軟體,由於 local 上不同 repo 的 Node.js 可能不同,因此使用 nvm 可以快速切換 Node.js 的版本,不過在 Linux 上通常不太會用到不同版的 Node.j,因此個人比較頃向使用第一個方法,但這裡還是整理一下使用 nvm 來安裝 Node.js 的筆記。

2.1 安裝 nvm

$ curl -o- <https://raw.githubusercontent.com/nvm-sh/nvm/v0.39.7/install.sh> | bash

2.2 reload bashrc

安裝完 nvm 後,會自動更新 bashrc 檔,因此會需要 reload bashrc(如果是用 zsh 就是 reload zshrc 檔)

$ source ~/.bashrc

2.3 使用 nvm 安裝 Node.js

可以直接用 nvm 來安裝 Node.js,假設目前想安裝 18 版的 Node.js:

$ nvm install 18

nvm 會直接安裝 18 版的 LTS (Long-term support) 版本

2.4 設定 nvm 預設使用的 Node.js 版本

就像前面提到的,nvm 通常用來管理多版本的 Node.js,因此也可以設定要預設的 Node.js 版本

$ nvm alias default 18

這樣就會預設全域使用 18 版的 Node.js

2.5 nvm 常用指令

最後提供一下 nvm 常用的相關指令:

# 找到 .nvmrc,並使用該內容的版本
$ nvm use

# 用大版號的 lts 版本
$ nvm use [nodejs_version] --lts

# 安裝大版號的 lts 版本
$ nvm install 18

# 解除安裝某個 Node.js 版本
$ nvm uninstall [nodejs_version]

# 設定全域的 node 版本
$ nvm alias default 18

# 列出 local 有安裝的 nodejs 版本
# nvm 目前預設的版本
# 各大版號目前的 lts 版本
$ nvm list

2.6 解除安裝 nvm

2.6.1 移除 nvm 相關的檔案

$ rm -rf ~/.nvm
$ rm -rf ~/.npm

2.6.2 移除 bashrc 裡 nvm 相關的 config

# ~/.bashrc
# 移除以下三行
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

3. 參考資料

How To Install Node.js on Ubuntu 20.04
How to uninstall nvm? · Issue #298


你可能也會喜歡

網站圖片的救星 - Cloudflare Images & Cloudflare Polish

網站圖片的救星 - Cloudflare Images & Cloudflare Polish

不知道大家是不是跟我有一樣的問題,在處理網站的圖片時,希望可以根據使用者瀏覽器支援圖片的檔案種類來回傳支援度最高的圖片格式,ex: 使用者使用最新版本的 chrome 瀏覽器,最高支援的圖片檔案格式為 avif 檔,那我就希望 server 可以回傳圖片的 avif 檔給使用者。之前在閱讀 這本書才發現,HTML 的 picture tag 可以支援不同的圖片格式,當瀏覽器不支援指定的圖片格式時,

Read More