Essa é uma maneira legal (mas irritante) de instalar o NodeJS.
Se você executar tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
o arquivo, verá algo parecido com isto:
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/
Basicamente, isso significa que quando você extrai esse arquivo tar, ele será extraído para uma pasta chamada node-v4.2.1-linux-x64
com todas essas subpastas (e a instalação do nó) dentro dele. Na verdade, você pode até tentar essa extração para ter uma idéia melhor:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz
Se você executar ls
, verá uma node-v4.2.1-linux-x64
pasta.
Agora, --strip-components 1
faz algo interessante para o processo de extração. De man tar
:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
Basicamente, isso significa que, quando tar
você extrair seu arquivo, fingirá que a node-v4.2.1-linux-x64
pasta não está lá. Em vez disso, ele vai extrato bin/
, share/
e todas as outras pastas diretamente.
De fato, você pode tentar:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz --strip-components=1
Se você executar ls
, verá que não há mais uma node-v4.2.1-linux-x64
pasta. É apenas bin/
, include/
, lib/
, e share/
(todos coincidentemente pastas no /usr/local/
).
Seu segundo comando não teria funcionado porque teria extraído a node-v4.2.1-linux-x64
pasta para /usr/local
(se é que foi executada). Se você executar ls /usr/local
, poderá até ver esta pasta por aí. É inútil, sinta-se à vontade para excluir com rm
. Por que é inútil, continue lendo ...
Agora que explicamos como o comando tar funciona, podemos explicar como isso é instalado.
Todo sistema Linux tem algo chamado $PATH
variável, que determina onde os arquivos executáveis são armazenados. Entre esses lugares é /usr/local/bin
. Quando você extrai esse binário interno /usr/local
(o que diz as instruções de instalação), o binário do NodeJS está sendo gravado de /usr/local/bin/node
acordo com o modo como as extrações são feitas. Da mesma forma, todas as bibliotecas estão sendo adicionadas à pasta da biblioteca local e praticamente tudo vai aonde pertence.
Agora, a ressalva (e por que isso é irritante) é que apt
não vai ver, entender ou perceber o que está acontecendo. Você não poderá atualizá-lo por meio sudo apt upgrade
ou similar. Você precisaria entrar manualmente e limpar a instalação antiga do NodeJS e, em seguida, instalar a nova, caso deseje atualizar.
Eu recomendaria que você apenas corresse sudo apt install nodejs-legacy
. Menos dor e é atualizado automaticamente para você.
jodejs
através deapt
comando:sudo apt install nodejs nodejs-legacy
.