Jest to rodzaj fajnego (ale irytującego) sposobu instalowania NodeJS.
Jeśli uruchomisz tar tf /usr/save/node-v4.2.1-linux-x64.tar.gzplik, 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-x64z 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-x64folder.
Teraz --strip-components 1robi 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 tarrozpakujesz swoje archiwum, będzie udawać, że node-v4.2.1-linux-x64folderu 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-x64folderu. 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-x64folder 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ę $PATHzmienną, 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/nodezgodnie 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 aptnie 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 upgradelub 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-legacyzamiast tego. Mniej bólu i automatycznie aktualizuje się dla Ciebie.
jodejspoprzezaptkomendę:sudo apt install nodejs nodejs-legacy.