Apt-get nvm के माध्यम से स्थापित नोड सॉफ्टवेयर को नहीं पहचानता है


15

मैं एक .debपैकेज स्थापित करने की कोशिश कर रहा हूं, हालांकि इसके लिए कई निर्भरताएं चाहिए जैसे कि नोडज, नोडज-अंडरस्कोर, लेकिन वे सभी पहले से ही स्थापित nvmहैं और उपलब्ध हैं।

वहाँ वैसे भी मैं apt-getnvm के माध्यम से स्थापित संकुल को पहचान सकता है ताकि वे टकराएं नहीं? मुझे पता है कि apt-get सिस्टम-वाइड है जबकि nvm स्थानीय यूजर-स्पेस पर काम करता है, इसलिए इसे कुछ हैकिंग की आवश्यकता हो सकती है।

जवाबों:


13

सरलतम दृष्टिकोण, जब भी संभव हो या तो केवल nvm या .deb पैकेज का उपयोग करना है। यह शायद लंबे समय में आपको बहुत सारे सिरदर्द से बचाएगा, इसलिए पहले उस पर गौर करें। ऐसा लगता है कि लगभग कुछ नोड से संबंधित है जो .debपैकेज द्वारा प्रदान किया गया है nvmइसके बजाय इसके माध्यम से स्थापित किया जा सकता है ।

यदि वास्तव में यह संभव नहीं है, हालांकि, आप .debउपयोग करके "डमी" पैकेज बनाने में सक्षम हो सकते हैं equivs-controlऔर equivs-buildयह बताने के लिए aptकि आपके पास निर्भरताएं स्थापित हैं। ध्यान दें कि यह संभावित रूप से भ्रमित कर सकता है यदि आप चीजों को गलत पाते हैं। इसके अलावा, भले ही आप nvmसंकुल को अनइंस्टॉल करते हों, तब भी आपको लगता है कि आपके पास डमी पैकेजों में परिभाषित विकल्प हैं, जब तक कि आप स्वयं डम्प पैकेज की स्थापना रद्द नहीं करते।

सबसे पहले, "इक्विव" स्थापित करें ताकि हम डमी पैकेज बना सकें:

sudo apt-get install equivs

डमी पैकेज का वर्णन करने वाली एक नियंत्रण फ़ाइल बनाएं:

cd ~
equivs-control nodejs-dummy

इस नियंत्रण फ़ाइल को संपादित करें:

nano nodejs-dummy

नियंत्रण फ़ाइल में बिना टिप्पणी और परिवर्तन लाइनों के वांछित। विशेष रूप से उन पैकेजों को सूचीबद्ध करने के लिए "प्रोवाइड्स:" लाइन सेट करें जिन्हें आपने उपयोग किया है nvm। उदाहरण के लिए:

Package: nodejs-dummy
Version: (version slightly higher than what the apt package actually provides)
Maintainer: Your Name <yourname@example.com>
Provides: nodejs
Architecture: all
Description: Something that will remind you what this does ;)

पैकेज बनाएँ:

equivs-build nodejs-dummy

अंत में, इसे स्थापित करें:

sudo dpkg -i nodejs-dummy_use_the_actual_filename.deb

कुल्ला और जो भी पैकेज का उपयोग कर प्रतिस्थापित किया है के लिए दोहराएँ nvm। यदि कोई पैकेज आपके द्वारा प्रतिस्थापित दूसरे पैकेज के विशिष्ट संस्करण पर निर्भर करता है nvm, तो आपको उस सटीक संस्करण संख्या का उपयोग करने की आवश्यकता हो सकती है जो उस पर निर्भर करता है। मुझे यकीन नहीं है कि ऐसा करने से क्या समस्याएँ पैदा हो सकती हैं, हालाँकि, और जब भी OS संकुल संस्करण बदलते हैं, तो आपको अपने डमी पैकेजों का पुनर्निर्माण करते रहने की आवश्यकता होगी।


1
उत्तर देने के लिए बहुत धन्यवाद! मेरी रैंकिंग कम है इसलिए अपवोट की गिनती नहीं है लेकिन मैंने वोट दिया!
1

3
@Louisgv यदि यह आपके प्रश्न का उत्तर देता है, तो इसे स्वीकार करने पर विचार करें ।
बोरिस ने

समानों के बारे में नहीं पता था। यह एक महान उपकरण है, धन्यवाद!
ब्रांडिजी

5

यह एक समस्या है कि एनवीएम सॉफ्टवेयर कैसे वितरित करता है। वे बस कोई विशिष्ट विशिष्ट पैकेजिंग नहीं कर रहे हैं। विशिष्ट होने के लिए एनवीएम का एक त्वरित रीड किया और वे सिर्फ बायनेरिज़ हैं। उदाहरण के लिए, यहां यह नोडज 6: https://nodejs.org/../lates.../node-v6.3.1-linux-x64.tar.gz के लिए स्थापित है। इसमें कोई मानक नहीं है। .rpm मेटाडेटा तब तक जब तक वे असली पैकेज को ठीक से जारी नहीं करते हैं, कोई भी ऐसा स्तर नहीं है, जो डिस्ट्रो लेवल पैकेज मैनेजर कर सकते हैं और वे संभवतः एक दूसरे के साथ संघर्ष करेंगे। अगर मैं समझ रहा हूँ कि एनवीएम का उचित पैकेज जारी करना कुछ ऐसा नहीं है जिसकी वे रुचि रखते हैं, क्योंकि यह उन्हें विशिष्ट विशिष्ट पैकेजों का समर्थन करने के लिए बाध्य करता है। इसलिए इसके बजाय हमारे पास हैक है जो कि एनवीएम है। शायद उनके खिलाफ कोई मामला दर्ज करें। इसे केवल नोडज समुदाय द्वारा सुधारा जा सकता है।

उल्लेखनीय रूप से npm और nvm वर्तमान में डिस्ट्रो पैकेजिंग की तुलना में कोड साइनिंग ( स्रोत ) की किसी भी अवधारणा का समर्थन नहीं करते हैं, जो कि सबसे डिस्ट्रो के पैकेज प्रबंधकों में अच्छी तरह से समर्थित है। यह सिस्टम पैकेज स्थापित करने के लिए एक काफी असुरक्षित दृष्टिकोण है।


4

नहीं, जैसा आपने पहले ही कहा था, आप नहीं कर सकते। Apt सिस्टम स्तर पर काम करता है, जहाँ नियमित nvm उपयोगकर्ता स्तर पर संकुल स्थापित करता है।

आपके पास दो विकल्प हैं -

  • या तो एनवीएम के माध्यम से अपना वांछित पैकेज और पहले से ही बंद किए गए अन्य एनवीएम पैकेज का उपयोग करें, या

  • पैकेज का उपयोग करके apt-getस्थापित करें और इसके साथ सभी निर्भरताएं स्थापित करें।

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