Jest to rodzaj fajnego (ale irytującego) sposobu instalowania NodeJS.
Jeśli uruchomisz tar tf /usr/save/node-v4.2.1-linux-x64.tar.gz
plik, zobaczysz coś takiego:
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/
Zasadniczo oznacza to, że kiedy rozpakujesz to archiwum tar, wyodrębni ono do folderu o nazwie node-v4.2.1-linux-x64
z wszystkimi tymi podfolderami (i instalacją węzła) w nim. W rzeczywistości możesz nawet wypróbować tę ekstrakcję, aby uzyskać lepszy pomysł:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz
Jeśli uruchomisz ls
, zobaczysz node-v4.2.1-linux-x64
folder.
Teraz --strip-components 1
robi coś interesującego w procesie ekstrakcji. Od man tar
:
--strip-components=NUMBER
strip NUMBER leading components from file names on extraction
Zasadniczo oznacza to, że kiedy tar
rozpakujesz swoje archiwum, będzie udawać, że node-v4.2.1-linux-x64
folderu go nie ma. Zamiast tego, to będzie ekstraktu bin/
, share/
a wszystkie inne foldery bezpośrednio.
W rzeczywistości możesz spróbować:
mkdir /tmp/node
cd /tmp/node
tar xvf /usr/save/node-v4.2.1-linux-x64.tar.gz --strip-components=1
Jeśli uruchomisz ls
, zobaczysz, że nie ma już node-v4.2.1-linux-x64
folderu. To właśnie bin/
, include/
, lib/
oraz share/
(wszystkie foldery w przypadkowo /usr/local/
).
Twoje drugie polecenie nie zadziałałoby, ponieważ po prostu rozpakowałoby node-v4.2.1-linux-x64
folder do /usr/local
(jeśli w ogóle działało). Jeśli uruchomisz ls /usr/local
, ten folder może się nawet kręcić. Jest bezużyteczny, możesz go usunąć rm
. Jeśli chodzi o to, dlaczego jest bezużyteczny, czytaj dalej ...
Teraz, gdy wyjaśniliśmy, jak działa polecenie tar, możemy wyjaśnić, jak to się instaluje.
Każdy system Linux ma coś, co nazywa się $PATH
zmienną, która określa, gdzie przechowywane są pliki wykonywalne. Wśród tych miejsc jest /usr/local/bin
. Kiedy wyodrębniasz ten plik binarny /usr/local
(jestem pewien, że tak mówią instrukcje instalacji), zapisywany jest plik binarny NodeJS /usr/local/bin/node
zgodnie z tym, jak wykonywane są ekstrakcje. Podobnie, wszystkie biblioteki są dodawane do lokalnego folderu biblioteki i wszystko właściwie idzie tylko tam, gdzie należy.
Zastrzeżeniem (i dlaczego jest to denerwujące) jest to, że apt
nie zobaczy, nie zrozumie lub nie zda sobie sprawy z tego, co się dzieje. Nie będziesz w stanie zaktualizować go za pośrednictwem sudo apt upgrade
lub w podobny sposób. Będziesz musiał ręcznie wejść i wyczyścić starą instalację NodeJS, a następnie zainstalować nową, na wypadek gdybyś kiedykolwiek chciał zaktualizować.
Polecam po prostu uruchomić sudo apt install nodejs-legacy
zamiast tego. Mniej bólu i automatycznie aktualizuje się dla Ciebie.
jodejs
poprzezapt
komendę:sudo apt install nodejs nodejs-legacy
.