nodejs vs node no ubuntu 12.04

363

Eu instalei o nodejs no ubuntu a partir das instruções fornecidas aqui

Quando escrevo node --versionno terminal, vejo o seguinte:
-bash: /usr/sbin/node: No such file or directory

Eu posso ver o nó no /usr/sbin/ diretório, no entanto.

Escrever npm --versionmostra 1.3.5
Escrevernodejs --version programasv0.10.15

Além disso, eu posso ver o nó no /usr/bin/ diretório

Então, como eu recebo node trabalhar?

Além disso, se eu usar o zsh em vez do bash, o nodecomando funcionará.

Jatin
fonte
11
Se "você vê o nó em / usr / bin /", qual é o resultado ls -l /usr/bin/node?
Randunel
11
@randunel Eu consegui esta saídalrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Jatin
Você fez alterações no shell rc?
Randunel
Parece um problema de shell após a sua edição. O que é export | grep PATHgerado quando não está sendo usado zsh? (deve imprimir /usr/binentre outras coisas)
randunel
11
solução + explicação aqui: stackoverflow.com/questions/21168141/…
throbi:

Respostas:

599

Você precisa criar manualmente um link simbólico /usr/bin/node. Atalho para shells compatíveis com bash:

sudo ln -s `which nodejs` /usr/bin/node

Ou, se você usar shells fora do padrão, apenas codifique o caminho encontrado which nodejs:

sudo ln -s /usr/bin/nodejs /usr/bin/node

Edição posterior

Encontrei esta explicação no link que você postou

Há um conflito de nomenclatura com o pacote do nó (Programa de Nó do Amateur Packet Radio) e o binário do nodejs foi renomeado de node para nodejs. Você precisará vincular / usr / bin / node a / usr / bin / nodejs ou poderá desinstalar o Programa de Nó de Rádio de Pacotes Amador para evitar esse conflito.

Mais tarde depois editar

Já faz um tempo desde que eu respondi isso. Embora a solução que eu publiquei aqui funcione para mim várias vezes, os usuários relataram mais algumas soluções nos comentários:

From @ user229115

sudo update-alternatives --install /usr/bin/node node /usr/bin/nodejs 10

Do AskUbuntu (usuário esquerdo)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs
randunel
fonte
OK! Embora, se eu usar zsh, o nodecomando funcione.
Jatin
11
Além disso, como eu desinstalo o programa Amateur Packet Radio Node? Eu tentei, sudo apt-get remove nodemas dizPackage node is not installed, so not removed
Jatin
Você não precisa desinstalá-lo, após seus comentários, isso parece um problema de shell, não um problema de pacote de nós.
Randunel
A resposta de @ randunel não funcionou para mim, pois /usr/bin/env nodenão funcionaria. A solução do @ BennyMcBenBen funcionou
francoisrv
2
A resposta do @ Tino é a correta, veja a nodejs-legacydescrição do pacote. A resposta vinculada por @BennyMcBenBen também foi atualizada com instruções semelhantes.
Tricasse
88

Eu acho que é isso:

sudo update-alternative - install / usr / bin / nó nó / usr / bin / nodejs 10

Usando alternativas Debian.

user229115
fonte
3
Esta parece ser a opção melhor do que a resposta a aceita-lo não muda manualmente o / pasta / usr / bin e está usando a infra-estrutura de comandos alternativos
Dominik Fretz
Ainda não tentei, mas olhei para os update-alternativedocumentos. Se ele realmente funciona, então é uma solução melhor :)
randunel
3
você pode ser mais específico sobre o que isso está fazendo?
bcorso
@DominikFretz meh. O resultado final é exatamente o mesmo usando o comando específico do Debian versus um comando compatível com POSIX. (Você poderia ter feito update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) Cada um na sua, mas eu prefiro a planície ln.
Kojiro
2
Eu tive que source ~/.bashrcpara isso tenha efeito
iNulty
64

Aparentemente, a solução difere entre as versões do Ubuntu. A seguir funcionou para mim no Ubuntu 13.10:

sudo apt-get install nodejs-legacy

HTH

Editar: Regra geral:

Se você instalou, nodejsmas está faltando o /usr/bin/nodebinário, instale também nodejs-legacy. Isso apenas cria o softlink ausente.

De acordo com meus testes, o Ubuntu 17.10 e acima já possuem o link de compatibilidade compatível /usr/bin/nodeapós a nodejsinstalação, portanto, nodejs-legacyfalta nessas versões, pois não é mais necessário.

Tino
fonte
parece que o nodejs-legacy não é mais mantido. última compilação para em 10/04/2013
francoisrv
8
nodejs-legacynão precisa de muita manutenção. Ele apenas adiciona um softlink semelhante a sudo ln -s nodejs /usr/bin/node, pelo menos no LTS 14.04
Tino
4
No Ubuntu 14.04, nodejs e nodejs-legacy instalam a mesma versão do Node (0.10.25). +1 para @Tino.
Mark E. Haase
Funciona para mim no Debian Jessie também. Essa deve ser a resposta aceita, pois é assim que as coisas devem ser. Somente pessoas que usam o pacote de rádio amador não devem fazer isso. Estou me perguntando por que eles não renomearam o pacote de rádio como fizeram com chromium-bsu.
Jérôme
Isso resultará em 2 instâncias do nó no seu sistema e isso não será mais mantido ... Recomendamos que você vincule ao nodejs.
PodTech.io
30

