Ubuntu 安裝 Node.js 的正確姿勢(shì)

若要直接查看安裝 Node.js 的正確姿勢(shì)抽莱,請(qǐng)拉到文章最后一節(jié)。

安裝 Node

一般情況下可婶,你第一次安裝會(huì)這樣:

首先到 Node.js 官網(wǎng)下載壓縮包泼舱。下載得到 node-vXxx.tar.xz,然后解壓到 /opt/(適用于共享用戶)或 /usr/local/(適用于用戶個(gè)人資料)裕循。以 /opt/ 為例:

$ cd ~/Download
$ tar -xvf node-v10.16.3-linux-x64.tar.xz
$ sudo mv node-v10.16.3-linux-x64 /opt/node

然后將 /opt/node/bin 添加到 PATH 環(huán)境變量中臣嚣,這樣就可以從任意終端中執(zhí)行 npm 命令了净刮。確保環(huán)境變量生效可以執(zhí)行命令看是否可以查看 node 版本。

$ node -v

這種安裝方式的問(wèn)題在于要更新 Node.js 版本時(shí)硅则,要再次手動(dòng)下載壓縮包淹父,替換掉原安裝路徑的內(nèi)容,并且不小心的話會(huì)把已下載的全局 lib 給替換沒(méi)了怎虫。

于是暑认,你在官網(wǎng)上仔細(xì)查看,發(fā)現(xiàn)了 Installing Node.js via package manager大审,頓時(shí)感覺(jué)這包管理器安裝才是正經(jīng)辦法蘸际。

第二次安裝循著指引:

Debian and Ubuntu based Linux distributions, Enterprise Linux/Fedora and Snap packages

Official Node.js binary distributions are provided by NodeSource.

然后根據(jù)指導(dǎo)進(jìn)行安裝:

# Using Ubuntu
$ curl -sL https://deb.nodesource.com/setup_13.x | sudo -E bash -
$ sudo apt-get install -y nodejs

這種安裝方式下,升級(jí)不用手動(dòng)下載替換了徒扶,可以使用一個(gè) npm 模塊 n 來(lái)升級(jí)粮彤,可以參見(jiàn):升級(jí)node.js和npm。這里不具體展開(kāi)姜骡,因?yàn)樵谶@之前就有另外的問(wèn)題讓你頭疼导坟。

問(wèn)題

無(wú)法下載

你安裝好 Node.js 之后,準(zhǔn)備安裝一個(gè)包圈澈,常因?yàn)榫W(wǎng)絡(luò)原因遲遲無(wú)法完成下載惫周。這時(shí)候,你需要淘寶 NPM 鏡像康栈,使用方法很簡(jiǎn)單:

  • 可以使用定制的 cnpm (gzip 壓縮支持) 命令行工具代替默認(rèn)的 npm:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
  • 或者直接通過(guò)添加 npm 參數(shù) alias 一個(gè)新命令:
alias cnpm="npm --registry=https://registry.npm.taobao.org \
--cache=$HOME/.npm/.cache/cnpm \
--disturl=https://npm.taobao.org/dist \
--userconfig=$HOME/.cnpmrc"

# Or alias it in .bashrc or .zshrc
$ echo '\n#alias for cnpm\nalias cnpm="npm --registry=https://registry.npm.taobao.org \
  --cache=$HOME/.npm/.cache/cnpm \
  --disturl=https://npm.taobao.org/dist \
  --userconfig=$HOME/.cnpmrc"' >> ~/.zshrc && source ~/.zshrc

提示無(wú)權(quán)限

npm 可以把包安裝到全局目錄闯两,也可以安裝到本地本地,常用的工具類的包通常是在命令行中作為命令使用谅将,如果不安裝到全局目錄則在執(zhí)行命令時(shí)要加上命令的路徑,很不方便重慢。

當(dāng)你嘗試全局安裝某個(gè)包的時(shí)候饥臂,等待許久最終卻看到 EACCES 錯(cuò)誤,提示你沒(méi)有權(quán)限寫入用于存儲(chǔ)全局包和命令的目錄似踱,真是令人崩潰隅熙。

兩種解決辦法,一種是修改全局目錄為當(dāng)前用戶有權(quán)限的目錄核芽,具體可參考:更改npm全局包安裝目錄的解決方案囚戚。

另一種則是既然沒(méi)有權(quán)限,那加上 sudo 來(lái)執(zhí)行吧:

$ sudo npm install -g xxxxx
sudo: npm:command not found

會(huì)提示找不到命令轧简,需要參考《[譯] sudo后使用別名》進(jìn)行修改:

$ alias sudo='sudo '

