Linux

在 Amazon Linux AMI 上安裝 npm 和主管程序包時遇到問題

  • May 22, 2012

我正在執行一個 Amazon Linux AMI 並通過wget‘ing 源、解壓縮文件並執行./configure然後執行sudo make install來成功安裝了 node.js。當我安裝 npm 時:

curl http://npmjs.org/install.sh | sudo sh

它輸出:

npm cannot be installed without nodejs.
Install node first, and then try again.

Maybe node is installed, but not in the PATH?
Note that running as sudo can change envs.

PATH=/sbin:/bin:/usr/sbin:/usr/bin

但是節點顯然已安裝(執行node -v顯示其版本),因此必須是該節點不在我的路徑中。

我打開~/.bash_profile並添加這一行:

export PATH=/usr/local/bin:$PATH

然後執行source ~/.bash_profile

並嘗試再次安裝 npm,卻發現它輸出與上次相同的消息,即完全相同的 PATH。

然後,奇怪的是我注意到 npm 實際安裝了!執行npm -v顯示它的版本。嗯……

然後我npm install supervisor在我的應用程序的目錄中執行,主管文件夾在那裡/node_modules,但是supervisor命令不存在。

安裝主管輸出:

npm WARN prefer global supervisor@0.3.1 should be installed with -g

所以我嘗試npm install -g supervisor哪些輸出

npm ERR! Error: EACCES, mkdir '/usr/local/lib/node_modules/supervisor'
npm ERR! 
npm ERR! Please try running this command again as root/Administrator.

所以我嘗試sudo npm install -g supervisor

但輸出是sudo: npm: command not found

總而言之,npm 似乎工作正常,儘管安裝它時的輸出會讓人相信,並且主管包似乎已經安裝,但它的命令不起作用。

任何有關解決此問題的幫助將不勝感激!

如果可能,最好避免編譯包。除了經常安裝在非標準位置之外,從原始碼編譯的軟體更難保持最新狀態。Node.js 提供了從儲存庫安裝的過程 - 其中包括 npm 和一些其他相關組件。儲存庫會保持最新狀態,並且很少比原始碼晚幾天。此外,還有專門針對 Amazon Linux 的說明:

sudo yum localinstall --nogpgcheck http://nodejs.tchol.org/repocfg/amzn1/nodejs-stable-release.noarch.rpm
sudo yum install nodejs-compat-symlinks npm.

npm應該安裝到/usr/bin/npm哪個是符號連結/usr/lib/nodejs/npm/bin/npm-cli.js.當然,對你的 PATH 進行了一些修改,可能找不到 npm。echo $PATH(作為根)應該類似於:

/usr/local/sbin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/aws/bin:/root/bin

以前使用 npm 安裝失敗時的常見問題之一是記憶體損壞 - 清除您的 npm 記憶體 ( npm cache clear) 並查看是否成功。當然,全域安裝包需要以 root 身份完成。

引用自:https://serverfault.com/questions/391267