Это своего рода крутой (но раздражающий) способ установки NodeJS.
Если вы запустите tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
файл, вы увидите что-то вроде этого:
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/
По сути, это означает, что когда вы извлекаете этот архив tar, он извлекается в папку, которая называется node-v4.2.1-linux-x64
всеми этими подпапками (и установкой узла) внутри него. На самом деле, вы можете даже попробовать это извлечение, чтобы получить лучшую идею:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz
Если вы запустите ls
, вы увидите node-v4.2.1-linux-x64
папку.
Теперь --strip-components 1
делает что-то интересное для процесса извлечения. От man tar
:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
По сути, это означает, что когда tar
вы собираетесь извлечь ваш архив, он будет притворяться, будто node-v4.2.1-linux-x64
папки там нет. Вместо этого он собирается экстракт bin/
, share/
а все остальные папок непосредственно.
На самом деле, вы можете попробовать это:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz --strip-components=1
Если вы запустите ls
, вы увидите, что node-v4.2.1-linux-x64
папки больше нет . Это просто bin/
, include/
, lib/
и share/
(все папки по совпадению в /usr/local/
).
Ваша вторая команда не сработала бы, потому что она просто извлекла бы node-v4.2.1-linux-x64
папку /usr/local
(если бы она вообще работала). Если вы запустите ls /usr/local
, вы можете даже увидеть эту папку. Это бесполезно, не стесняйтесь удалять с rm
. Что касается того, почему это бесполезно, продолжайте читать ...
Теперь, когда мы объяснили, как работает команда tar, мы можем объяснить, как она устанавливается.
Каждая система Linux имеет нечто, называемое $PATH
переменной, которая определяет, где хранятся исполняемые файлы. Среди этих мест есть /usr/local/bin
. Когда вы извлекаете этот двоичный файл изнутри /usr/local
(что, я уверен, так сказано в ваших инструкциях по установке), двоичный файл NodeJS записывается /usr/local/bin/node
в соответствии с тем, как выполняется извлечение. Точно так же все библиотеки добавляются в папку локальной библиотеки, и все в значительной степени просто идет туда, куда нужно.
Теперь, предостережение (и почему это раздражает) состоит в том, что apt
вы не увидите, не поймете и не поймете, что происходит. Вы не сможете обновить его через sudo apt upgrade
или подобное. Вам нужно будет вручную войти и очистить старую установку NodeJS, а затем вставить новую, если вы когда-нибудь захотите обновить.
Я бы порекомендовал вам просто бежать sudo apt install nodejs-legacy
. Меньше боли, и он автоматически обновляется для вас.
jodejs
помощьюapt
команды:sudo apt install nodejs nodejs-legacy
.