在 sudo 上执行 node.js n 包时找不到命令

Jon*_*Red 18 nodejs 14.04

我正在尝试将我的节点版本更新到最新的稳定版。

使用此资源,我能够:

sudo npm install n -g
Run Code Online (Sandbox Code Playgroud)

但是当我尝试

sudo npm n stable
Run Code Online (Sandbox Code Playgroud)

我得到:

sudo: n: command not found
Run Code Online (Sandbox Code Playgroud)

如果我运行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
Run Code Online (Sandbox Code Playgroud)

Luc*_*oke 26

我找到了对我有用的解决方案:

sudo -E env "PATH=$PATH" n stable
Run Code Online (Sandbox Code Playgroud)

在这里找到:https : //stackoverflow.com/a/29400598/861615

  • @user3311522你在`sudo -E env "PATH=$PATH" n stable`之前使用过:`sudo npm install n -g`吗? (2认同)

0x2*_*fa0 7

令人惊讶的是,您的npm安装npm在您的主目录下的文件夹中具有全局前缀,这意味着使用该-g标志安装的任何软件包都将安装在该文件夹中。

您可以sudo按照以下步骤将此文件夹更改为安全路径上的任何文件夹:


图形方式:

  1. 打开文件管理器(又名 Nautilus)。
  2. 导航到您的主文件夹。
  3. Ctrl+H显示隐藏文件。
  4. 打开一个.npmrc用你最喜欢的文本编辑器调用的文件。
  5. 在该文件上查找包含以下内容的行:

    prefix=/home/<your_username>/npm
    
    Run Code Online (Sandbox Code Playgroud)
  6. 替换/home/<your_username>/npm为安全路径(例如/usr/local/bin)。
  7. 更换后,它将如下所示:

    prefix=/usr/local/bin
    
    Run Code Online (Sandbox Code Playgroud)
  8. 保存文件。
  9. 再次运行 sudo npm install n -g

终端方式:

运行此命令:

sed -i.bak "s%^prefix=.*$%prefix=/usr/local/bin%" ~/.npmrc
Run Code Online (Sandbox Code Playgroud)

  • 注意:这将撤消 [修复 NPM 权限](https://docs.npmjs.com/getting-started/fixing-npm-permissions) 的 _Option 2_ (2认同)

小智 5

我知道这是一个 Ubuntu 论坛,但我相信这会帮助那些在 RHEL 风格上遇到同样问题的人,他们像我一样在谷歌上搜索到这里。也许它也适用于 Ubuntu。

这是方法

ln -s /usr/local/bin/n /usr/bin/n
Run Code Online (Sandbox Code Playgroud)


小智 5

这意味着您的系统中没有安装 N,N 是基于 npm 的节点版本管理器。您可以通过先安装某个版本的节点然后运行来安装它

sudo npm install -g n
Run Code Online (Sandbox Code Playgroud)

现在您可以使用 n 命令在节点上安装该版本

sudo n stable
Run Code Online (Sandbox Code Playgroud)

以上将安装最新的稳定版本

sudo n lates
Run Code Online (Sandbox Code Playgroud)

这将安装最新版本

您还可以通过指定版本来安装特定版本,如下所示

sudo n  10.16.0
Run Code Online (Sandbox Code Playgroud)