sudo:npm:找不到命令


201

我正在尝试升级到最新版本的节点。我正在按照http://davidwalsh.name/upgrade-nodejs上的说明进行操作

但是当我这样做时:

sudo npm install -g n

我得到错误:

sudo: npm: command not found

npm无需sudo即可工作。当我做:

whereis node

我懂了:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node

运行:

which npm

显示:

/usr/local/node/bin/npm

我在https://stackoverflow.com/a/5062718/1246159尝试了解决方案

但是我仍然遇到同样的错误。我还查看了/ etc / sudoers文件,相关的行是:

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"

在我看来,这很好。如何使用sudo命令使NPM正常工作?


4
这样行吗?sudo /usr/bin/npm install -g n
robertklep 2015年

2
您可以尝试重新安装节点吗?听起来您删除了npm。
杰夫·斯洛尔

1
您可能已添加/usr/local/node/bin$PATH,但npm应安装在中/usr/local/bin。第一个目录不在secure_path其中,它解释了为什么sudo找不到它。
robertklep

1
nvm在此处在Ubuntu上使用-带有@robertklep注释,我尝试了sudo /home/${user}/.nvm/version/node/${version}/bin/npm install并且成功了。
Stav Pan Geffen

2
它通过以下软件包重新安装解决了我的问题。nodejs.org/en/download
Marghoob Suleman

Answers:


125

npm文件应位于中/usr/local/bin/npm。如果它不存在,与包装上的node.js的重新安装网站。就我而言,这是可行的。


谢谢。如果将节点安装在未安装os的其他数据驱动器中,则找不到此路径。
Hardik Darji

1
对于使用自制软件的Mac OS,执行两个步骤是(1)哪个节点(2)哪个npm应该都在/ usr / local / bin中(其中自制软件安装/符号链接node + npm)...解决..请尝试(1)brew doctor(2)brew重新安装节点(如果仍然存在问题)。.检查您的路径(回显$ PATH)。您必须具有指向不同节点安装的多个bin位置。如果是这种情况,请清理〜/ .bashrc /〜/ .bash_profile(如使它更整洁),因此/ usr / local / bin在那里加载时没有另一个指向随机节点安装。
Jimmy MG Lim,

3
这是部分解决方案。当您手动安装节点时,会发生此问题。您必须将每个已安装的二进制文件软链接到/ usr / bin或/ usr / local / bin。在root的bashrc中设置路径将不起作用,因为在sudo期间不会读取该路径,因此,除非您安装软件包,否则这是唯一的方法。
虾车

正如@shrimpwagon所说,手册的底部告诉您链接“ sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npm / usr / bin / npm sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / npx / usr / bin / npx“
詹姆斯·尼尔森

169

我必须做

sudo apt-get install npm

对我有用。


6
很难理解您要表达的内容。
很小的阳光

4
这个已经过期了。对我有用的是我在这里找到的这些命令:github.com/nodesource/distributions#debinstall# 使用Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash-sudo apt-get install -y nodejs#使用Debian作为root curl -sL deb.nodesource.com/setup_5.x | bash-apt-get install -y nodejs
Hamed

4
@tinysunlight我不确定还不清楚。操作人员说缺少npm命令。此命令将安装npm命令。
Velocibadgery

7
这不是问题的正确答案,因为从npm已安装的op中很明显,但是通过sudo调用时无法访问。使用此解决方案,您可以重新安装已经存在的npm。这是在对抗症状而不是找到原因。我了解这可能会纠正某些人的问题,但这是令人误解的,像这样站着。
多米尼克

4
当我在Ubuntu 18.10上使用NVM安装节点时,sudo无法将npm识别为命令。sudo apt-get install npm为我工作。
AlienKevin

91

对于MAC用户,以下步骤对我有用。

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 

5
brew uninstall node没有为我工作,但我与进行的brew install node,并brew postinstall和它解决了这一问题。谢谢
Trevor

2
到底是brew postinstall做什么的?
Oliver D

在Homebrew版本2.2.14中brew postinstall是多余的
Arslan Khan

63

我有同样的问题; 这是修复它的命令:

  • sudo ln -s /usr/local/bin/node /usr/bin/node
  • sudo ln -s /usr/local/lib/node /usr/lib/node
  • sudo ln -s /usr/local/bin/npm /usr/bin/npm
  • sudo ln -s /usr/local/bin/node-waf /usr/bin/node-waf

