उबंटू में नोड पैकेज मैनेजर का उपयोग करके पैकेज स्थापित नहीं कर सकते


500

nodeउबंटू पर NodeJS दुभाषिया नाम ( ) का नाम बदलकर nodejsदूसरे पैकेज के साथ नाम संघर्ष के कारण रखा गया है । यहाँ क्या पढ़ा है। डेबियन कहते हैं:

Node.js दुभाषिया कमांड के लिए अपस्ट्रीम नाम "नोड" है। डेबियन में दुभाषिया कमांड को "नोडज" में बदल दिया गया है।

यह एक नेमस्पेस टकराव को रोकने के लिए किया गया था: अन्य कमांड उनके अपस्ट्रीम में उसी नाम का उपयोग करते हैं, जैसे "नोड" पैकेज से ax25- नोड।

Node.js को शेल कमांड के रूप में कॉल करने के प्रयास को "नोडज" कमांड का उपयोग करने के लिए बदलना होगा।

हालाँकि, नोडज का उपयोग करके संकुल को स्थापित करने के लिए mucks का उपयोग किया जाता है npm। पैकेज स्थापना निम्न त्रुटि के साथ विफल हो जाती है:

sh: 1: node: not found
npm WARN This failure might be due to the use of legacy binary "node"
npm WARN For further explanations, please read /usr/share/doc/nodejs/README.Debian

मैं एनपीएम को कैसे समझ सकता हूं कि नोडज पहले से ही सिस्टम पर स्थापित है लेकिन दुभाषिया का नाम अलग है?


29
आप की कोशिश कर सकते ln -s nodejs nodeमें /usr/bin। यह हालांकि हैक की तरह है।
vbo

1
@vbo आप एक जवाब के रूप में जोड़ सकते हैं - यह समस्या को हल करता है!
हिमल नाग राणा

2
@HimelNagRana ​​मेरे पास एक और (बेहतर, स्वीकृत) उत्तर है। मेरी प्रारंभिक टिप्पणी भी जवाब देने के लिए बदल गई थी ( stackoverflow.com/a/21168305/539686 )।
vbo

4
Node.js संस्करणों को स्थापित करने और प्रबंधित करने के लिए NVM का उपयोग करें, github.com/creationix/nvm , यह आसान और सुविधाजनक है!
यूनिटेक

2
मैं इस समाधान की अत्यधिक अनुशंसा करता हूं: किसी भी समय और किसी भी उपयोग के लिए नोड और एनपीएम संस्करणों का नियंत्रण पाने के लिए stackoverflow.com/a/38325376/3197383
रेमी बीचेस

जवाबों:


1094

टी एल; डॉ:

sudo apt-get install nodejs-legacy

सबसे पहले मैं स्थिति को थोड़ा स्पष्ट कर दूं। 2012 की गर्मियों में डेबियन अनुरक्षकों ने किसी अन्य पैकेज के साथ कुछ प्रकार के नाम स्थान टकराव को रोकने के लिए Node.js को नाम बदलने का निर्णय लिया। यह डेबियन तकनीकी समिति के लिए बहुत कठिन निर्णय था, क्योंकि यह पिछड़ी संगतता को तोड़ता है।

निम्नलिखित समिति के रिज़ॉल्यूशन ड्राफ्ट का एक उद्धरण है, जो डेबियन मेलिंग सूची में प्रकाशित किया गया है :

  1. नोडज पैकेज को / usr / बिन / नोडज प्रदान करने के लिए बदला जाएगा, न कि / usr / bin / नोड के लिए। पैकेज को ब्रेक्स घोषित करना चाहिए: डेबियन में किसी भी पैकेज के साथ संबंध जो संदर्भ / यूएसआर / बिन / नोड।

  2. नोडज स्रोत पैकेज प्राथमिकता के आधार पर एक नोडज-लीगेसी बाइनरी पैकेज भी प्रदान करेगा: इसमें अतिरिक्त / usr / bin / नोड सममिति के रूप में / usr / bin / नोडज शामिल है। संग्रह में कोई भी पैकेज नोडज-लीगेसी पैकेज पर निर्भर या अनुशंसित नहीं हो सकता है, जो केवल अपस्ट्रीम
    संगतता के लिए प्रदान किया गया है । यह पैकेज घोषित करता है भी एक संघर्ष की घोषणा करेगा: नोड पैकेज के साथ संबंध।

