sudo:npm:找不到命令

Mar*_*ark 162 unix node.js npm

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

但当我这样做时:

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

我收到错误:

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

npm没有sudo.当我做:

whereis node
Run Code Online (Sandbox Code Playgroud)

我知道了:

node: /usr/bin/node /usr/lib/node /usr/bin/X11/node /usr/local/node
Run Code Online (Sandbox Code Playgroud)

运行:

which npm
Run Code Online (Sandbox Code Playgroud)

显示:

/usr/local/node/bin/npm
Run Code Online (Sandbox Code Playgroud)

我在/sf/answers/354390291/上尝试了该解决方案

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

Defaults        secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
Run Code Online (Sandbox Code Playgroud)

这看起来很好.我怎样才能让NPM使用sudo命令?

Vel*_*ery 140

我必须做

sudo apt-get install npm
Run Code Online (Sandbox Code Playgroud)

这对我有用.

  • 这不是问题的正确答案,因为从操作系统中可以明显看出`npm`已经安装但在通过sudo调用时无法访问.使用此解决方案,您可以重新安装已存在的npm.这是对抗症状而不是找到原因.我知道这可能会纠正某些人破碎的东西,但这是误导,就像这样. (6认同)
  • 很难理解你想要表达的内容. (5认同)
  • 这个已经过期了。对我有用的是我在这里找到的这些命令:https://github.com/nodesource/distributions#debinstall#使用Ubuntu curl -sL https://deb.nodesource.com/setup_5.x | sudo -E bash-sudo apt-get install -y nodejs#使用Debian作为root curl -sL https://deb.nodesource.com/setup_5.x | bash-apt-get install -y nodejs (4认同)
  • @tinysunlight我不确定什么不清楚.操作说缺少npm命令.此命令安装npm命令. (3认同)
  • 当我在Ubuntu 18.10上使用NVM安装节点时,sudo无法将npm识别为命令。`sudo apt-get install npm`对我有用。 (2认同)

ing*_*nga 103

npm文件应该在/usr/local/bin/npm.如果它不存在,与包装上的重新安装的node.js 网站.这适用于我的情况.

  • 这是部分解决方案。手动安装节点时会出现此问题。您必须将每个已安装的二进制文件软链接到 /usr/bin 或 /usr/local/bin。在 root 的 bashrc 中设置路径将不起作用,因为它在 sudo 期间不被读取,因此这是唯一的方法,除非您安装 package.json 。 (5认同)
  • 正如@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" (3认同)
  • 我为什么要使用他们的网站? (2认同)

小智 80

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

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 
Run Code Online (Sandbox Code Playgroud)

  • 在 Homebrew 版本 2.2.14 中 `brew postinstall` 是多余的 (5认同)
  • `brew postinstall` 到底是做什么的? (4认同)
  • “ brew卸载节点”对我不起作用,但是我继续使用“ brew install节点”和“ brew postinstall”,它解决了问题。谢谢 (3认同)

小智 60

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

  • 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

  • 为我工作Ubuntu 16.04.1 LTS.我使用NVM,因此第一条路径是NVM安装节点和npm(路径包含版本`%HOME%/ .nvm/versions/node/v7.4.0/bin/npm`).不幸的是,每次我使用NVM更新时都必须引用此答案,因为路径中的版本将如何更改 (4认同)
  • 在CentOS 7上为我工作 (2认同)
  • @kas`sudo ln -s $(whereis节点)/ usr / bin / node`依此类推。在您的bash个人资料中。 (2认同)

Jac*_*nkr 24

警告(编辑)

做一个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
Run Code Online (Sandbox Code Playgroud)

所以我

// !! READ EDIT ABOVE BEFORE RUNNING THIS CODE !!
$ sudo chmod -R 777 /usr/local/lib
$ brew postinstall node
Run Code Online (Sandbox Code Playgroud)

和中提琴,现在联系

$ npm -v
3.10.10
Run Code Online (Sandbox Code Playgroud)

额外

如果您-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

  • @Jacksonkr .....你刚刚推荐chmoding 777整个本地/ lib文件夹吗? (3认同)

mau*_*lus 18

我必须做以下事情:

  1. brew update
  2. brew uninstall node
  3. 访问https://nodejs.org/en/下载该文件
  4. 安装下载的文件

  • 你是英雄。 (2认同)

Ada*_*per 9

您可以通过为 npm 和 node 创建符号链接来解决此问题,这既快速又简单:

sudo ln -s $(which npm) /usr/local/bin/npm
sudo ln -s $(which node) /usr/local/bin/node
Run Code Online (Sandbox Code Playgroud)

我用来which获取位置,然后将其作为变量传递给命令,例如$(which npm)

我也为节点创建了一个符号链接,因为 npm 依赖于节点。

然后你就可以:

sudo npm -v
Run Code Online (Sandbox Code Playgroud)

无需重新安装节点或在整个目录上使用 chmod。


小智 8

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

sudo yum install npm
Run Code Online (Sandbox Code Playgroud)

  • 在CentOS 7上,您需要首先启用EPEL repo:`yum install epel-release; yum install npm` (2认同)

小智 8

要使用sudo权限全局安装npm软件包,/usr/bin/npm应该可用.如果npm存在于其他目录中,请创建一个软链接,如:

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

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


fri*_*mle 6

在 macOS 上,这对我有用:

brew reinstall node
Run Code Online (Sandbox Code Playgroud)

  • 抱歉,刚刚注意到这个问题被标记为“unix”,但它可能仍然有帮助,因为它是“macos npm 命令未找到”的顶部 Google 搜索结果 (2认同)

小智 5

对于安装节点后的debian,请输入

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh
Run Code Online (Sandbox Code Playgroud)


Gar*_*aid 5

如果您使用 nvm 安装了 node/npm,则必须先运行 nvm 环境配置文件,然后才能使用任一软件包。

这通常在 ~/.nvm/nvm.sh 中找到。

要自动运行,请包括:

source ~/.nvm/nvm.sh
Run Code Online (Sandbox Code Playgroud)

在您的用户的 .bash_profile 文件中

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

sudo -iu jenkins npm install grunt-cli
Run Code Online (Sandbox Code Playgroud)


Bri*_*hez 5

只需重新安装。

在 RHEL、CentOS 和 Fedora 上

sudo yum remove nodejs npm
sudo dnf remove nodejs npm   [On Fedora 22+ versions]
Run Code Online (Sandbox Code Playgroud)

然后

yum -y install nodejs npm
dnf -y install nodejs npm   [On Fedora 22+ versions]
Run Code Online (Sandbox Code Playgroud)

很简单!.. 现在 node 和 npm 都像魅力一样工作!


Dip*_*mar 5

你可以为我制作符号链接及其作品。

  1. 找到电流路径 npm

which npm

  1. 通过以下命令创建符号链接

须藤 ln -s which/npm /usr/local/bin/npm

  1. 验证。

sudo npm -v

  • 最简单的解决方案,对我来说非常完美,只需对节点做同样的事情 (2认同)