Це свого роду класний (але дратує) спосіб встановлення 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
.