<...>

अनुच्छेद 2 ओपी के मुद्दे का वास्तविक समाधान है। ओपी को हाथ से सिंपलिस करने के बजाय इस पैकेज को स्थापित करने का प्रयास करना चाहिए। यहाँ डेबियन पैकेज इंडेक्स वेबसाइट में इस पैकेज का लिंक दिया गया है ।

इसका उपयोग करके स्थापित किया जा सकता है sudo apt-get install nodejs-legacy

मुझे एनपीएम डेवलपर्स द्वारा पूरी बात को अपनाने के बारे में कोई जानकारी नहीं मिली है, लेकिन मुझे लगता है कि npmपैकेज कुछ बिंदु पर तय किया जाएगा और nodejs-legacyवास्तव में विरासत बन जाएगा।


106
संक्षेप में:sudo apt-get install nodejs-legacy
अल्फ ईटन

58
मुझे ऐसे उत्तर पसंद हैं जो आँख बंद करके अमल करने की आज्ञा देने के बजाय स्थिति को अच्छी तरह समझाते हैं। फिर मैं उस जानकारी को अपने पर्यावरण सेटअप स्क्रिप्ट में टिप्पणियों में कॉपी कर सकता हूं ताकि मुझे पता हो कि अब एक साल से क्या चल रहा है जब यह काम नहीं करता है।
Mnebuerquo

29
एक व्यक्ति के रूप में मुझे यह अविश्वसनीय रूप से असुविधाजनक लगता है कि नोड नोड नहीं है, बल्कि नोडज, केवल डेबियन पर है। यह वास्तव में है, वास्तव में, वास्तव में आश्चर्यजनक रूप से इस तरह के विकास के उपकरण के लिए मूर्खतापूर्ण है। मूल रूप से, इस फैसले ने हर किसी के लिए हर जगह एक असाधारण स्थिति पैदा कर दी! मैंने कभी नहीं सुना है कि "नोड" अन्यथा क्या करता है, इसलिए मुझे किसी भी सहानुभूति की कमी है;
Lodewijk

4
जब तक मैं कुछ याद नहीं कर रहा हूं, यह नाम की जगह की टक्कर नहीं थी । कोई नामस्थान नहीं है , यह एक साधारण नाम की टक्कर थी। नाम स्थान आपको दो बार (या अधिक) एक ही नाम रखने की अनुमति देता है जब तक कि प्रत्येक एक अलग नाम स्थान में मौजूद हो । लिनक्स या यूनिक्स में निष्पादन योग्य नामों के लिए ऐसा कोई "स्पेस" मौजूद नहीं है। निकटतम बात यह है कि आपके $ PATH चर में कई निर्देशिकाएं हो सकती हैं, और निष्पादन योग्य नाम वाले मिलान का सबसे पहले उपयोग किया जाता है। (लेकिन यह वास्तव में एक नाम स्थान से बहुत अलग है।)
iconoclast

7
यह बहुत कष्टप्रद है, और भी अधिक क्योंकि नाम संघर्ष एक "एमेच्योर पैकेट रेडियो" के साथ था
सुजाना

113

नोड को नोडज से जोड़ने का प्रयास करें। पहले पता करें कि नोडज कहां है

whereis nodejs

तब नोड नोड्स के लिए नरम लिंक नोड

ln -s [the path of nodejs] /usr/bin/node 

मैं मान रहा हूं / usr / बिन आपके निष्पादन पथ में है। फिर आप नोड या एनपीएम को अपनी कमांड लाइन में लिखकर परीक्षण कर सकते हैं, और अब सब कुछ काम करना चाहिए।


3
-s प्रतीकात्मक लिंक बनाता है (जिसे अक्सर पसंद किया जाता है), हार्ड लिंक नहीं।
हाइड

20
यह काम करता है, लेकिन पैकेज को स्थापित करने के vbo का उत्तरnodejs-legacy आसान है।
डॉन किर्कबी

2
मैं दूसरा डॉन किर्कबी की टिप्पणी और वीबो का जवाब। मुझे लगता है कि vbo का उत्तर चयनित उत्तर होना चाहिए।
modulitos

3
मैं इसे और अधिक सुविधाजनक बस एक ही सॉफ्टवेयर दो बार स्थापित करने के बजाय एक प्रतीकात्मक लिंक बनाने के लिए सुविधाजनक लगता है ....
frankies

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

