Bei der Installation von Node auf meinem Computer habe ich den folgenden Befehl verwendet, den ich auf einer Website gefunden habe.
tar --strip-components 1 -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Ich weiß, dass dies tar -xzf
zum Extrahieren der Archive verwendet wird, aber ich möchte wissen, wie der Knoten installiert wird.
Ich habe versucht, es auf diese Weise zu installieren. Ich habe die Knotendateien /usr/local
mit dem folgenden Befehl extrahiert :
tar /usr/local -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Das funktioniert aber nicht. Kann mir jemand erklären oder helfen, den Unterschied zwischen diesen beiden Befehlen zu verstehen?
Was macht Befehl 1 mehr als Befehl 2?
software-installation
tar
Prathapa Reddy
quelle
quelle
jodejs
über denapt
Befehl installieren :sudo apt install nodejs nodejs-legacy
.Antworten:
Die Tarball-Verzeichnisstruktur sieht folgendermaßen aus:
Wenn Sie dieses Archiv ohne weitere Optionen extrahieren
/usr/local
, erhalten Sie Folgendes:Daher wird ein neues Verzeichnis erstellt
/usr/local
und die Dateien werden dort gespeichert.Jedoch mit
--strip-components=1
, eine Verzeichniskomponente aus dem extrahierten Pfad entfernt wird, sonode-v6.10.1-linux-x64/bin/
wird ,bin/
undnode-v6.10.1-linux-x64/bin/npm
wird zubin/npm
:Und
/usr/local/bin
ist bereits inPATH
, so dass Sie nichts anderes tun müssen, umnpm
und auszuführennode
.quelle
Dies ist eine coole (aber nervige) Art, NodeJS zu installieren.
Wenn Sie
tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
die Datei ausführen , wird Folgendes angezeigt:Grundsätzlich bedeutet dies, dass beim Extrahieren dieses Tar-Archivs in einen Ordner extrahiert wird, der
node-v4.2.1-linux-x64
mit all diesen Unterordnern (und der darin enthaltenen Knoteninstallation) aufgerufen wird . Sie können diese Extraktion sogar ausprobieren, um eine bessere Vorstellung zu erhalten:Wenn Sie ausführen
ls
, wird einnode-v4.2.1-linux-x64
Ordner angezeigt.Tut jetzt
--strip-components 1
etwas Interessantes zum Extraktionsprozess. Vonman tar
:Grundsätzlich bedeutet dies, dass beim
tar
Extrahieren Ihres Archivs so getan wird, als wäre dernode-v4.2.1-linux-x64
Ordner nicht vorhanden. Stattdessen ist es Extrakt gehtbin/
,share/
und alle anderen Ordner direkt.In der Tat können Sie es versuchen:
Wenn Sie ausführen
ls
, sehen Sie, dass keinnode-v4.2.1-linux-x64
Ordner mehr vorhanden ist . Es ist einfachbin/
,include/
,lib/
, undshare/
(alle zufällig Ordner in/usr/local/
).Ihr zweiter Befehl hätte nicht funktioniert, da er nur den
node-v4.2.1-linux-x64
Ordner extrahiert hätte/usr/local
(wenn er überhaupt ausgeführt worden wäre). Wenn Sie ausführenls /usr/local
, wird dieser Ordner möglicherweise sogar angezeigt. Es ist nutzlos, zögern Sie nicht mit zu löschenrm
. Lesen Sie weiter, warum es nutzlos ist ...Nachdem wir erklärt haben, wie der Befehl tar funktioniert, können wir erklären, wie dieser installiert wird.
Jedes Linux-System hat eine sogenannte
$PATH
Variable, die bestimmt, wo ausführbare Dateien gespeichert werden. Unter diesen Orten ist/usr/local/bin
. Wenn Sie diese Binärdatei im Inneren extrahieren/usr/local
(was in Ihren Installationsanweisungen sicher steht), wird die NodeJS-Binärdatei gemäß der Vorgehensweise beim Extrahieren geschrieben/usr/local/bin/node
. In ähnlicher Weise werden alle Bibliotheken zum lokalen Bibliotheksordner hinzugefügt und alles geht so ziemlich dahin, wo es hingehört.Die Einschränkung (und warum dies ärgerlich ist) ist, dass Sie
apt
nicht sehen, verstehen oder erkennen können, was los ist. Sie können es nicht durchsudo apt upgrade
oder ähnliches aktualisieren . Sie müssen die alte NodeJS-Installation manuell bereinigen und bereinigen und dann die neue installieren, falls Sie jemals ein Upgrade durchführen möchten.Ich würde empfehlen, dass Sie
sudo apt install nodejs-legacy
stattdessen einfach laufen . Weniger Schmerzen und es wird automatisch für Sie aktualisiert.quelle