sudo: npm: comando não encontrado

201

Estou tentando atualizar para a versão mais recente do nó. Estou seguindo as instruções em http://davidwalsh.name/upgrade-nodejs

Mas quando eu faço:

sudo npm install -g n

Eu recebo o erro:

sudo: npm: command not found

O npm funciona sem o sudo. Quando eu faço:

whereis node

Entendo:

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

Corrida:

which npm

Shows:

/usr/local/node/bin/npm

Tentei a solução em https://stackoverflow.com/a/5062718/1246159

Mas ainda estou recebendo o mesmo erro. Também observei o arquivo / etc / sudoers e a linha relevante é:

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

Isso parece bom para mim. Como posso obter o NPM trabalhando com o comando sudo?

Marca
fonte
4
Isto funciona? sudo /usr/bin/npm install -g n
22815 Robertklep
2
Você pode tentar reinstalar o nó? Parece que você excluiu npm.
Jeff Sloyer
1
Você pode ter adicionado /usr/local/node/binao seu $PATH, mas npmdeve estar instalado no /usr/local/bin. O primeiro diretório não é o secure_pathque explica por sudoque não o encontra.
22815 robertklep
1
Usando o nvmUbuntu aqui - com o comentário @robertklep, tentei sudo /home/${user}/.nvm/version/node/${version}/bin/npm installe funcionou.
Stav Pan Geffen
2
Ele resolveu o meu problema reinstalando o seguinte pacote. nodejs.org/en/download
Marghoob Suleman

Respostas:

125

O arquivo NPM devem estar em /usr/local/bin/npm. Se não estiver lá, instale o node.js novamente com o pacote em seu site . Isso funcionou no meu caso.

inga
fonte
THX. Se você instalar o nó em outras unidades de dados, em que o sistema operacional não está instalado, não será possível encontrar esse caminho.
Hardik Darji
1
no caso de mac os com homebrew .. duas etapas a fazer é (1) qual nó (2) qual npm deve estar em / usr / local / bin (onde o homebrew instala / symlinks node + npm) ... para resolver .. tente (1) brew doctor (2) brew reinstalar o nó se ele ainda estiver causando problemas .. verifique seu caminho (eco $ PATH). você deve ter vários locais de posição que apontam para várias instalações de nós ... se esse for o caso ... limpeza (como a torna mais limpa) seu ~ / .bashrc / ~ / .bash_profile, para que / usr / local / bin esteja lá carregado sem outro apontando para uma instalação de nó aleatório.
Jimmy MG Lim
3
Esta é uma solução parcial. O problema ocorre quando você instala o nó manualmente. Você deve vincular cada binário instalado em / usr / bin ou / usr / local / bin. Definir o caminho no bashrc do root não funcionará, pois não é lido durante o sudo, portanto, esta é a única maneira que parece, a menos que você instale o pacote.
shrimpwagon
como @shrimpwagon disse, a parte inferior das instruções manuais diz para você vincular "sudo ln -s / usr / local / lib / nodejs / node- $ VERSION- $ DISTRO / bin / node / usr / bin / node sudo ln -s / O comando 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 "
James Nelson
169

eu tive que fazer

sudo apt-get install npm

isso funcionou para mim.

Velocibadgery
fonte
6
É difícil entender o que você deseja expressar.
tiny sunlight
4
Isso está desatualizado. O que funcionou para mim foram esses comandos que encontrei aqui: github.com/nodesource/distributions#debinstall # Usando o Ubuntu curl -sL deb.nodesource.com/setup_5.x | sudo -E bash - sudo apt-get install -y nodejs # Usando o Debian, como curl raiz -sL deb.nodesource.com/setup_5.x | Bash - apt-get install nodejs -y
Hamed
4
@tinysunlight Não sei ao certo o que não está claro. O op diz que o comando npm está ausente. Este comando instala o comando npm.
Velocibadgery
7
Esta não é a resposta correta para a pergunta, porque é óbvia no op que npmjá está instalado, mas não pode ser acessada quando invocada através do sudo. Com esta solução, você reinstala o npm, que já existe. Isso é combater os sintomas, em vez de encontrar a causa. Eu entendo que isso pode corrigir coisas quebradas para algumas pessoas, mas é enganoso, ficar assim.
Dominic
4
Quando instalei o nó usando o NVM no Ubuntu 18.10, o sudo não reconhece o npm como um comando. sudo apt-get install npmtrabalhou para mim.
AlienKevin
91