2
为我开发了CentOS 7
hirikarate,2016年

4
为我工作Ubuntu 16.04.1 LTS。我使用NVM,因此第一个路径是NVM安装节点和npm的位置(该路径包括一个version %HOME%/.nvm/versions/node/v7.4.0/bin/npm)。不幸的是,由于路径中的版本将如何更改,每次使用NVM更新时,我都必须参考此答案
kas

1
这也为我解决了!最初发布在Stack Overflow上:在EC2上:找不到sudo node命令,但是没有sudo的节点是可以的
Dominic

2
@kas sudo ln -s $(whereis node) /usr/bin/node 等。在您的bash个人资料中。
Aravind Voggu

在AWS ec2实例中为我工作。
Chirag Purohit

26

警告(编辑)

这样做chmod 777是一个非常根本的解决方案。首先尝试这些,一次尝试一次,并在一个可行的情况下停止:

  • $ sudo chmod -R 777 /usr/local/lib/node_modules/npm
  • $ sudo chmod -R 777 /usr/local/lib/node_modules
  • $ sudo chmod g+w /usr/local/lib
  • $ sudo chmod g+rwx /usr/local/lib

$ brew postinstall node 是我遇到问题的唯一安装部分

Permission denied - /usr/local/lib/node_modules/npm/.github

所以我

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node

和中提琴,npm现在已链接

$ npm -v
3.10.10

额外

如果您-R 777lib上使用,我的建议是将嵌套文件和目录设置为默认设置:

  • $ find /usr/local/lib -type f -print -exec chmod 644 {} \;
  • $ find /usr/local/lib -type d -print -exec chmod 755 {} \;
  • $ chmod /usr/local/lib 755

3
@Jacksonkr .....您只是建议将777更改为整个本地/ lib文件夹吗?
sfratini

什么chmod应该把这个目录是什么?
tim_xyz

1
@tim_xyz drwxr-xr-x是lib的默认值。就是说,-R在重新设置文件夹时不要使用递归功能。
杰克逊(Jacksonkr)

谢谢!sudo chmod -R 777 / usr / local / lib / node_modules为我工作
Hisagr


8

对于CentOS用户,这对我有用:

sudo yum install npm

1
这种方法的问题在于,例如在Fedora中,它在dnf / yum仓库中已经过时了
ACV

2
在CentOS 7上,您需要首先启用EPEL yum install epel-release; yum install npm
仓库

8

为了以sudo权限全局安装npm软件包,/usr/bin/npm应该可用。如果npm存在于其他目录中,则创建一个软链接,例如:

sudo ln -s /usr/local/bin/npm /usr/bin/npm

它适用于Fedora 25,node8.0.0和npm5.0.0


6

在macOS上,这对我有用:

brew reinstall node

1
抱歉,刚才注意到该问题被标记为unix,但是它可能仍然有用,因为它是“ macos npm command not found”的顶级Google搜索结果
friederbluemle


5

如果您将节点/ npm与nvm一起安装,则必须先运行nvm环境配置文件,然后才能使用这两个软件包。

通常可以在〜/ .nvm / nvm.sh中找到。

要自动运行,包括:

source ~/.nvm/nvm.sh

在您的用户的.bash_profile文件中

然后,如果要对该用户使用sudo,请确保包含-i参数以使sudo设置用户环境。例如

sudo -iu jenkins npm install grunt-cli

4

只需重新安装。

在RHEL,CentOS和Fedora上

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]

然后

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]

容易!.. node和npm现在都像一个魅力!


3

我解决了这个问题

apt-get install npm2deb

1
这个答案是什么?npm2deb是第三次聚会
Beau Bouchard

1
它并不完全是“受信任的”,因为在第三方中,与直接从源头获得npm相比,更容易受到损害。我对npm2deb一无所知,但考虑一下您是否要在公司中使用它,他们可能会严格审核它
Kyle Calica-St

这对每个人都是显而易见的。
ИгорьДемянюк

1

我有同样的问题,原因是安装节点时未安装npm软件包管理器。这是由于以下错误引起的:在安装过程中,有一个名为“自定义安装”的步骤,在这里您可以选择以下选项之一:1)Node.js运行时(默认情况下处于选中状态)。2)npm软件包管理器3)在线文档快捷方式。4)添加到路径。如果继续进行,则不会安装npm软件包管理器,因此会出现错误。

解决方案:当您获得这些选项时,请选择npm软件包管理器。这对我有用。


