nodejs vs node su ubuntu 12.04


363

Ho installato nodejs su Ubuntu dalle istruzioni fornite qui

Quando scrivo node --versionnel terminale vedo questo:
-bash: /usr/sbin/node: No such file or directory

Riesco a vedere il nodo nella /usr/sbin/directory, però.

Scrivere npm --versionspettacoli 1.3.5
Scrivere nodejs --versionspettacoliv0.10.15

Inoltre, posso vedere il nodo nella /usr/bin/directory.

Quindi, come faccio a nodelavorare?

Inoltre, se uso zsh invece di bash, il nodecomando funziona.


1
Se "vedi il nodo in / usr / bin /", allora qual è l'output di ls -l /usr/bin/node?
randunel,

1
@randunel Ho ottenuto questo risultatolrwxrwxrwx 1 root root 22 Jan 1 2013 /usr/bin/node -> /etc/alternatives/node
Jatin

Hai apportato modifiche a shell rc?
randunel,

Questo sembra un problema di shell dopo la modifica, cosa produce l' export | grep PATHoutput quando non lo si utilizza zsh? (dovrebbe stampare /usr/bintra le altre cose)
randunel

1
soluzione + spiegazione qui: stackoverflow.com/questions/21168141/...
throbi

Risposte:


599

Devi creare manualmente un link simbolico /usr/bin/node. Scorciatoia per shell compatibili con bash:

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

O se usi shell non standard, codifica semplicemente il percorso che trovi con which nodejs:

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

Modifica successiva

Ho trovato questa spiegazione nel link che hai pubblicato

Esiste un conflitto di denominazione con il pacchetto del nodo (Programma nodo radio pacchetto amatoriale) e il file binario nodejs è stato rinominato da nodo a nodejs. Dovrai eseguire il collegamento simbolico / usr / bin / node a / usr / bin / nodejs oppure potresti disinstallare il programma di nodo radio pacchetto amatoriale per evitare quel conflitto.

Più tardi, modifica

È da un po 'che non rispondo. Sebbene la soluzione che ho pubblicato qui abbia funzionato più volte per me, gli utenti hanno segnalato alcune altre soluzioni nei commenti:

Da @ user229115

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

Da AskUbuntu (utente rimanente)

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs
sudo apt-get install nodejs

va bene! Anche se, se uso zsh, il nodecomando funziona.
Jatin,

1
Inoltre, come posso disinstallare il programma Amateur Packet Radio Node? Ci ho provato sudo apt-get remove nodema dicePackage node is not installed, so not removed
Jatin,

Non è necessario disinstallarlo, dopo i tuoi commenti, questo sembra un problema di shell, non un problema di pacchetto nodo.
randunel,

La risposta di @ randunel non ha funzionato per me perché /usr/bin/env nodenon avrebbe funzionato. La soluzione di @ BennyMcBenBen ha funzionato
francoisrv,

2
La risposta di @ Tino è quella giusta, vedi la nodejs-legacydescrizione del pacchetto. La risposta collegata da @BennyMcBenBen è stata aggiornata anche con istruzioni simili.
Tricasse,

88

Penso che sia così:

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

Usare alternative Debian.


3
Questa sembra essere l'opzione migliore della risposta accettata a non cambia manualmente la cartella / usr / bin / e sta usando l'infrastruttura per comandi alternativi
Dominik Fretz,

Non l'ho provato, ma ho guardato i update-alternativedocumenti. Se funziona davvero, allora è una soluzione migliore :)
randunel

3
puoi essere più specifico su ciò che sta facendo?
bcorso,

@DominikFretz meh. Il risultato finale è esattamente lo stesso usando un comando specifico di Debian rispetto a uno conforme a POSIX. (Avresti potuto fare update-alternatives --install /usr/local/bin/fribjazt node /usr/bin/nodejs 10.) A ciascuno il suo, ma preferisco la pianura ln.
Kojiro,

2
Dovevo che source ~/.bashrcquesto avesse effetto
iNulty

64

Apparentemente la soluzione differisce tra le versioni di Ubuntu. Di seguito ha funzionato per me su Ubuntu 13.10:

sudo apt-get install nodejs-legacy

HTH

Modifica: regola empirica:

Se hai installato nodejsma manca il /usr/bin/nodebinario, installa anche nodejs-legacy. Questo crea solo il softlink mancante.

Secondo i miei test, Ubuntu 17.10 e versioni successive hanno già installato il softlink di compatibilità /usr/bin/nodedopo l' nodejsinstallazione, quindi nodejs-legacymanca da queste versioni in quanto non è più necessario.


sembra che nodejs-legacy non sia più mantenuto. l'ultima build termina il 10-04-2013
francoisrv

