Lors de l'installation de Node sur ma machine, j'ai utilisé la commande ci-dessous que j'ai trouvée sur un site Web.
tar --strip-components 1 -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Je sais que cela tar -xzf
est utilisé pour extraire les archives, mais je veux savoir comment le nœud est installé?
J'ai essayé de l'installer de cette façon. J'ai extrait les fichiers de noeud à l' /usr/local
aide de la commande ci-dessous,
tar /usr/local -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Mais ça ne marche pas. Quelqu'un peut-il m'expliquer ou m'aider à comprendre la différence entre ces deux commandes?
Que fait la commande 1 de plus que la commande 2?
software-installation
tar
prathapa reddy
la source
la source
jodejs
parapt
commande:sudo apt install nodejs nodejs-legacy
.Réponses:
La structure du répertoire tarball est la suivante:
Lorsque vous extrayez cette archive sans aucune autre option dans
/usr/local
, vous obtenez ceci:Ainsi, un nouveau répertoire est créé dans
/usr/local
et les fichiers y sont vidés.Cependant, avec
--strip-components=1
, un composant de répertoire du chemin extrait est supprimé,node-v6.10.1-linux-x64/bin/
devientbin/
etnode-v6.10.1-linux-x64/bin/npm
devient ainsibin/npm
:Et
/usr/local/bin
est déjà dedansPATH
, donc vous n'avez rien d'autre à faire pour exécuternpm
etnode
.la source
C'est en quelque sorte une façon cool (mais ennuyeuse) d'installer NodeJS.
Si vous exécutez
tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
le fichier, vous verrez quelque chose comme ceci:Fondamentalement, cela signifie que lorsque vous extrayez cette archive tar, elle sera extraite dans un dossier appelé
node-v4.2.1-linux-x64
avec tous ces sous-dossiers (et l'installation du nœud) à l'intérieur. En fait, vous pouvez même essayer cette extraction pour avoir une meilleure idée:Si vous exécutez
ls
, vous verrez unnode-v4.2.1-linux-x64
dossier.Maintenant,
--strip-components 1
fait quelque chose d'intéressant pour le processus d'extraction. Deman tar
:Fondamentalement, cela signifie que lorsque vous
tar
allez extraire votre archive, il va faire semblant que lenode-v4.2.1-linux-x64
dossier n'est pas là. , Il est au lieu d' aller à l' extraitbin/
,share/
et tous les autres dossiers directement.En fait, vous pouvez l'essayer:
Si vous exécutez
ls
, vous verrez qu'il n'y a plus denode-v4.2.1-linux-x64
dossier. Il est justebin/
,include/
,lib/
etshare/
(tous les dossiers par hasard dans/usr/local/
).Votre deuxième commande n'aurait pas fonctionné car elle aurait juste extrait le
node-v4.2.1-linux-x64
dossier/usr/local
(si elle s'exécutait même). Si vous exécutezls /usr/local
, vous pourriez même voir ce dossier traîner. C'est inutile, n'hésitez pas à supprimer avecrm
. Quant à savoir pourquoi c'est inutile, continuez à lire ...Maintenant que nous avons expliqué comment fonctionne la commande tar, nous pouvons expliquer comment elle est installée.
Chaque système Linux a quelque chose appelé la
$PATH
variable, qui détermine où les fichiers exécutables sont stockés. Parmi ces endroits est/usr/local/bin
. Lorsque vous extrayez ce binaire à l'intérieur/usr/local
(ce que je suis sûr que ce sont vos instructions d'installation), le binaire NodeJS est écrit/usr/local/bin/node
selon la façon dont les extractions sont effectuées. De même, toutes les bibliothèques sont ajoutées au dossier de la bibliothèque locale et tout va à peu près là où il appartient.Maintenant, la mise en garde (et pourquoi cela est ennuyeux) est que vous
apt
ne verrez pas, ne comprendrez pas ou ne réaliserez pas ce qui se passe. Vous ne pourrez pas le mettre à jour viasudo apt upgrade
ou similaire. Vous devez entrer manuellement et nettoyer l'ancienne installation de NodeJS, puis en installer une nouvelle au cas où vous souhaiteriez mettre à niveau.Je vous recommanderais simplement de courir à la
sudo apt install nodejs-legacy
place. Moins de douleur et il se met automatiquement à jour pour vous.la source