sudo:npm:找不到命令
Posted
技术标签:
【中文标题】sudo:npm:找不到命令【英文标题】:sudo: npm: command not found 【发布时间】:2015-10-06 23:50:58 【问题描述】:我正在尝试升级到最新版本的节点。我正在按照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://***.com/a/5062718/1246159尝试了解决方案
但我仍然遇到同样的错误。我还查看了 /etc/sudoers 文件,相关行是:
Defaults secure_path="/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
这对我来说很好。我怎样才能让 NPM 使用 sudo 命令?
【问题讨论】:
这行得通吗?sudo /usr/bin/npm install -g n
您可以尝试重新安装节点吗?听起来你删除了 npm。
您可能已将/usr/local/node/bin
添加到您的$PATH
,但npm
应安装在/usr/local/bin
中。第一个目录不在secure_path
中,这就解释了为什么sudo
找不到它。
在这里在 Ubuntu 上使用 nvm
- 带有 @robertklep 评论,我尝试了 sudo /home/$user/.nvm/version/node/$version/bin/npm install
并且成功了。
它通过从以下软件包重新安装解决了我的问题。 nodejs.org/en/download
【参考方案1】:
我不得不这样做
sudo apt-get install npm
这对我有用。
【讨论】:
很难理解你想表达什么。 这已经过时了。对我有用的是我在这里找到的这些命令:github.com/nodesource/distributions#debinstall # Using 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 @tinysunlight 我不确定有什么不清楚的地方。操作员说缺少 npm 命令。此命令安装 npm 命令。 这不是问题的正确答案,因为从操作中可以明显看出npm
已经安装但通过 sudo 调用时无法访问。使用此解决方案,您可以重新安装已经存在的 npm。这是对抗症状,而不是寻找原因。我知道这可能会纠正某些人的错误,但这样站着会产生误导。
当我在 Ubuntu 18.10 上使用 NVM 安装节点时,sudo 无法将 npm 识别为命令。 sudo apt-get install npm
为我工作。【参考方案2】:
npm 文件应该在/usr/local/bin/npm
中。如果它不存在,请使用其website 上的包再次安装 node.js。这在我的情况下有效。
【讨论】:
谢谢。如果将node安装在其他没有安装os的数据盘,找不到这个路径。 在 mac os 和 homebrew 的情况下.. 两个步骤是 (1) 哪个节点 (2) 哪个 npm 应该都在 /usr/local/bin (homebrew 安装/符号链接 node+npm)... 解决.. 尝试 (1) brew doctor (2) brew reinstall node 如果它仍然存在问题.. 检查您的路径 (echo $PATH)。你必须有多个 bin 位置指向不同的节点安装..如果是这样的话......清理(如使其更整洁)你的 ~/.bashrc / ~/.bash_profile,所以 /usr/local/bin 就在那里加载时没有另一个指向随机节点安装。 这是部分解决方案。手动安装节点时会出现此问题。您必须将每个已安装的二进制文件软链接到 /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" 我为什么要使用他们的网站?【参考方案3】:对于 MAC 用户,以下步骤对我有用。
如果您收到 Brew 错误,这是您需要首先在终端中键入的命令:
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install.sh)"
然后运行以下命令:
$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall
【讨论】:
brew uninstall node
对我不起作用,但我继续使用brew install node
和brew postinstall
并解决了问题。谢谢
brew postinstall
到底是做什么的?
在 Homebrew 版本 2.2.14 brew postinstall
是多余的
就我而言,brew install node
无法覆盖旧版本的符号链接。我必须运行 brew link --overwrite node
来解决问题。【参考方案4】:
我遇到了同样的问题;以下是修复它的命令:
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
【讨论】:
在 CentOS 7 上为我工作 为我工作 Ubuntu 16.04.1 LTS。我使用 NVM,所以第一个路径是 NVM 安装节点和 npm 的位置(路径包括版本%HOME%/.nvm/versions/node/v7.4.0/bin/npm
)。不幸的是,由于路径中的版本将如何变化,我每次使用 NVM 更新时都必须参考这个答案
这也为我解决了!最初发布在 Stack Overflow:On EC2: sudo node command not found, but node without sudo is ok
@kas sudo ln -s $(whereis node) /usr/bin/node
等等。在你的 bash 个人资料中。
在 AWS ec2 实例中为我工作。【参考方案5】:
** 编辑 **
警告! - 执行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
和 viola,npm 现已关联
$ npm -v
3.10.10
额外
如果您在 lib 上使用 -R 777
,我的建议是将嵌套文件和目录设置为默认设置:
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 整个 local/lib 文件夹吗? 这个目录应该是什么chmod
?
@tim_xyz drwxr-xr-x
是 lib 的默认值。也就是说,在设置文件夹时不要使用递归功能-R
。
谢谢! sudo chmod -R 777 /usr/local/lib/node_modules 为我工作
永远不要chmod 777
,除非你有充分的理由这样做。【参考方案6】:
我必须做到以下几点:
brew update
brew uninstall node
访问https://nodejs.org/en/下载文件
安装下载的文件
【讨论】:
你是英雄。【参考方案7】:为了使用 sudo 权限全局安装 npm 包,/usr/bin/npm
应该可用。如果npm
存在于其他目录中,则创建一个软链接,如:
sudo ln -s /usr/local/bin/npm /usr/bin/npm
它适用于 Fedora 25、node8.0.0 和 npm5.0.0
【讨论】:
简单有效,在 linux mint 20 上为我工作。 这应该是最好的答案!谢谢老兄,它对我有用【参考方案8】:对于 CentOS 用户,这对我有用:
sudo yum install npm
【讨论】:
这种方法的问题是,例如在 Fedora 中,它在 dnf / yum repos 中已经过时了 在 CentOS 7 上,您需要先启用 EPEL repo:yum install epel-release; yum install npm
【参考方案9】:
在 macOS 上,这对我有用:
brew reinstall node
【讨论】:
抱歉,刚刚注意到该问题标有unix
,但它可能仍然有用,因为它是“找不到macos npm 命令”的***Google 搜索结果【参考方案10】:
如果您使用 nvm 安装 node/npm,则必须先运行 nvm 环境配置文件,然后才能使用任一包。
这通常在 ~/.nvm/nvm.sh 中找到。
要自动运行,包括:
source ~/.nvm/nvm.sh
在您用户的 .bash_profile 文件中
如果您想对该用户使用 sudo,请确保包含 -i 参数以使 sudo 设置用户环境。例如
sudo -iu jenkins npm install grunt-cli
【讨论】:
【参考方案11】:您可以为我制作符号链接及其作品。
-
找到当前
npm
的路径
which npm
-
按照以下命令建立符号链接
sudo ln -s which/npm /usr/local/bin/npm
-
测试和验证。
sudo npm -v
【讨论】:
最简单的解决方案,对我来说很完美,只需要对节点做同样的事情 @dipenparmar12 我也试过了,但现在我得到 /usr/bin/env:'node': Not a directory【参考方案12】:安装node后的debian 进入
curl -k -O -L https://npmjs.org/install.sh
ln -s /usr/bin/nodejs /usr/bin/node
sh install.sh
【讨论】:
【参考方案13】:只需重新安装。
在 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 现在都像魅力一样工作!
【讨论】:
【参考方案14】:如果你已经下载了节点包并解压到了/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
【讨论】:
【参考方案15】:为我工作Resolving EACCES permissions errors when installing packages globally
为了最大程度地减少权限错误的可能性,您可以将 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
【讨论】:
【参考方案16】:我遇到了同样的问题,原因是安装节点时没有安装 npm 包管理器。这是由于以下错误引起的: 在安装过程中有一个称为“自定义设置”的步骤,您可以在此处选择以下选项之一: 1) Node.js 运行时(默认选中)。 2) npm 包管理器 3) 在线文档快捷方式。 4)添加到路径。 如果您按原样继续,则不会安装 npm 包管理器,因此您将收到错误消息。
解决方案: 获得这些选项时选择 npm 包管理器。 这对我有用。
【讨论】:
【参考方案17】:使用 visudo 将 npm 二进制路径附加到 sudo 路径并编辑“secure_path”
现在“sudo npm”可以工作了
【讨论】:
【参考方案18】:我解决了这个问题
apt-get install npm2deb
【讨论】:
这个答案是什么? npm2deb 是第 3 方 它并不完全“受信任”,因为在第 3 方中比直接从源代码中的 npm 更有可能受到损害。我对 npm2deb 一无所知,但想想如果你想在你的公司使用它,他们可能会严格审核它【参考方案19】:我在 Homestead 也遇到了同样的问题,并尝试了很多方法。 我试过了
sudo 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
【讨论】:
【参考方案20】:我的解决方案是:
sudo -E env "PATH=$PATH" n stable
对我来说很好。
在这里找到它:https://***.com/a/29400598/861615
这是因为您更改了默认的全局包目录
【讨论】:
【参考方案21】:而不是再次安装节点,这似乎是公认的解决方案,问题是没有对 nodejs 文件夹/usr/local 的权限。
输入以下命令sudo chmod -R 777 /usr/local/nodejs/
【讨论】:
【参考方案22】:完全删除节点:
brew uninstall --force node
再次安装:
brew install node;
which node # => /usr/local/bin/node
export NODE_PATH='/usr/local/lib/node_modules'
【讨论】:
【参考方案23】:如果对使用 rh-*
包的任何人有用,这对我有用:
sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm
【讨论】:
【参考方案24】:由于我已经使用 node.js 上的 .tar 文件安装了 node.js, 我不得不把节点目录的位置放在:
~/.bashrc
使用命令从普通用户更改为root用户:
sudo -i
然后我必须将路径添加到我将其提取到 .bashrc 文件中的节点,如下所示:
然后使用 .bashrc 引用
。 ~/.bashrc
在
之后npm: command not found
走了
【讨论】:
【参考方案25】:对我来说,上面提到的任何使用 Homebrew 的方法都不适用于 macOS。因此,我使用 Homebrew 卸载了节点并从 https://nodejs.org/en/download/ 下载了节点包并安装了它。它就像一个魅力。
【讨论】:
【参考方案26】:安装 node.js 并运行
npm install -g bower
来自您的项目目录
【讨论】:
以上是关于sudo:npm:找不到命令的主要内容,如果未能解决你的问题,请参考以下文章