Esta es una forma genial (pero molesta) de instalar NodeJS.
Si ejecuta tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
el archivo, verá algo como esto:
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/
Básicamente, esto significa que cuando extrae este archivo tar, se extraerá a una carpeta llamada node-v4.2.1-linux-x64
con todas estas subcarpetas (y la instalación del nodo) dentro de él. De hecho, incluso puedes probar esta extracción para tener una mejor idea:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz
Si corres ls
, verás una node-v4.2.1-linux-x64
carpeta.
Ahora, --strip-components 1
hace algo interesante para el proceso de extracción. De man tar
:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
Básicamente, esto significa que cuando tar
va a extraer su archivo, va a fingir que la node-v4.2.1-linux-x64
carpeta no está allí. En cambio, se extraerá bin/
, share/
y todas las demás carpetas directamente.
De hecho, puedes probarlo:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz --strip-components=1
Si ejecuta ls
, verá que ya no hay una node-v4.2.1-linux-x64
carpeta. Es sólo bin/
, include/
, lib/
, y share/
(todas las carpetas en coincidencia /usr/local/
).
Su segundo comando no habría funcionado porque simplemente habría extraído la node-v4.2.1-linux-x64
carpeta /usr/local
(si es que se ejecutó). Si ejecuta ls /usr/local
, incluso podría ver esta carpeta dando vueltas. Es inútil, no dudes en eliminarlo rm
. En cuanto a por qué es inútil, sigue leyendo ...
Ahora que hemos explicado cómo funciona el comando tar, podemos explicar cómo se instala.
Cada sistema Linux tiene algo llamado $PATH
variable, que determina dónde se almacenan los archivos ejecutables. Entre estos lugares está /usr/local/bin
. Cuando extrae ese binario dentro /usr/local
(lo que estoy seguro es lo que dicen sus instrucciones de instalación), se está escribiendo el binario NodeJS /usr/local/bin/node
según cómo se realizan las extracciones. Del mismo modo, todas las bibliotecas se están agregando a la carpeta de la biblioteca local y casi todo va a donde pertenece.
Ahora, la advertencia (y por qué esto es molesto) es que apt
no verá ni comprenderá ni se dará cuenta de lo que está sucediendo. No podrá actualizarlo a través de sudo apt upgrade
o similar. Debería ingresar manualmente y limpiar la antigua instalación de NodeJS y luego instalar la nueva en caso de que alguna vez desee actualizar.
Te recomendaría que solo corras en su sudo apt install nodejs-legacy
lugar. Menos dolor, y se actualiza automáticamente para usted.
jodejs
a travésapt
de comandos:sudo apt install nodejs nodejs-legacy
.