8
nodejs-legacynon ha bisogno di molta manutenzione. Aggiunge solo un softlink simile a sudo ln -s nodejs /usr/bin/node, almeno su LTS 14.04
Tino,

4
Su Ubuntu 14.04, nodejs e nodejs-legacy installano la stessa versione di Node (0.10.25). +1 a @Tino.
Mark E. Haase,

Funziona anche per me in Debian Jessie. Questa dovrebbe essere la risposta accettata in quanto è come dovrebbero essere le cose. Solo le persone che usano il pacchetto radio amatoriale non dovrebbero farlo. Mi chiedo perché non hanno rinominato il pacchetto radio come hanno fatto con chromium-bsu.
Jérôme,

Ciò comporterà 2 istanze di nodo sul tuo sistema e questo non verrà più mantenuto ... Consiglia invece di collegarti a nodejs.
PodTech.io

30

Ho lo stesso problema in Ubuntu 14.04.

Ho installato "nodejs" e funziona, ma solo se uso il comando "nodejs". Se provo ad usare "nodo" non succede nulla.

Ho risolto questo problema nel prossimo modo:

  1. Installa nodejs-legacy

    sudo apt-get install nodejs-legacy

Dopodiché, quando digito "nodo" nella riga di comando ricevo un messaggio di errore "/ usr / sbin / node: nessun file o directory"

  1. In secondo luogo, quello che ho fatto, è un collegamento simbolico su "nodejs":

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

4
C'è qualcosa di strano nel tuo sistema. nodedovrebbe essere installato in /usr/bin/e non /usr/sbin/. Mi sembra che tu abbia installato il nodepacchetto Ubuntu da hamradio in precedenza (vedi pacchetti.ubuntu.com/trusty/all/node/filelist ) e abbia dimenticato di eseguire hash -ra livello di shell, in modo tale che la shell ricordi ancora il percorso sbagliato. Il secondo ha lnrisolto anche quello, ma non è più necessario dopo aver lasciato quella shell.
Tino,

A proposito, anche le risposte sbagliate sono buone per spiegare tutti i problemi dovuti a tre pacchetti tutti con nomi molto simili: node( /usr/sbin/nodeper qualcosa di completamente diverso), nodejs( /usr/bin/nodejs) e nodejs-legacy( /usr/bin/node, dipende dal pacchetto nodejs).
Tino,

Questo è successo anche a me. Avevo installato il nodo dalla fonte qualche tempo fa. node -v => 0.10.2mentre nodejs -v => 5.5.0. L'esecuzione del comando which nodeindicava sempre questa installazione locale. Alla fine, ho dovuto unset NODE_PATH, che ha indicato l'installazione locale per risolverlo. Dopo questo, node -v => 5.5.0e npm install ha iniziato a lavorare per i pacchetti a seconda del nodo => 5.0.
CHsurfer,

11

Questo è successo anche a me.

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

Il problema era che avevo installato il nodo dalla fonte qualche tempo fa. In esecuzione

which node

ha sempre indicato questa installazione locale. Anche,

echo NODE_PATH

indicò l'installazione locale.

l'eliminazione della directory con l'installazione di origine non ha aiutato. Ha appena rotto il comando node. Alla fine, il disimpegno della variabile ambientale NODE_PATH e l'eliminazione, quindi la reinstallazione di nodejs, hanno funzionato.

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

Dopodichè,

node -v => 5.5.0

e npm install ha iniziato a funzionare per i pacchetti in base a Nodo => 5.0.


Questo ha funzionato per me. Peccato che ho fatto casino per un'ora prima di trovarlo.
Dustin Fraker,

11

Node Version Manager (nvm)

Se ti piace installare più versioni nodejs e passare facilmente da una all'altra, ti suggerirei di utilizzare Node Version Manger . Risolve anche il problema di denominazione ( nodevs nodejs)

È abbastanza semplice:

Installa una versione di nodejs:

$ nvm install 4.4

Ora hai nodejs 4.4 oltre alla versione che era già installata e puoi semplicemente usare il nodecomando per raggiungere la versione appena installata:

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

Puoi installare più versioni di nodejs e passare facilmente da una all'altra:

$ 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)

2
Ciò ha risolto il mio problema, grazie mille, ho trovato alcuni comandi utili nvmsu Come installare Node.js su un server Ubuntu 14.04
Huy Nguyen,

1
questo ha funzionato per me. Anche una guida disponibile qui: digitalocean.com/community/tutorials/…
Koen Cornelis

10

Sono nuovo di tutto ciò, ma per me ha funzionato un semplice alias:

alias node='env NODE_NO_READLINE=1 rlwrap nodejs'

almeno per eseguire cose direttamente in bash ed eseguire file .js.


Ha funzionato senza rlwrap. Grazie!
Shurik,