Para usuários de MAC, as seguintes etapas funcionaram para mim.

$ brew update
$ brew uninstall node
$ brew install node
$ brew postinstall 
Gao
fonte
5
A brew uninstall nodenão funcionou para mim, mas eu continuei com o brew install nodee brew postinstalle corrigiu o problema. Graças
Trevor
2
O que brew postinstallfaz exatamente?
Oliver D
no Homebrew versão 2.2.14 brew postinstallé redundante
Arslan Khan
63

Eu tive o mesmo problema; Aqui estão os comandos para corrigi-lo:

  • 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
Vasanth Umapathy
fonte
2
Trabalhou para mim no CentOS 7
hirikarate
4
Trabalhou para mim Ubuntu 16.04.1 LTS. Como uso o NVM, o primeiro caminho foi para onde o NVM instalou o nó e o npm (o caminho inclui uma versão %HOME%/.nvm/versions/node/v7.4.0/bin/npm). Infelizmente, terei que fazer referência a esta resposta cada vez que atualizar usando o NVM devido à forma como a versão no caminho será alterada
kas
1
Isso resolveu para mim também! Originalmente publicado em Stack Overflow: Em EC2: comando nó sudo não foi encontrado, mas nó sem sudo é ok
Dominic
2
@kas sudo ln -s $(whereis node) /usr/bin/node E assim por diante. no seu perfil do bash.
Aravind Voggu
Trabalhou para mim na instância do AWS ec2.
Chirag Purohit
26

AVISO (editar)

Fazer a chmod 777é uma solução bastante radical. Tente primeiro, um de cada vez, e pare quando alguém trabalha:

  • $ 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 é a única parte da instalação onde eu teria um problema

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

Então eu

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

e viola, npm agora está ligado

$ npm -v
3.10.10

Extra

Se você usou -R 777na lib, minha recomendação seria definir arquivos e diretórios aninhados para uma configuração padrão:

  • $ 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
fonte
3
@Jacksonkr ..... você acabou de recomendar chmoding 777 a pasta local / lib inteira?
Sfratini
Qual chmoddeve ser esse diretório?
precisa saber é o seguinte
1
@tim_xyz drwxr-xr-xsão os padrões da lib. Dito isto, NÃO use o recurso recursivo -Rao restaurar a pasta.
Jacksonkr 5/09
Obrigado! sudo chmod -R 777 / usr / local / lib / node_modules funcionou para mim
Hisagr
18

Eu tive que fazer o seguinte:

  1. brew update
  2. brew uninstall node
  3. Visite https://nodejs.org/en/ baixe o arquivo
  4. Instale o arquivo baixado
maudulus
fonte
2
Você é um herói.
Abdulaziz Noor
8

Para usuários do CentOS, isso funciona para mim:

sudo yum install npm
江南 消夏
fonte
1
O problema com esta abordagem é que no Fedora por exemplo, é muito ultrapassada em DNF / yum repos
ACV
2
No CentOS 7, você precisa habilitar o repo EPEL primeiro:yum install epel-release; yum install npm
hudolejev
8

Para instalar pacotes npm globalmente com permissão sudo, /usr/bin/npmdeve estar disponível. Se npmexistir em algum outro diretório, crie um link virtual como:

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

Funciona no Fedora 25, node8.0.0 e npm5.0.0

Prakash Ramasamy
fonte
6

No macOS, isso funcionou para mim:

brew reinstall node
friederbluemle
fonte
1
Desculpe só notei a questão é marcado com unix, mas ainda pode ser útil, já que é o topo de resultados de pesquisa no Google por "MacOS npm comando não encontrado"
friederbluemle
5

Para debian após a instalação do nó, digite

curl -k -O -L https://npmjs.org/install.sh    
ln -s /usr/bin/nodejs /usr/bin/node  
sh install.sh
Shaharyar Zafar
fonte
5

Se você instalou o node / npm com nvm, o arquivo de configuração do ambiente nvm deve ser executado antes que você possa usar qualquer pacote.

Isso geralmente é encontrado em ~ / .nvm / nvm.sh.

Para executar isso automaticamente, inclua:

source ~/.nvm/nvm.sh

no arquivo .bash_profile para seu usuário

