Это своего рода крутой (но раздражающий) способ установки 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.