Eu tenho o mesmo problema no Ubuntu 14.04.

Eu instalei o "nodejs" e ele está funcionando, mas somente se eu estiver usando o comando "nodejs". Se eu tentar usar o "nó", nada acontece.

Eu corrigi esse problema da próxima maneira:

  1. Instalar nodejs-legacy

    sudo apt-get install nodejs-legacy

Depois disso, quando digito "node" na linha de comando, recebo uma mensagem de erro "/ usr / sbin / node: esse arquivo ou diretório não existe"

  1. Segundo, o que eu fiz, é um link simbólico no "nodejs":

    sudo ln -s / usr / bin / nodejs / usr / sbin / node
Dmytro Medvid
fonte
4
Há algo estranho no seu sistema. nodedeve estar instalado /usr/bin/e não /usr/sbin/. Parece-me que você já instalou o nodepacote Ubuntu do hamradio antes (consulte packages.ubuntu.com/trusty/all/node/filelist ) e esqueceu de executar hash -rno nível do shell, de modo que o shell ainda se lembrasse do caminho errado. O segundo lncorrigiu isso também, mas não é mais necessário depois que você sai desse shell.
Tino
BTW, mesmo respostas erradas são boas para explicar todos os problemas devido a três pacotes com nomes muito semelhantes: node( /usr/sbin/nodepara algo completamente diferente), nodejs( /usr/bin/nodejs) e nodejs-legacy( /usr/bin/node, depende do pacote nodejs).
Tino
Isso também aconteceu a mim. Eu instalei o nó da fonte há algum tempo. node -v => 0.10.2enquanto nodejs -v => 5.5.0. A execução do comando which nodesempre apontava para esta instalação local. No final, eu precisei unset NODE_PATH, que apontava para a instalação local para corrigi-lo. Depois disso, node -v => 5.5.0e npm install começou a trabalhar para pacotes, dependendo do Nó => 5.0.
CHsurfer
11

Isso também aconteceu a mim.

node -v => 0.10.2
nodejs -v => 5.5.0

O problema era que eu havia instalado o nó da fonte há algum tempo. Corrida

which node

sempre apontou para esta instalação local. Além disso,

echo NODE_PATH

apontou para a instalação local.

excluir o diretório com a instalação de origem não ajudou. Apenas quebrou o comando do nó. No final, a configuração da variável de ambiente NODE_PATH e a remoção e a reinstalação do nodejs fizeram o truque.

unset NODE_PATH
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

Depois disto,

node -v => 5.5.0

e a instalação do npm começou a funcionar para pacotes, dependendo do Nó => 5.0.

CHsurfer
fonte
Isso funcionou para mim. Pena que eu errei por uma hora antes de encontrá-lo.
Dustin Fraker
11

Gerenciador de versão do nó (nvm)

Se você deseja instalar várias versões do nodejs e alternar facilmente entre elas, sugiro usar o Node Version Manger . Também resolve o problema de nomeação ( nodevs nodejs)

É bem simples:

Instale uma versão do nodejs:

$ nvm install 4.4

Agora você possui o nodejs 4.4, além da versão que já foi instalada, e pode apenas usar o nodecomando para alcançar a versão recém-instalada:

$ node -v    // The new version added by nvm.
v4.4.5
$ nodejs -v  // The OS version is untouched and still available.
v0.10.25

Você pode instalar mais versões do nodejs e alternar facilmente entre elas:

$ nvm install 6.2
$ nvm use 6.2
Now using node v6.2.1 (npm v3.9.3)
$ node -v
v6.2.1
$ nvm use 4.4
Now using node v4.4.5 (npm v2.15.5)
Rotareti
fonte
2
Que de resolvido o meu problema, muito obrigado, eu encontrei alguns comandos úteis para nvmon Como instalar o Node.js em um servidor Ubuntu 14.04
Huy Nguyen
11
isso funcionou para mim. Também um guia disponível aqui: digitalocean.com/community/tutorials/…
Koen Cornelis
10

Eu sou novo em tudo isso, mas para mim um alias simples funcionou:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

pelo menos para executar as coisas diretamente no bash e executar arquivos .js.

Phill
fonte
Trabalhou sem rlwrap. Obrigado!
Shurik
Obrigado @Phill, você é demais!
Yusril Herlian Syah
9

Que tal usar as instruções oficiais do site nodejs :

Para v7:

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs

Para v6:

curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash -
sudo apt-get install -y nodejs

Para v4:

curl -sL https://deb.nodesource.com/setup_4.x | sudo -E bash -
sudo apt-get install -y nodejs

Eu testei isso no Windows bash (via subsistema para Linux - 14.04) e raspbian (baseado no ARM Debian). A execução sudo apt-get install -y nodejssem primeiro executar o script de instalação resultará na obtenção do nó 0.10.

