नोड.जेएस संघर्ष: / sbin / नोड बनाम / usr / बिन / नोड


32

मेरे पास दो Ubuntu 12.10 मशीनें हैं: मशीन A एक VMWare VM है और मशीन B है और पुराना एसर लैपटॉप है। दोनों मशीनों पर, मैंने एप्ट-गेट का उपयोग करके नोड स्थापित किया। हालाँकि मशीन A मुख्य बाइनरी को /usr/bin/nodeमशीन B के रूप में स्थापित करता है /usr/bin/nodejs। यहाँ कुछ व्यवहार देखे गए हैं:

  1. दोनों मशीन कमांड के /usr/bin/nodeजवाब में लौटती हैं which node। हालाँकि, मशीन B पर ऐसी कोई फ़ाइल नहीं है।
  2. nodeमशीन ए के लिए कमांड जारी करना , बी ऑन बी के लिए नहीं, मुझे nodejsइसके बजाय उपयोग करना होगा।
  3. बी पर, एक बाइनरी है जिसे / sbin / नोड कहा जाता है, A के पास नहीं है।

ये व्यवहार दोनों मशीनों पर विकसित होने के दौरान असंगतता का कारण बनता है। अभी के लिए, मैंने बी पर बायनेरिज़ का नाम बदलकर काम किया:

sudo mv /sbin/node /sbin/node-sbin
sudo ln -s /usr/bin/nodejs /usr/bin/node

वहाँ वास्तव में यह तय करने के लिए एक रास्ता है, ताकि नोड के /usr/bin/nodeबजाय के रूप में स्थापित किया जाएगा /usr/bin/nodejs?

जवाबों:


15

उबंटू 13.10 से ऊपर के सभी उत्तर मेरे काम नहीं आए। जब मैंने नोडज-लीगेसी स्थापित की तो यह अंत में काम आया

sudo apt-get install nodejs-legacy

यह /usr/bin/nodeमेरे लिए सही ढंग से प्रदान किया गया है, ताकि उदाहरण के nodemonलिए इस्तेमाल किया जा सके।


किसी भी विचार हमें इसे स्थापित करने की आवश्यकता क्यों है? क्या यह वास्तव में किसी भी तरह से सिमलिंक बनाता है? नोड ने अपने निष्पादन योग्य का नाम नोडज में क्यों बदल दिया?
ऑगस्टिन रीडिंगर

नाम "नोड" एक बहुत पुराने कार्यक्रम के साथ विवादित था। नीचे देखें lists.debian.org/debian-devel-announce/2012/07/msg00002.html और वामपंथी का जवाब।
रॉबी बसक

36

अद्यतन:nodejs-legacy पैकेज का उपयोग करने के लिए नीचे दिए गए संशोधित निर्देश । ( नोड-विरासत के बारे में अधिक जानकारी )

परस्पर विरोधी नोड पैकेज को पूरी तरह से हटाने का प्रयास करें:

sudo apt-get --purge remove node
sudo apt-get --purge remove nodejs-legacy
sudo apt-get --purge remove nodejs

sudo apt-get install nodejs-legacy

# Confirm it worked
node --version       # v0.10.13
ls -la `which node`  # ... /usr/bin/node -> /etc/alternatives/node

यह मेरे साथ तब हुआ जब मैंने अनजाने में नॉन-नोड.जेएस nodeपैकेज स्थापित किया । हालांकि मैंने apt-get remove nodeसही nodejsपैकेज स्थापित करने से पहले किया था , मुझे लगता है कि --purgeतर्क की आवश्यकता है।

पृष्ठभूमि की जानकारी :

नोड पैकेज (एमेच्योर पैकेट रेडियो नोड प्रोग्राम) के साथ एक नामकरण संघर्ष है, और नोड बाइनरी को नोड से नोडज में बदल दिया गया है। आपको उस संघर्ष से बचने के लिए एमेच्योर पैकेट रेडियो नोड कार्यक्रम की स्थापना रद्द करने की आवश्यकता होगी।


पृष्ठभूमि की जानकारी के लिए धन्यवाद। इस बिंदु पर, मेरे पास इन मशीनों में से कोई भी कोशिश करने के लिए नहीं है, लेकिन मुझे उम्मीद है कि मैं जल्द ही किसी दिन फिर से काम कर सकता हूं।
हाई वु

यह आपको /usr/bin/nodeUbuntu 13.10 में नहीं मिलता है । @ user229115 का जवाब नीचे काम करता है, हालांकि।
जिम स्टीवर्ट

1
तो उबंटू के साथ 13.10 sudo apt-get install nodejs nodejs-legacyआपको nodeबाइनरी को नोड के रूप में देगा। जेएस लेकिन अगर आपने पहले से ही node(एमेच्योर पैकेट रेडियो नोड प्रोग्राम) स्थापित किया है, तो आपको इसे हटाने की आवश्यकता होगी।
jonasfj

1
@AugustinRiedinger: मैंने अपना उत्तर अपडेट किया। मुझे लगता है कि 'गलतफहमी' वाले पैकेजों को शुद्ध करने और nodejs-legacyपैकेज स्थापित करने दोनों का संयोजन काम करेगा।
लेफ्टियम

1
धन्यवाद यह बहुत स्पष्ट है। वास्तव में यह काम करता है जब nodejs-lecacyपैकेज को स्थापित किया जाता है जो nodejsवास्तव में निष्पादन योग्य के लिए केवल एक
सहिष्णु

11

