Podczas instalowania Node na moim komputerze użyłem poniższego polecenia, które znalazłem na stronie internetowej.
tar --strip-components 1 -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Wiem, że tar -xzf
służy do rozpakowywania archiwów, ale chcę wiedzieć, w jaki sposób instalowany jest węzeł?
Próbowałem zainstalować w ten sposób. Wyodrębniłem pliki węzłów, /usr/local
używając poniższego polecenia,
tar /usr/local -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz
Ale to nie działa. Czy ktoś może wyjaśnić lub pomóc mi zrozumieć różnicę między tymi dwoma poleceniami?
Co więcej robi polecenie 1 niż to, co robi polecenie 2?
software-installation
tar
prathapa reddy
źródło
źródło
jodejs
poprzezapt
komendę:sudo apt install nodejs nodejs-legacy
.Odpowiedzi:
Struktura katalogu tarball wygląda następująco:
Po wypakowaniu tego archiwum bez żadnych innych opcji
/usr/local
otrzymasz:Tak więc tworzony jest nowy katalog
/usr/local
i pliki są tam zrzucane.Jednak za pomocą
--strip-components=1
jeden składnik katalogu z wyodrębnionej ścieżki jest usuwany, więcnode-v6.10.1-linux-x64/bin/
staje siębin/
inode-v6.10.1-linux-x64/bin/npm
stajebin/npm
:I
/usr/local/bin
jest już włączonyPATH
, więc nie musisz nic robić, aby wykonaćnpm
inode
.źródło
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: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ł:Jeśli uruchomisz
ls
, zobaczysznode-v4.2.1-linux-x64
folder.Teraz
--strip-components 1
robi coś interesującego w procesie ekstrakcji. Odman tar
:Zasadniczo oznacza to, że kiedy
tar
rozpakujesz swoje archiwum, będzie udawać, żenode-v4.2.1-linux-x64
folderu go nie ma. Zamiast tego, to będzie ekstraktubin/
,share/
a wszystkie inne foldery bezpośrednio.W rzeczywistości możesz spróbować:
Jeśli uruchomisz
ls
, zobaczysz, że nie ma jużnode-v4.2.1-linux-x64
folderu. To właśniebin/
,include/
,lib/
orazshare/
(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 uruchomiszls /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średnictwemsudo 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.źródło