在 Amazon Linux AMI 上安裝 npm 和主管程序包時遇到問題
我正在執行一個 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 身份完成。