node & nodejs têm versão diferente

15

Atualizei / instalei com êxito a versão mais recente do nó js usando esses comandos (a curlmaneira oficial não está funcionando para mim):

sudo npm cache clean -f
sudo npm install -g n
sudo n stable

sudo ln -sf /usr/local/n/versions/node/<VERSION>/bin/node /usr/bin/node

No entanto, a versão do meu nó e do nodejs se tornam diferentes:

$ node --version
v5.0.0
$ nodejs --version
v0.10.25

Parece que o novo nó está instalado /usr/local/bin/node, então tentei:

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

Mas retorna:

ln: failed to create symbolic link ‘/usr/local/bin/node’: File exists

Eu também uso este link:

$ sudo ln -s /usr/bin/nodejs /usr/bin/node
ln: failed to create symbolic link ‘/usr/bin/node’: File exists

Vou usar algumas estruturas que dependem node, como Ionic. Qual versão do nó ele usará?

O que devo fazer para resolver isso?

Muito obrigado por sua ajuda

Blaze Tama
fonte
A verdadeira questão imo é: como eu digo para sobrescrever qualquer versão de nó existente e vincular o link simbólico a ambos nodejse nodeao binário instalado por n. E se n é incapaz de fazê-lo, qual é a abordagem mais avançada? Em um ambiente de trabalho, é muito propenso a erros, se o nodejs e o nó abordarem versões diferentes do nodejs.
atripes

Respostas:

13

Etapas que resolveram o mesmo problema para mim:

sudo apt-get remove nodejs
sudo ln -s /usr/bin/node /usr/bin/nodejs

Explicação

Você instalou duas versões do nodejs no seu computador, portanto, você precisa remover uma delas. Sua situação:

node v5.0.0 - you will keep this one
nodejs v0.10.25 - this you can remove

Você pode remover o nodejspacote via apt-get removecomando. Isso também removerá o arquivo /usr/bin/nodejse você não receberá sua mensagem de erro novamente.

Agora você pode criar um link simbólico chamado "/ usr / bin / nodejs", que aponte na origem "/ usr / local / bin / node". No seu exemplo, você tem a ordem incorreta dos caminhos "de" e "para"

sudo ln -s source_file myfile

Mais informações sobre a criação de links: Como funcionam os links simbólicos

areim
fonte
5

O erro:

ln: failed to create symbolic link ‘/usr/bin/node’: File exists

normalmente é causado quando você realmente tem duas versões dos Nodejs, uma com o alias do nodee a outra com o nodejsalias, como podemos ver no resultado dos comandos node --versione nodejs --version:

$ node --version
v5.0.0
$ nodejs --version
v0.10.25

portanto, você não pode criar um link simbólico para um arquivo que já existe.

Para resolver isso, você precisa remover completamente os dois pacotes usando:

sudo apt-get purge node
sudo apt-get purge nodejs
sudo rm -rf bin/node bin/node-waf include/node lib/node lib/pkgconfig/nodejs.pc share/man/man1/node

e reinstale apenas o nodejspacote usando o comando:

sudo apt-get install nodejs

e crie um link simbólico usando:

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

ou instale o nodejs-legacyque resolverá esse problema com o comando:

sudo apt-get install nodejs-legacy 
valdeci
fonte
muito obrigado, você adicionou as informações, eu já resolvi o problema sozinho. Eu votei.
areim
0

Para mim, o nodecomando é o NodeJS instalado nvme o nodejscomando é o NodeJS instalado usandoapt-get

Alexander Elgin
fonte