Al instalar Node en mi máquina, utilicé el siguiente comando que encontré en un sitio web.
tar --strip-components 1 -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Sé que tar -xzf
se usa para extraer los archivos, pero quiero saber cómo se instala el nodo.
Intenté instalarlo de esta manera. Extraje los archivos de nodo para /usr/local
usar el siguiente comando,
tar /usr/local -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Pero esto no funciona. ¿Alguien puede explicarme o ayudarme a comprender la diferencia entre estos dos comandos?
¿Qué más hace el comando 1 que el comando 2?
software-installation
tar
prathapa reddy
fuente
fuente
jodejs
a travésapt
de comandos:sudo apt install nodejs nodejs-legacy
.Respuestas:
La estructura del directorio tarball es así:
Cuando extrae este archivo sin ninguna otra opción
/usr/local
, obtiene esto:Entonces, se crea un nuevo directorio
/usr/local
y los archivos se descargan allí.Sin embargo, con
--strip-components=1
, se elimina un componente de directorio de la ruta extraída, por lo quenode-v6.10.1-linux-x64/bin/
se hacebin/
ynode-v6.10.1-linux-x64/bin/npm
se convierte enbin/npm
:Y
/usr/local/bin
ya está dentroPATH
, por lo que no necesita hacer nada más para ejecutarnpm
ynode
.fuente
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: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:Si corres
ls
, verás unanode-v4.2.1-linux-x64
carpeta.Ahora,
--strip-components 1
hace algo interesante para el proceso de extracción. Deman tar
:Básicamente, esto significa que cuando
tar
va a extraer su archivo, va a fingir que lanode-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:
Si ejecuta
ls
, verá que ya no hay unanode-v4.2.1-linux-x64
carpeta. Es sólobin/
,include/
,lib/
, yshare/
(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 ejecutals /usr/local
, incluso podría ver esta carpeta dando vueltas. Es inútil, no dudes en eliminarlorm
. 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 desudo 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.fuente