44

आप NVM या Nodejs संस्करण प्रबंधक का उपयोग करके Nodejs भी स्थापित कर सकते हैं संस्करण प्रबंधक का उपयोग करने के लिए बहुत सारे लाभ हैं । उनमें से एक होने के नाते आपको इस मुद्दे पर चिंता करने की ज़रूरत नहीं है।


निर्देश:


sudo apt-get update
sudo apt-get install build-essential libssl-dev

एक बार पूर्वापेक्षा पैकेज स्थापित हो जाने के बाद, आप nvm अधिष्ठापन स्क्रिप्ट को प्रोजेक्ट के GitHub पेज से नीचे खींच सकते हैं। संस्करण संख्या भिन्न हो सकती है, लेकिन सामान्य तौर पर, आप इसे निम्न सिंटैक्स के साथ डाउनलोड और स्थापित कर सकते हैं:

curl https://raw.githubusercontent.com/creationix/nvm/v0.16.1/install.sh | sh

यह स्क्रिप्ट को डाउनलोड करेगा और उसे चलाएगा। यह आपके घर निर्देशिका में उपनिर्देशिका में सॉफ़्टवेयर स्थापित करेगा ~/.nvm। यह ~/.profileफ़ाइल का उपयोग करने के लिए आपकी फ़ाइल में आवश्यक लाइनें भी जोड़ देगा ।

एनवीएम कार्यक्षमता तक पहुंचने के लिए, आपको लॉग आउट करना होगा और फिर से लॉग इन करना होगा, या आप ~ / .profile फ़ाइल को स्रोत कर सकते हैं ताकि आपका वर्तमान सत्र परिवर्तनों के बारे में जान सके:

source ~/.profile

अब जब आपके पास एनवीएम स्थापित हो गया है, तो आप पृथक एनओडी.जेएस संस्करण स्थापित कर सकते हैं।

संस्थापन के लिए उपलब्ध Node.js के संस्करणों का पता लगाने के लिए, आप टाइप कर सकते हैं:

nvm ls-remote
. . .

v0.11.10
v0.11.11
v0.11.12
v0.11.13
v0.11.14

जैसा कि आप देख सकते हैं, इस लेखन के समय का नवीनतम संस्करण v0.11.14 है। आप इसे टाइप करके स्थापित कर सकते हैं:

nvm install 0.11.14

आमतौर पर, एनवीएम सबसे हाल ही में स्थापित संस्करण का उपयोग करने के लिए स्विच करेगा। आप स्पष्ट रूप से nvm को उस संस्करण का उपयोग करने के लिए कह सकते हैं जिसे हमने केवल टाइप करके डाउनलोड किया है:

nvm use 0.11.14

जब आप nvm का उपयोग करके Node.js स्थापित करते हैं, तो निष्पादन योग्य नोड कहलाता है। आप वर्तमान में शेल द्वारा उपयोग किए जा रहे संस्करण को टाइप करके देख सकते हैं:

node -v

Comeplete ट्यूटोरियल यहां पाया जा सकता है


3
यह भी मेरे लिए ऊपर त्रुटि तय की। यह नोडजर्स डेवलपर के लिए बहुत बेहतर है (मेरे विचार में पूरे डेवलपर्स, मैं वह नहीं हूं जो नोडज में काम करते हैं)। मैंने इसका इस्तेमाल किया।
अज़ीब.केपी

1
मुझे nvm नोड को सॉफ्ट लिंक करने की आवश्यकता है usr/bin/node। तो भाग गयाsudo ln -s /home/www/.nvm/v0.10.36/bin/node /usr/bin/node
जेसन किम

2
मैं घंटों से यह जानने की कोशिश कर रहा हूं कि यह एकमात्र उपाय है जो मुझे काम करने के लिए मिला है। धन्यवाद।
w3bMak3r

'लाभ' अब एक मृत कड़ी है
jaunt

