Questo è un modo fantastico (ma fastidioso) per installare NodeJS.
Se esegui tar tf /usr/save/node-v4.2.1-linux-x64.tar.gzil 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-x64con 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-x64cartella.
Ora, --strip-components 1fa 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 tarestrarrà il tuo archivio, farà finta che la node-v4.2.1-linux-x64cartella 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-x64cartella. 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-x64cartella /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 $PATHvariabile, 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/nodesecondo 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 aptnon vedrà, non capirà o non capirà cosa sta succedendo. Non sarai in grado di aggiornarlo tramite sudo apt upgradeo 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-legacyinvece di correre . Meno dolore e si aggiorna automaticamente per te.
jodejstramiteaptil comando:sudo apt install nodejs nodejs-legacy.