在 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 版本上遇到同样问题的人。也许它也适用于 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 的步骤操作,那么这个方法可能行不通更改默认全局目录

相关内容