Ao instalar o Node na minha máquina, usei o comando abaixo que encontrei em um site.
tar --strip-components 1 -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Sei que tar -xzf
é usado para extrair os arquivos, mas quero saber como o nó está sendo instalado?
Eu tentei instalá-lo dessa maneira. Eu extraí os arquivos do nó para /usr/local
usar o comando abaixo,
tar /usr/local -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Mas isso não funciona. Alguém pode explicar ou me ajudar a entender a diferença entre esses dois comandos?
O que mais o comando 1 está fazendo do que o comando 2 está fazendo?
software-installation
tar
prathapa reddy
fonte
fonte
jodejs
através deapt
comando:sudo apt install nodejs nodejs-legacy
.Respostas:
A estrutura do diretório tarball é assim:
Quando você extrai esse arquivo sem outras opções
/usr/local
, obtém o seguinte:Portanto, um novo diretório é criado
/usr/local
e os arquivos são despejados lá.No entanto, com
--strip-components=1
, um componente do diretório do caminho extraído é removido,node-v6.10.1-linux-x64/bin/
tornandobin/
-node-v6.10.1-linux-x64/bin/npm
se e tornandobin/npm
- se :E
/usr/local/bin
já está dentroPATH
, então você não precisa fazer mais nada para executarnpm
enode
.fonte
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: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:Se você executar
ls
, verá umanode-v4.2.1-linux-x64
pasta.Agora,
--strip-components 1
faz algo interessante para o processo de extração. Deman tar
:Basicamente, isso significa que, quando
tar
você extrair seu arquivo, fingirá que anode-v4.2.1-linux-x64
pasta não está lá. Em vez disso, ele vai extratobin/
,share/
e todas as outras pastas diretamente.De fato, você pode tentar:
Se você executar
ls
, verá que não há mais umanode-v4.2.1-linux-x64
pasta. É apenasbin/
,include/
,lib/
, eshare/
(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ê executarls /usr/local
, poderá até ver esta pasta por aí. É inútil, sinta-se à vontade para excluir comrm
. 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 meiosudo 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ê.fonte