這樣就可以了驰坊,但每次安裝都要 sudo 其實(shí)并不愉快。事實(shí)上哮独,我們一開(kāi)始就可以選擇更合適的 Node.js 的安裝方法拳芙。

NVM

NVM: 全稱是 Node Version Manager, 也就是 Node 版本管理器察藐。

如果你已經(jīng)安裝過(guò)了 Node,最好先把原來(lái)的卸載舟扎。

1. 卸載 Node, 可能需要 root 權(quán)限.

$ sudo apt-get remove nodejs

2. 移除你之前的全局 node_modules 包.

#執(zhí)行前請(qǐng)確認(rèn)這個(gè)包是否存在這個(gè)位置
$ sudo rm -rf /usr/lib/node_moudles

3. 安裝 NVM

查看 NVM 的 Github 倉(cāng)庫(kù)

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

然后設(shè)置環(huán)境變量:

$ export NVM_DIR="$([ -z "${XDG_CONFIG_HOME-}" ] && printf %s "${HOME}/.nvm" || printf %s "${XDG_CONFIG_HOME}/nvm")"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm

4. 使用 NVM

# 將安裝最新版本
$ nvm install node
# 列出可安裝版本分飞,選擇安裝某一版本
$ nvm list
$ nvm install 12.14.1 # or 10.10.0, 8.9.1, etc

NVM 最大的好處就是你可以安裝多個(gè)版本的 node 到你的系統(tǒng)里,直接一條命令就可以切換版本睹限。

$ nvm use v13.6.0

更多的使用說(shuō)明可直接查看 Github 倉(cāng)庫(kù)的 README 文檔譬猫。

現(xiàn)在查看使用 NVM 下載的 node 命令的目錄:

$ where node
/home/mupceet/.nvm/versions/node/v13.6.0/bin/node

可以看到現(xiàn)在使用的目錄都是在 Home 目錄下,權(quán)限問(wèn)題也就不成問(wèn)題了羡疗,再加上淘寶 NPM 鏡像染服,體驗(yàn)上就很舒服了。

參考鏈接

  1. Node.js 官網(wǎng)
  2. 升級(jí)node.js和npm
  3. 淘寶 NPM 鏡像
  4. 更改npm全局包安裝目錄的解決方案
  5. [譯] sudo后使用別名
  6. ubuntu中npm安裝全局插件提示沒(méi)有root管理員權(quán)限
  7. nvm-sh/nvm

原創(chuàng)文章來(lái)自個(gè)人博客 Mupceet

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末顺囊,一起剝皮案震驚了整個(gè)濱河市肌索,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌特碳,老刑警劉巖诚亚,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異午乓,居然都是意外死亡站宗,警方通過(guò)查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門益愈,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)梢灭,“玉大人,你說(shuō)我怎么就攤上這事蒸其∶羰停” “怎么了?”我有些...
    開(kāi)封第一講書人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵摸袁,是天一觀的道長(zhǎng)钥顽。 經(jīng)常有香客問(wèn)我,道長(zhǎng)靠汁,這世上最難降的妖魔是什么蜂大? 我笑而不...
    開(kāi)封第一講書人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮蝶怔,結(jié)果婚禮上奶浦,老公的妹妹穿的比我還像新娘。我一直安慰自己踢星,他們只是感情好澳叉,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著,像睡著了一般耳高。 火紅的嫁衣襯著肌膚如雪扎瓶。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書人閱讀 51,688評(píng)論 1 305
  • 那天泌枪,我揣著相機(jī)與錄音概荷,去河邊找鬼。 笑死碌燕,一個(gè)胖子當(dāng)著我的面吹牛误证,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播修壕,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼愈捅,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了慈鸠?” 一聲冷哼從身側(cè)響起蓝谨,我...
    開(kāi)封第一講書人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎青团,沒(méi)想到半個(gè)月后譬巫,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡督笆,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年芦昔,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片娃肿。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咕缎,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出料扰,到底是詐尸還是另有隱情凭豪,我是刑警寧澤,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布晒杈,位于F島的核電站墅诡,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏桐智。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一烟馅、第九天 我趴在偏房一處隱蔽的房頂上張望说庭。 院中可真熱鬧,春花似錦郑趁、人聲如沸刊驴。這莊子的主人今日做“春日...
    開(kāi)封第一講書人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)捆憎。三九已至舅柜,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間躲惰,已是汗流浹背致份。 一陣腳步聲響...
    開(kāi)封第一講書人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留础拨,地道東北人氮块。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像诡宗,于是被迫代替她去往敵國(guó)和親滔蝉。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容