Grazie @Phill, sei fantastico!
Yusril Herlian Syah

9

Che ne dici di usare le istruzioni ufficiali dal sito nodejs :

Per v7:

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

Per v6:

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

Per v4:

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

Ho testato questi da Windows bash (tramite sottosistema per Linux - 14.04) e raspbian (basato su ARM Debian). In esecuzionesudo apt-get install -y nodejs senza prima eseguire lo script di installazione comporterà il recupero del nodo 0.10.

Se stai pensando di installare moduli npm nativi che richiedono build, esegui anche:

sudo apt install -y build-essential

Nota: questo è il percorso raccomandato per qualsiasi distribuzione basata su Debian in tutte le architetture.


7

Aggiunta alla risposta corretta di @ randunel (non posso ancora commentare SO):

Ho anche dovuto ricollegare / usr / local / bin / node a / usr / bin / nodejs.

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

Apparentemente, questo stava sovrascrivendo il comando / usr / bin / node.

Non ho idea di come sia stato risolto, ma spero che aiuti qualcun altro in quanto è stato un dolore capire perché quanto sopra non funzionasse per me.


7

Risposta tardiva, ma per informazioni aggiornate ...

Se installi node.js usando il metodo consigliato dal readme di installazione di github del nodo , suggerisce di seguire le istruzioni sull'articolo del blog di nodesource , piuttosto che installare dal repository apt-get obsoleto, node.js dovrebbe essere eseguito usando il nodecomando, così come il nodejscomando, senza dover creare un nuovo link simbolico.

Questo metodo dall'articolo è:

# 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

Si noti che questo è per v0.12, che probabilmente diventerà obsoleto in un futuro non troppo lontano.

Inoltre, se sei dietro un proxy aziendale (come me) ti consigliamo di aggiungere l'opzione -E al comando sudo, per preservare le variabili env richieste per il proxy:

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



4

Se ti trovi su un'istanza AWS EC2 che esegue un'istanza di Ubuntu (testata su Ubuntu 16.x), questi passaggi potrebbero funzionare per te:

    sudo apt-get update
    sudo apt-get --purge remove node -y
    sudo apt-get --purge rimuove nodejs -y
    sudo apt-get --purge remove legacy-node -y
    sudo rm / usr / bin / node
    curl -sL https://deb.nodesource.com/setup_6.x | sudo bash -
    sudo apt-get install nodejs -y
    nodo -v

Se tutto è corretto, l'ultimo comando deve avere un output come: v6.xx

In caso contrario, eseguire quanto segue:

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

Spero che questo possa aiutare. Mi ha aiutato magicamente (hehe).


3

Ho avuto lo stesso problema link simbolico mi ha aiutato: sudo ln -s / usr / bin / nodejs / usr / bin / node dopo che sudo npm installa -g phantomjs-prebuilt

è andato liscio


2

Il modo migliore per installare nodejs è tramite NVM (Node Version Manager)

Elimina le versioni precedenti:

$ sudo apt-get nodo di eliminazione
$ sudo apt autoremove

Elimina anche tutti i node_modules $ sudo rm -rf node_modulesnella directory contenente questa cartella.

Node & Nodejs sono tecnicamente la stessa cosa. È cambiata solo la denominazione.

Prima installa o aggiorna nvm

per funzionare come root

$ sudo su 

Poi

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

O

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

Controlla nvm per il percorso

$ source ~ / .profile
$ nvm ls-remote

se ricevi un errore riguardo alla lista, installa git.

$ sudo apt-get install git

Rieseguire:

$ nvm ls-remote
O
$ sudo nvm ls-remote

$ nvm installa la versione richiesta 

Verifica della versione

# nodo --versione
nvm usa la versione richiesta

CURTESIA DELLE INFORMAZIONI:

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


1

Avevo creato un collegamento simbolico, ma non funzionava ancora.

Ho dimenticato di riavviare il mio terminale (la mia connessione putty). Dopo che ho funzionato senza il link simbolico :)


1

Sarà utile per i principianti assoluti

Sebbene tu abbia la risposta, volevo solo sottolineare che il nodecomando (senza parametri) avvierà il nodo in modalità REPL read-eval-print-loop per eseguire codice javascript non elaborato.

Un altro modo di usare il nodecomando è fornire un jsfile come parametro. Questo è il modo in cui lo usiamo principalmente.


0

È facoltativo rimuovere il nodo e i nodijs esistenti, ma in alternativa è necessario installare gli ultimi nodi 7.x.

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

0

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

È diventato lo standard per la gestione di Node.js.

Quando hai bisogno di una nuova versione:

nvm install NEW_VER
nvm use XXX

Se qualcosa va storto puoi sempre tornare indietro

nvm use OLD_VER


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
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.