Node js स्थापित करने के लिए टार कमांड कैसे काम करता है


10

अपनी मशीन पर नोड स्थापित करते समय, मैंने नीचे दी गई कमांड का उपयोग किया जो मुझे एक वेबसाइट पर मिली।

tar --strip-components 1 -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz

मुझे पता है कि tar -xzfइसका उपयोग अभिलेखागार को निकालने के लिए किया जाता है लेकिन मैं जानना चाहता हूं कि नोड कैसे स्थापित हो रहा है?

मैंने इसे इस तरह से स्थापित करने की कोशिश की। मैंने /usr/localनिम्नांकित कमांड का उपयोग करके नोड फाइलें निकाली हैं ,

tar /usr/local -xzf /usr/save/node-v4.2.1-linux-x64.tar.gz

लेकिन यह काम नहीं करता है। क्या कोई इन दो आज्ञाओं के बीच के अंतर को समझने के लिए मुझे समझा या मदद कर सकता है?

कमांड 1 क्या कर रहा है कमांड 2 क्या कर रहा है?


1
आप कमांड के jodejsमाध्यम से स्थापित कर सकते हैं :। aptsudo apt install nodejs nodejs-legacy
पा --० 30०

जवाबों:


24

टारबॉल निर्देशिका संरचना इस प्रकार है:

$ tar tf node-v6.10.1-linux-x64.tar.xz | head
node-v6.10.1-linux-x64/
node-v6.10.1-linux-x64/bin/
node-v6.10.1-linux-x64/bin/npm
node-v6.10.1-linux-x64/bin/node
node-v6.10.1-linux-x64/share/
node-v6.10.1-linux-x64/share/man/
node-v6.10.1-linux-x64/share/man/man1/
node-v6.10.1-linux-x64/share/man/man1/node.1
node-v6.10.1-linux-x64/share/systemtap/
node-v6.10.1-linux-x64/share/systemtap/tapset/

जब आप किसी अन्य विकल्प के बिना इस संग्रह को निकालते हैं /usr/local, तो आपको यह मिलता है:

/usr/local/node-v6.10.1-linux-x64/
/usr/local/node-v6.10.1-linux-x64/bin/
/usr/local/node-v6.10.1-linux-x64/bin/npm
/usr/local/node-v6.10.1-linux-x64/bin/node
/usr/local/node-v6.10.1-linux-x64/share/
/usr/local/node-v6.10.1-linux-x64/share/man/
/usr/local/node-v6.10.1-linux-x64/share/man/man1/
/usr/local/node-v6.10.1-linux-x64/share/man/man1/node.1
/usr/local/node-v6.10.1-linux-x64/share/systemtap/
/usr/local/node-v6.10.1-linux-x64/share/systemtap/tapset/

इसलिए, एक नई निर्देशिका बनाई जाती है /usr/local, और फाइलें वहां डंप हो जाती हैं।

हालांकि, के साथ --strip-components=1, कृपया निकाले गए पथ से एक निर्देशिका घटक निकाल दिया जाता है, तो node-v6.10.1-linux-x64/bin/हो जाता है bin/और node-v6.10.1-linux-x64/bin/npmहो जाता है bin/npm:

/usr/local/
/usr/local/bin/
/usr/local/bin/npm
/usr/local/bin/node
/usr/local/share/
/usr/local/share/man/
/usr/local/share/man/man1/
/usr/local/share/man/man1/node.1
/usr/local/share/systemtap/
/usr/local/share/systemtap/tapset/

और /usr/local/binपहले से ही है PATH, इसलिए आपको निष्पादित करने के लिए npmऔर कुछ करने की आवश्यकता नहीं है node


14

यह 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/

मूल रूप से, इसका मतलब यह है कि जब आप इस टार आर्काइव को निकालते हैं, तो यह 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। जैसे कि यह बेकार क्यों है, पढ़ते रहें ...


अब जब हमने समझाया कि टार कमांड कैसे काम करता है, हम बता सकते हैं कि यह कैसे स्थापित होता है।

प्रत्येक लिनक्स सिस्टम में $PATHचर नामक कुछ होता है , जो निर्धारित करता है कि निष्पादन योग्य फाइलें कहां संग्रहीत हैं। इन जगहों के बीच है /usr/local/bin। जब आप उस बाइनरी को अंदर निकालते हैं /usr/local(जो मुझे आश्वस्त है कि आपके इंस्टॉलेशन निर्देश क्या कहते हैं), एनओडीजेएस बाइनरी को अर्क के /usr/local/bin/nodeअनुसार लिखा जा रहा है। इसी तरह, सभी पुस्तकालयों को स्थानीय पुस्तकालय फ़ोल्डर में जोड़ा जा रहा है और सब कुछ बहुत कुछ बस वहीं जाता है जहां यह है।

अब, कैविएट (और यह क्यों कष्टप्रद है) यह है कि aptक्या चल रहा है या नहीं समझ पाएंगे या समझ नहीं पाएंगे। आप इसे sudo apt upgradeया इसी तरह से अपडेट नहीं कर पाएंगे । आपको मैन्युअल रूप से पुराने NodeJS स्थापित करने और फिर साफ करने की आवश्यकता होगी और यदि आप कभी अपग्रेड करना चाहते हैं तो नए में डाल दें।

मैं आपको sudo apt install nodejs-legacyइसके बजाय बस चलाने की सलाह दूंगा। कम दर्द, और यह स्वचालित रूप से आपके लिए अपडेट होता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.