Questo è un modo fantastico (ma fastidioso) per installare NodeJS.
Se esegui tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
il file, vedrai qualcosa del genere:
node-v4.2.1-linux-x64/
node-v4.2.1-linux-x64/bin/
node-v4.2.1-linux-x64/bin/npm
node-v4.2.1-linux-x64/bin/node
node-v4.2.1-linux-x64/share/
node-v4.2.1-linux-x64/share/man/
node-v4.2.1-linux-x64/share/man/man1/
Fondamentalmente, questo significa che quando si estrae questo archivio tar, verrà estratto in una cartella chiamata node-v4.2.1-linux-x64
con tutte queste sottocartelle (e l'installazione del nodo) al suo interno. In effetti, puoi anche provare questa estrazione per avere un'idea migliore:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz
Se corri ls
, vedrai una node-v4.2.1-linux-x64
cartella.
Ora, --strip-components 1
fa qualcosa di interessante per il processo di estrazione. Da man tar
:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
Fondamentalmente, questo significa che quando tar
estrarrà il tuo archivio, farà finta che la node-v4.2.1-linux-x64
cartella non sia lì. Invece, sta andando a estrarre bin/
, share/
e tutte le altre cartelle direttamente.
In effetti, puoi provarlo:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz --strip-components=1
Se corri ls
, vedrai che non c'è più una node-v4.2.1-linux-x64
cartella. E 'solo bin/
, include/
, lib/
, e share/
(tutto coincidenza cartelle in /usr/local/
).
Il tuo secondo comando non avrebbe funzionato perché avrebbe appena estratto la node-v4.2.1-linux-x64
cartella /usr/local
(se fosse stata eseguita). Se corri ls /usr/local
, potresti persino vedere questa cartella in giro. È inutile, sentiti libero di eliminare con rm
. Per quanto riguarda il motivo per cui è inutile, continua a leggere ...
Ora che abbiamo spiegato come funziona il comando tar, possiamo spiegare come viene installato.
Ogni sistema Linux ha qualcosa chiamato la $PATH
variabile, che determina dove sono archiviati i file eseguibili. Tra questi luoghi è /usr/local/bin
. Quando si estrae quel file binario all'interno /usr/local
(di cui sono sicuro ciò che dicono le istruzioni di installazione), il binario NodeJS viene scritto /usr/local/bin/node
secondo il modo in cui vengono eseguite le estrazioni. Allo stesso modo, tutte le librerie vengono aggiunte alla cartella delle librerie locali e tutto va praticamente dove appartiene.
Ora, l'avvertimento (e perché questo è fastidioso) è che apt
non vedrà, non capirà o non capirà cosa sta succedendo. Non sarai in grado di aggiornarlo tramite sudo apt upgrade
o simili. Dovresti accedere manualmente e pulire la vecchia installazione di NodeJS e quindi inserirne una nuova nel caso in cui desideri aggiornare.
Consiglierei sudo apt install nodejs-legacy
invece di correre . Meno dolore e si aggiorna automaticamente per te.
jodejs
tramiteapt
il comando:sudo apt install nodejs nodejs-legacy
.