दुर्भाग्य से मेरे लिए, एक सिमलिंक बनाने से काम नहीं चला। मेरे लिए क्या काम था हालांकि एक उपनाम बना रहा था। में ~/.bashrcया ~/.bash_aliases(यदि ~/.bashrcयह फ़ाइल लोड होती है), बस निम्नलिखित पंक्ति जोड़ें:

alias node="nodejs"

bashकंसोल में टाइप करके अपने बैश सत्र को पुनरारंभ करें और आपका उपनाम अब काम करेगा।


2
जब मैंने एक सिमलिंक बनाया, तब तक काम नहीं किया जब तक कि मैंने दूसरा टर्मिनल शुरू नहीं किया। अपने टर्मिनल को पुनरारंभ करने का प्रयास करें ... या मेरा जवाब जो बिना
सहारे के

@Leftium: आपको भी चलाने की आवश्यकता है: source ~/.bashrc.bashrc फ़ाइल को पुनः लोड करने के लिए (यदि आप टर्मिनल को फिर से शुरू करने से बचना चाहते हैं) और पढ़ें ..
दीपक जॉय

एक नए स्थान पर सिमिंक करना निश्चित रूप hash nodeसे आपके मौजूदा टर्मिनलों में एक आह्वान की आवश्यकता है , क्योंकि आधुनिक गोले उन कमांडों के स्थान को याद करते हैं जिन्हें पहले PATH में देखा गया है। इस hashतरह के गोले में निर्मित कमांड उन्हें लुकअप को फिर से करने, और नए स्थान को याद करने के लिए कहता है।
mtraceur

7

मुझे लगता है कि यह ऐसा है:

सूडो अपडेट-अल्टरनेटिव्स - इंस्टॉलेशन / यूएसआर / बिन / नोड नोड / यूएसआर / बिन / नोडज 10

डेबियन विकल्पों का उपयोग करना।


धन्यवाद। इस मामले पर उबंटू के फैसले को मापने के लिए यह सबसे सीधा तरीका है।
ड्रू

@ ड्रू ऐसा दिखता है कि उबंटू बग बग्लासपेड.नेट / जुबांट /+सोर्स / एनोड /+ bug/ 1030421 के आधार पर उबंटू ने डिबियन के फैसले का पालन किया ।
लॉयड डेवॉल्फ

1

देर से जवाब, लेकिन अप-टू-डेट जानकारी के लिए ...

यदि आप नोड गिथब इंस्टॉलेशन रीडमे से अनुशंसा पद्धति का उपयोग करके नोड स्थापित करते हैं , तो यह नोड्ससोर्स ब्लॉग लेख के निर्देशों का पालन करने का सुझाव देता है , इसके बजाय एप्ट-गेट रेपो से बाहर स्थापित करने के बजाय, नोड.जेएस nodeकमांड का उपयोग करके चलना चाहिए । nodejsएक नया सिमलिंक बनाने के बिना, साथ ही साथ कमांड भी।

लेख से यह विधि है:

# Note the new setup script name for Node.js v0.12
curl -sL https://deb.nodesource.com/setup_0.12 | sudo bash -

# Then install with:
sudo apt-get install -y nodejs

ध्यान दें कि यह v0.12 के लिए है, जो कि भविष्य में दूर के भविष्य में पुराना हो जाएगा।

इसके अलावा, यदि आप एक कॉर्पोरेट प्रॉक्सी के पीछे हैं (मेरे जैसे) तो आप sudo कमांड में -E विकल्प जोड़ना चाहते हैं, प्रॉक्सी के लिए आवश्यक env vars को संरक्षित करने के लिए:

curl -sL https://deb.nodesource.com/setup_0.12 | sudo -E bash -

1

पर Ubuntu 14.04 मैं एक ही नोड समस्या थी। मैंने "नोड" काम नहीं किया था, और "नोडज" काम कर रहा था। मैंने अभी किया

sudo apt-get remove node

और उसके ठीक बाद, नोड चल रहा था, और नोडज भी चल रहे हैं :) मैं लिनक्स के लिए नया हूं और यह मेरे लिए गलत है। हालाँकि बोवर चल रहा है !!!


0
sudo getconf LONG_BIT
sudo uname -p
  • अपने CPU आर्किटेक्चर की पुष्टि करें
  • Https://nodejs.org/dist/ पर निर्देशिका ट्री में अपना नोड.जेएस वितरण खोजें (ध्यान दें: विभिन्न नोड के विभिन्न संस्करण। विभिन्न सीपीयू आर्किटेक्चर के लिए वितरण)

मेरा डेस्कटॉप वर्तमान में Ubuntu 15.10 AMD64 है, इसलिए मैं अपने इंस्टॉलेशन उदाहरण में निम्नलिखित URL का उपयोग करूंगा (फिर, डिस्ट्रीब के भिन्न):

sudo wget https://nodejs.org/dist/v5.0.0/node-v5.0.0-linux-x64.tar.gz

फिर निर्देशिका को अपनी डाउनलोड निर्देशिका में बदलें :

sudo cd /home/name/Downloads

अपनी डाउनलोड निर्देशिका से, निम्नलिखित पर अमल करें:

sudo tar -C /usr/local --strip-components 1 -xzf node-v5.0.0-linux-x64.tar.gz

निम्न के साथ अपने नोड की स्थापना की पुष्टि करें:

sudo ls -l /usr/local/bin/node
sudo ls -l /usr/local/bin/npm

रेफरी। http://www.hostingadvice.com/how-to/install-nodejs-ubuntu-14-04/


1
-1 केवल tarकमांड की जरूरत है sudo
मूरू

+1 आपको उस बेहतर तरीके के लिए बहुत बहुत धन्यवाद - मेरे लिए सबसे अच्छा तरीका!
1111161171159459134
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.