1

如果您已经下载了节点软件包并提取了类似的内容/opt,则可以在其中简单地创建符号链接/usr/local/bin

/usr/local/bin/npm -> /opt/node-v4.6.0-linux-x64/bin/npm
/usr/local/bin/node -> /opt/node-v4.6.0-linux-x64/bin/node

1

我在Homestead也遇到过同样的问题,并尝试了许多方法。我尝试过

须藤apt-get install nodejs

我收到以下错误:

The following packages have unmet dependencies:
 npm : Depends: nodejs but it is not going to be installed
       Depends: node-abbrev (>= 1.0.4) but it is not going to be installed
       Depends: node-ansi (>= 0.3.0-2) but it is not going to be installed
       Depends: node-ansi-color-table but it is not going to be installed
       Depends: node-archy but it is not going to be installed
       Depends: node-block-stream but it is not going to be installed
       Depends: node-fstream (>= 0.1.22) but it is not going to be installed
       Depends: node-fstream-ignore but it is not going to be installed
       Depends: node-github-url-from-git but it is not going to be installed
       Depends: node-glob (>= 3.1.21) but it is not going to be installed
       Depends: node-graceful-fs (>= 2.0.0) but it is not going to be installed
       Depends: node-inherits but it is not going to be installed
       Depends: node-ini (>= 1.1.0) but it is not going to be installed
       Depends: node-lockfile but it is not going to be installed
       Depends: node-lru-cache (>= 2.3.0) but it is not going to be installed
       Depends: node-minimatch (>= 0.2.11) but it is not going to be installed
       Depends: node-mkdirp (>= 0.3.3) but it is not going to be installed
       Depends: node-gyp (>= 0.10.9) but it is not going to be installed
       Depends: node-nopt (>= 3.0.1) but it is not going to be installed
       Depends: node-npmlog but it is not going to be installed
       Depends: node-once but it is not going to be installed
       Depends: node-osenv but it is not going to be installed
       Depends: node-read but it is not going to be installed
       Depends: node-read-package-json (>= 1.1.0) but it is not going to be installed
       Depends: node-request (>= 2.25.0) but it is not going to be installed
       Depends: node-retry but it is not going to be installed
       Depends: node-rimraf (>= 2.2.2) but it is not going to be installed
       Depends: node-semver (>= 2.1.0) but it is not going to be installed
       Depends: node-sha but it is not going to be installed
       Depends: node-slide but it is not going to be installed
       Depends: node-tar (>= 0.1.18) but it is not going to be installed
       Depends: node-underscore but it is not going to be installed
       Depends: node-which but it is not going to be installed
E: Unable to correct problems, you have held broken packages.

最后我尝试了

sudo apt-get dist-upgrade

工作正常。

root@homestead:/usr/local/bin# npm -v
3.10.10

root@homestead:/usr/local/bin# node -v
v6.13.0


0

使用visudo并编辑“ secure_path”将npm二进制路径附加到sudo路径

现在,“ sudo npm”有效


0

完全删除节点:

  brew uninstall --force node

再次安装:

brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'


0

由于我已经使用node.js上的.tar文件安装了node.js,因此必须将node目录的位置放在:

〜/ .bashrc

通过使用以下命令从普通用户更改为root用户来确定root用户:

须藤-i

然后必须将路径添加到将节点提取到.bashrc文件中的节点,如下所示: 在此处输入图片说明

然后使用

。〜/ .bashrc

之后

npm: command not found

走了


0

为我工作为全球安装软件包时解决EACCES权限错误

为了最大程度地减少权限错误的可能性,您可以将npm配置为使用其他目录。在此示例中,您将在主目录中创建并使用隐藏目录。

备份您的计算机。在命令行的主目录中,为全局安装创建目录:

 mkdir ~/.npm-global

配置npm以使用新的目录路径:

 npm config set prefix '~/.npm-global'

在您喜欢的文本编辑器中,打开或创建〜/ .profile文件并添加以下行:

 export PATH=~/.npm-global/bin:$PATH

在命令行上,更新系统变量:

 source ~/.profile

要测试新配置,请在不使用sudo的情况下全局安装软件包:

 npm install -g jshint

0

对我来说,上面提到的使用Homebrew的任何方法都不适用于macOS。因此,我使用Homebrew卸载了节点并从https://nodejs.org/en/download/下载了该节点包,并进行了安装。它就像一种魅力。


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.