Se você estiver planejando instalar módulos npm nativos que requerem compilação, execute também:

sudo apt install -y build-essential

Nota: este é o caminho recomendado para qualquer distribuição baseada em Debian em todas as arquiteturas.

cchamberlain
fonte
7

Adicionando à resposta correta de @ randunel (ainda não é possível comentar no SO):

Eu também tive que ligar / usr / local / bin / node para / usr / bin / nodejs também.

sudo ln -s /usr/bin/nodejs /usr/local/bin/node

Aparentemente, isso estava substituindo o comando / usr / bin / node.

Não faço ideia de como isso foi definido, mas espero que ajude outra pessoa, pois foi uma dor de cabeça descobrir por que o exposto acima não estava funcionando para mim.

kfblake
fonte
7

Resposta tardia, mas para informações atualizadas ...

Se você instalar o node.js usando o método recommend do leia - me de instalação do github do , é recomendável seguir as instruções no artigo do blog nodesource , em vez de instalar a partir do apt-get repo desatualizado, o node.js deve ser executado usando o nodecomando bem como o nodejscomando, sem precisar fazer um novo link simbólico.

Este método do artigo é:

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

Observe que isso é para a v0.12, que provavelmente ficará desatualizado no futuro não distante.

Além disso, se você estiver atrás de um proxy corporativo (como eu), desejará adicionar a opção -E ao comando sudo, para preservar os ambientes necessários para o proxy:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

Erresen
fonte
7

Isso funciona para mim:

alias node=nodejs

Depois de seguir as instruções neste link.

Burak Tutanlar
fonte
4

Se você estiver em uma instância do AWS EC2 executando uma instância do Ubuntu (testada no Ubuntu 16.x), essas etapas poderão funcionar para você:

    sudo apt-get update
    sudo apt-get --purge remove o nó -y
    sudo apt-get --purge remove nodejs -y
    sudo apt-get --purge remove o nó herdado -y
    sudo rm / usr / bin / nó
    curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
    sudo apt-get install nodejs -y
    nó -v

Se tudo estiver correto, o último comando terá uma saída como: v6.xx

Caso contrário, execute o seguinte:

    sudo ln -s / usr / bin / nodejs / usr / bin / node

Espero que isso ajude. Isso me ajudou magicamente (hehe).

Vivek
fonte
3

Eu tive o mesmo problema que o link simbólico me ajudou: sudo ln -s / usr / bin / nodejs / usr / bin / node depois disso sudo npm install -g phantomjs-prebuilt

correu bem

arr
fonte
2

A melhor maneira de instalar o nodejs é através do NVM (Node Version Manager)

Excluir versões anteriores:

nó de limpeza $ sudo apt-get
$ sudo apt autoremove

Exclua também todos os node_modules $ sudo rm -rf node_modulesno diretório que contém esta pasta.

Nó e Nodejs são tecnicamente a mesma coisa. Apenas a nomeação mudou.

Primeiro instale ou atualize o nvm

executar como root

$ sudo su 

Então

$ curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | bater

OU

$ wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.7/install.sh | bater

Verifique nvm para o caminho

$ source ~ / .profile
$ nvm ls-remote

Se você receber um erro em relação à listagem, instale o git.

$ sudo apt-get install git

Execute novamente:

$ nvm ls-remote
OU
$ sudo nvm ls-remote

$ nvm install version-you-require 

Verificando Versão

# node --version
nvm use a versão que você precisa

CORTESIA DA INFORMAÇÃO:

https://www.digitalocean.com/community/tutorials/how-to-install-node-js-with-nvm-node-version-manager-on-a-vps

CSEngineer
fonte
1

Eu criei um link simbólico, mas ele ainda não estava funcionando.

Esqueci de reiniciar meu terminal (minha conexão de massa). Depois que eu tinha funcionado sem o link simbólico :)

Jamie Hutber
fonte
1

Será útil para iniciantes absolutos

Embora você tenha a resposta, só gostaria de salientar que o nodecomando (sem nenhum parâmetro) iniciará o nó no modo REPL read-eval-print-loop para executar o código javascript bruto.

Outra maneira de usar o nodecomando é fornecendo um jsarquivo como parâmetro. É assim que usamos principalmente.

Mohammed Zameer
fonte
0

É opcional remover o nó e nodejs existentes, mas é necessário instalar alternativamente os nodejs 7.x mais recentes.

curl -sL https://deb.nodesource.com/setup_7.x | sudo -E bash -
sudo apt-get install -y nodejs
gino
fonte
0

Basta usar o NVM (Node Version Manager) - https://github.com/creationix/nvm

Tornou-se o padrão para gerenciar o Node.js.

Quando você precisar de uma nova versão:

nvm install NEW_VER
nvm use XXX

Se algo der errado, você sempre pode voltar com

nvm use OLD_VER
Dimitar Mazhlekov
fonte
0

https://nodejs.org/en/download/

Download .pkg file on your mac and install it. it directly works.

  ~ which node
/usr/local/bin/node
  ~ node --version
v10.11.0
  ~ which npm
/usr/local/bin/npm
  ~ npm --version
6.4.1
Ashok R
fonte