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


13

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

使用此资源,我能够:

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

好主意,但是当我这样做时,即使我删除了“ sudo”,它也返回“ n:command not found”
JonRed

sudo sh -c“ PATH = $ PATH; n稳定” <换行> sh:1:n:找不到
JonRed

完全没有输出。令人沮丧的是:-(
JonRed


请在ls /usr/local/bin/n
2015年

Answers:


5

令人惊讶的是,您的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

我认为这钉住了它!当我更新我的npm版本时,它也对我有帮助,但是我不认识它。所以,接受了,谢谢!
JonRed

没有帮助,还是一样的问题:/
Luckylooke

这对我有帮助!我没有〜/ .npmrc文件,所以我添加了它,现在它可以正常工作
Kirill Gusyatin

2
请注意:这将撤消选项2固定NPM权限
埃德森奥拉西奥青少年


2

我知道这是一个Ubuntu论坛,但是我敢肯定,这将对像我一样在此处搜索过RHEL风格问题的人有所帮助。也许它也可以在Ubuntu中工作。

这是方法

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

0

为了避免弄乱@Edson Horacio Junior 指出.npm-global文件夹,并基于@pohest的回答,这是我如何解决的问题:

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

请注意,如果您没有按照npm的步骤更改默认全局目录,则可能无法使用。


0

我找到了对我有用的解决方案。使用nvm软件包下载最新节点。

  1. 使用以下命令安装nvm

curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.34.0/install.sh | bash

  1. 创建一个环境变量以使用nvm
export NVM_DIR="${XDG_CONFIG_HOME/:-$HOME/.}nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
  1. nvm -v如果看不到nvm已安装的内容,请尝试运行以下脚本

command -v nvm

  1. 要在下面安装节点运行命令

nvm install node

  1. 重启终端后,尝试检查节点版本,应该更新

node -v

更多信息在这里:https : //github.com/nvm-sh/nvm


0

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

sudo npm install -g n

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

sudo n stable

上面将安装最新的稳定版

sudo n lates

这将安装最新版本

您还可以通过指定以下版本来安装特定版本

sudo n  10.16.0

0

上面的答案都不适合我。但是这样做:

sudo /usr/local/bin/bin/n stable

-1

我遇到了同样的问题,这是您可以解决的方法:

  1. 获取npm配置前缀
    npm config get prefix 
    // get -> ${myhome}/.npm-global
  2. 在下面添加以下行 .zshrc

    # Specify `n` to put the version of `node` in the `.n` directory.
    export N_PREFIX=${myhome}/.npm-global/.n
    
    # Make `nman` command work
    export PATH=${myhome}/.npm-global/bin:$PATH
    
    # Add this line to use `node -v` command
    export PATH=${myhome}/.npm-global/.n/bin:$PATH

参考: GitHub-tj / n:节点版本管理

编者注:该答案最初是用中文写的,已使用在线工具进行了翻译和编辑。要查看原始答案,请参阅修订版1

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.