在 sudo 上執行 node.js n 套件時找不到指令

在 sudo 上執行 node.js n 套件時找不到指令

我正在嘗試將我的節點版本更新到最新的穩定版本。

使用這個資源我以前可以:

sudo npm install n -g

但當我嘗試時

sudo npm n stable

我得到:

sudo: n: command not found

如果我運行n stable,則會出現該命令:

n stable
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

     install : node-v0.12.2
       mkdir : /usr/local/n/versions/node/0.12.2
mkdir: cannot create directory ‘/usr/local/n’: Permission denied

  Error: sudo required

答案1

我找到了對我有用的解決方案:

sudo -E env "PATH=$PATH" n stable

在這裡找到它:https://stackoverflow.com/a/29400598/861615

答案2

令人驚訝的是,您的npm安裝在您的主目錄中調用的資料夾中具有全域前綴npm,這意味著使用該-g標誌安裝的任何軟體包都將安裝在該資料夾中。

sudo您可以按照以下步驟將此資料夾變更為安全路徑上的任何資料夾:


圖解方式:

  1. 開啟檔案管理器(又稱 Nautilus)。
  2. 導航到您的主資料夾。
  3. Ctrl+H顯示隱藏檔案。
  4. .npmrc使用您最喜歡的文字編輯器開啟一個名為的檔案。
  5. 在該文件中找到包含以下內容的行:

    prefix=/home/<your_username>/npm
    
  6. 替換/home/<your_username>/npm為安全路徑(例如/usr/local/bin)。
  7. 更換後,它將如下所示:

    prefix=/usr/local/bin
    
  8. 儲存文件。
  9. 再次運行sudo npm install n -g

終端方式:

運行這個命令:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc

答案3

我知道這是一個 Ubuntu 論壇,但我確信這會幫助那些在 RHEL 版本上遇到相同問題的人,他們像我一樣透過 Google 搜尋到這裡。也許它也適用於 Ubuntu。

這就是方法:

ln -s /usr/local/bin/n /usr/bin/n

答案4

為了避免弄亂資料.npm-global著名的作者:@Edson Horacio Junior,基於@pohest回答,這是我修復它的方法:

sudo ln -s /home/<username>/.npm-global/bin/n /usr/local/bin/n
sudo n --version # test it

請注意,如果您沒有遵循 npm 的步驟,這可能不起作用更改預設全域目錄

相關內容