20
  1. nvmपहले प्रयोग से स्थापित करें :

    curl https://raw.githubusercontent.com/creationix/nvm/v0.11.1/install.sh | bash
  2. चलाने के आदेश

    source ~/.profile
  3. अब इसे चलाएं और यह सभी स्थापित या संकुल के अन्य संस्करणों को दिखाएगा:

    nvm ls-remote
  4. इंस्टॉल किए गए पैकेज हरे रंग में होंगे। जो भी संस्करण आप चाहते हैं उसे स्थापित करें:

    nvm install 6.0.0
  5. जांचें कि कहां स्थापित नहीं है:

    which node
  6. वर्तमान संस्करण की जाँच करें:

    node -v
    
    n=$(which node);
    n=${n%/bin/node}; 
    chmod -R 755 $n/bin/*; 
    sudo cp -r $n/{bin,lib,share} /usr/local

2
मैं किसी भी समय और किसी भी उपयोग के लिए नोड और एनपीएम संस्करणों का नियंत्रण पाने के लिए इस समाधान की अत्यधिक अनुशंसा करता हूं।
रमे बेचेस

14
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
source ~/.profile

source ~/.profileटिप्पणी से स्वीकृत उत्तर को जोड़ दिया गया है, जो कि पहले से मुड़ा हुआ है और कुछ साफ करता है। सबसे अधिक संभावना है कि आपको sudo apt-get install npmबाद की भी आवश्यकता होगी ।


12

मेरे लिए समस्या हल हो गई थी,

sudo apt-get remove node
sudo apt-get remove nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs
sudo ln -s /usr/bin/nodejs /usr/bin/node
alias node=nodejs
rm -r /usr/local/lib/python2.7/dist-packages/localstack/node_modules
npm install -g npm@latest || sudo npm install -g npm@latest

10

यहाँ एक और दृष्टिकोण है जिसका उपयोग मैं नोड संस्करणों के बीच आसान स्विचिंग के लिए n पसंद करता हूं ।

एक नए उबंटू प्रणाली पर, पहले 'सिस्टम' नोड स्थापित करें:

curl -sL https://deb.nodesource.com/setup | sudo bash -

फिर एन मॉड्यूल को विश्व स्तर पर स्थापित करें :

npm install -g n

चूंकि सिस्टम नोड पहले (ऊपर) स्थापित किया गया था, इसलिए वैकल्पिक प्रणाली का उपयोग n द्वारा प्रदान किए गए नोड को साफ-साफ इंगित करने के लिए किया जा सकता है । पहले सुनिश्चित करें कि विकल्प प्रणाली में नोड के लिए कुछ भी नहीं है:

update-alternatives --remove-all node

फिर n द्वारा प्रदान किया गया नोड जोड़ें :

update-alternatives --install /usr/bin/node node /usr/local/bin/node 1

सिस्टम द्वारा प्रदान किया गया अगला नोड जोड़ें (कर्ल के साथ स्थापित किया गया था):

update-alternatives --install /usr/bin/node node /usr/bin/nodejs 2

अब इंटरएक्टिव मेनू का उपयोग करके n द्वारा प्रदान किए गए नोड का चयन करें ( /usr/local/bin/nodeनिम्न कमांड द्वारा प्रस्तुत मेनू से चयन करें ):

update-alternatives --config node

अंत में, चूंकि /usr/local/binआमतौर पर PATH की तुलना में अधिक पूर्वता होती है /usr/bin, इसलिए निम्न एलियास बनाया जाना चाहिए (यदि विकल्प n नोड प्रभावी हो, तो (अपने .ashrc या orzshrc में दर्ज करें); अन्यथा n / usr / स्थानीय / बिन में n के साथ स्थापित नोड हमेशा पूर्वता लेता है:

alias node='/usr/bin/node'

अब आप आसानी से नोड संस्करणों के बीच स्विच कर सकते हैं n <desired node version number>


9

लिनक्स टकसाल 17 पर, मैंने nodejs-legacyसफलता के बिना दोनों समाधान (सिम्कलिन बनाना या पैकेज का उपयोग करना ) की कोशिश की ।

केवल एक चीज जो अंततः मेरे लिए काम करती थी वह क्रिस ली से पीपा का उपयोग कर रही थी:

sudo apt-get purge node-*
sudo apt-get autoremove 
sudo add-apt-repository ppa:chris-lea/node.js
sudo apt-get update
sudo apt-get install nodejs

इसने नोड संस्करण 10.37 और npm 1.4.28 स्थापित किया। उसके बाद, मैं विश्व स्तर पर पैकेज स्थापित कर सकता था।


9

जैसा कि अन्य लोग पहले ही उल्लेख कर चुके हैं, मैं सुझाव दूंगा कि नोड या किसी भी विकास पुस्तकालय को स्थापित करने के लिए "sudo apt-get" का उपयोग न करें। आप https://nodejs.org/dist/v6.9.2/ से आवश्यक संस्करण डाउनलोड कर सकते हैं और अपना वातावरण सेट कर सकते हैं।

मैं आपको nvm और n जैसे टूल सुझाऊंगा , ताकि आप नोड संस्करण का प्रबंधन कर सकें । इन मॉड्यूल के साथ स्विच करना और काम करना बहुत सुविधाजनक है। https://github.com/creationix/nvm https://github.com/tj/n

या जिप / टार डाउनलोड करने, मूव फोल्डर निकालने और सॉफ्ट लिंक बनाने के लिए बेसिक बैश लिखें। जब भी आपको अपडेट करने की आवश्यकता हो, तो पुराने सॉफ्ट लिंक को नए डाउनलोड किए गए संस्करण में इंगित करें। जैसे मैंने अपने लिए बनाया है, आप यह देख सकते हैं: https://github.com/deepakshrma/NodeJs-4.0-Reference-Guide/blob/master/nodejs-installer.sh

#Go to home
cd ~
#run command
#New Script
wget https://raw.githubusercontent.com/deepakshrma/NodeJs-4.0-Reference-Guide/master/nodejs-installer.sh 
bash nodejs-installer.sh -v lts
#here -v or --version can be sepecific to 0.10.37 or it could be latest/lts 
#Examples
bash nodejs-installer.sh -v lts
bash nodejs-installer.sh -v latest
bash nodejs-installer.sh -v 4.4.2


5

आपका सिस्टम पथ नोड js बाइनरी का पता लगाने में सक्षम नहीं है।

1. जो नोड है

2. जब नरम लिंक नोड नोडज के लिए

ln -s [the path of nodejs] /usr/bin/node 

मैं मान रहा हूं / usr / बिन आपके निष्पादन पथ में है। फिर आप नोड या एनपीएम को अपनी कमांड लाइन में लिखकर परीक्षण कर सकते हैं, और अब सब कुछ काम करना चाहिए।


4

आपके पास जो भी नोड संस्करण है उसे अनइंस्टॉल करें

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

nvm (Node Version Manager) https://github.com/creationix/nvm स्थापित करें

wget -qO- https://raw.githubusercontent.com/creationix/nvm/v0.31.0/install.sh | bash

अब आप जो भी नोड चाहते हैं उसका संस्करण स्थापित कर सकते हैं और संस्करणों के बीच स्विच कर सकते हैं।


FYI करें - उपरोक्त विधि का उपयोग करने वाला कोई भी व्यक्ति nvm, ध्यान दें कि नोडज-लीगेसी पैकेज v0.10.25 है। (या कम से कम, यही मैंने देखा था जब मैंने इसे आज़माया था।)
जेरेडएच

2

मैंने इसे अनलिंकिंग / usr / sbin / नोड (जो कि ax25- नोड पैकेज से जुड़ा हुआ है) तय किया है, फिर मैंने कमांड लाइन पर इसका उपयोग करके नोडज का लिंक बनाया है

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

क्योंकि कर्म जैसे पैकेज नोडज नाम के साथ काम नहीं करता है, हालांकि नोड से नोड्स तक कर्म स्क्रिप्ट की पहली पंक्ति को बदलना, लेकिन मैं इस मुद्दे को एक बार और सभी के लिए हल करना पसंद करता हूं


1

मेरे लिए फिक्स नोड * संकुल और साथ ही npm संकुल को हटा रहा था।

फिर एक ताजा स्थापित करें:

sudo apt-get install autoclean
sudo apt-get install nodejs-legacy
npm install

sudo apt-get autocleansudo apt-get install autoclean
m3nda

1

प्रॉब्लम इंस्टॉलर में नहीं है
नोडज को नोड के साथ बदलें या / usr / बिन / नोडज से / usr-bin / नोड से पथ बदलें


1

यह है कि आपका नोड ठीक से स्थापित नहीं है, पहले आपको नोड को अनइंस्टॉल करने की आवश्यकता है फिर स्थापित करें। नोड को स्थापित करने के लिए यह आपकी मदद कर सकता है http://array151.com/blog/nodejs-tutorial-and-set-up/

उसके बाद आप आसानी से संकुल को स्थापित कर सकते हैं। पैकेजों को स्थापित करने के लिए यह आपकी मदद कर सकता है

http://array151.com/blog/npm-node-package-manager/


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