Se você deseja usar o sudo com esse usuário, inclua o parâmetro -i para fazer o sudo definir o ambiente do usuário. por exemplo

sudo -iu jenkins npm install grunt-cli
Garreth McDaid
fonte
4

simplesmente reinstale.

No RHEL, CentOS e Fedora

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

então

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

fácil! .. o node e o npm funcionam como um encanto agora!

Brian Sanchez
fonte
3

Eu resolvi esse problema

apt-get install npm2deb
Игорь Демянюк
fonte
1
qual é essa resposta? O npm2deb é um terceiro
Beau Bouchard
1
não é totalmente "confiável", pois em terceiros pode ser mais provável que comprometido do que a partir da npm diretamente da fonte. eu não sei nada sobre npm2deb mas pense se você quiser usá-lo em sua empresa, eles provavelmente ser rigoroso sobre auditoria lo
Kyle Calica-St
É óbvio para todos.
Игорь Демянюк
1

Eu tive o mesmo problema, o motivo pelo qual era o gerenciador de pacotes npm não foi instalado durante a instalação do nó. Isso foi causado pelo seguinte erro: No processo de instalação, há uma etapa chamada "Configuração personalizada", aqui você tem a opção de escolher uma das seguintes opções: 1) Tempo de execução do Node.js. (Isso é selecionado por padrão). 2) gerenciador de pacotes npm 3) Atalhos da documentação online. 4) Adicionar ao caminho. Se você continuar como está, o gerenciador de pacotes npm não será instalado e, portanto, você receberá o erro.

Solução: selecione o gerenciador de pacotes npm ao obter essas opções. Isso funcionou para mim.

Saurabh Shetty
fonte
1

Se você baixou o pacote do nó e extraiu em algum lugar como /optvocê pode simplesmente criar um link simbólico dentro /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
mipasov
fonte
1

Eu também tive o mesmo problema em Homestead e tentei de várias maneiras. Eu tentei com

sudo apt-get install nodejs

Estou tendo o erro a seguir:

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.

Finalmente eu tentei com

sudo apt-get dist-upgrade

Funcionou bem.

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

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

Trabalhe comigo Resolvendo erros de permissão do EACCES ao instalar pacotes globalmente

Para minimizar a chance de erros de permissão, você pode configurar o npm para usar um diretório diferente. Neste exemplo, você criará e usará o diretório oculto no seu diretório pessoal.

Faça backup do seu computador. Na linha de comandos, em seu diretório inicial, crie um diretório para instalações globais:

 mkdir ~/.npm-global

Configure o npm para usar o novo caminho do diretório:

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

No seu editor de texto preferido, abra ou crie um arquivo ~ / .profile e adicione esta linha:

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

Na linha de comandos, atualize as variáveis ​​do sistema:

 source ~/.profile

Para testar sua nova configuração, instale um pacote globalmente sem usar o sudo:

 npm install -g jshint
eustatos
fonte
Isso funcionou muito bem e economizou muito trabalho!
Sumomo
0

Caminho binário npm anexado ao caminho sudo usando visudo e editando "secure_path"

Agora "sudo npm" funciona

mauricio777
fonte
0

Remova o nó completamente:

  brew uninstall --force node

Instale novamente:

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

Caso possa ser útil para quem usa rh-*pacotes, isso funcionou para mim:

sudo ln -s /opt/rh/rh-nodejs8/root/usr/bin/npm /usr/local/bin/npm
Lionel T
fonte
0

Como instalei o node.js usando o arquivo .tar disponível no node.js, tive que colocar o local do diretório do nó em:

~ / .bashrc

da raiz, mudando de usuário normal para raiz usando o comando:

sudo -i

tive que adicionar o caminho para o nó em que o extraí no arquivo .bashrc, como abaixo: insira a descrição da imagem aqui

depois refereshed .bashrc usando

. ~ / .bashrc

Depois disso

npm: command not found

se afastou

MOHAMMAD WASEEM
fonte
0

Para mim, qualquer um dos métodos mencionados acima usando o Homebrew não funcionou no macOS. Desinstalei o nó usando o Homebrew e baixei o pacote do nó em https://nodejs.org/en/download/ e instalei-o. Funcionou como um encanto.

Manas
fonte
-8

Installl node.js e simplesmente execute

npm install -g bower 

do seu diretório de projeto

YathuGulan Uthayan
fonte