node.js - नोड-जीआईपी के साथ मूल बाइंडिंग के साथ नोड मॉड्यूल क्रॉस-कंपाइल करें




amazon-web-services cross-compiling (3)

रॉबर्ट के उत्तर के समान लाइनें, जब मुझे अपने मैक पर एक अलग ओएस में काम करना पड़ता था, तो मुझे मैक पर लिनक्स पाने के लिए ओरेकल के फ्री वर्चुअलाइज़र वर्चुअलबॉक्स की तरह वीएम वेयर का उपयोग करना पड़ता है, मेरे लिए कोई भी कीमत नहीं। या एक नया एडब्ल्यूएस खाते के लिए साइन अप करें, आपको मुफ्त में एक वर्ष के लिए सूक्ष्म मिलता है। अपने लिनक्स बॉक्स को प्राप्त करने के लिए उपयोग करें, जो कुछ भी आपको वहां ज़रूरत है

मैं ऐडब्लूएस लैम्ब्डा का उपयोग कर रहा हूं, जिसमें node_modules फ़ोल्डर सहित मेरी नोड। जेएस स्क्रिप्ट का एक संग्रह बनाने और चलाने के लिए उनके बुनियादी ढांचे को अपलोड करना शामिल है।

यह ठीक काम करता है, सिवाय इसके कि मूल बाइंडिंग (नोड-जीआईपी का उपयोग करके) के साथ नोड मॉड्यूल की बात आती है। क्योंकि बाइंडिंग का अनुपालन किया गया था और मेरे स्थानीय कंप्यूटर (ओएस एक्स) पर संग्रहित परियोजना, यह एडब्ल्यूएस (अमेज़ॅन लिनक्स) सर्वरों के साथ संगत नहीं है

मैं एक नोड मॉड्यूल (विशेष रूप से, नोड- sqlite3 ) को क्रॉस-कम्पाइल / स्थापित कैसे कर सकता / सकती हूं, जब मैं इसे किसी अन्य सर्वर कमान में अपलोड करता हूं?


हालांकि वास्तव में आपकी समस्या का कोई हल नहीं है, एक बहुत ही आसान उपाय शायद लिनक्स मशीन पर देशी ऐडंस को संकलित करने के लिए हो सकता है।

आपकी विशेष स्थिति के लिए, मैं वाग्रंट का उपयोग करेगा आवारा वर्चुअल मशीन बना सकते हैं और उन्हें सेकंड के भीतर कॉन्फ़िगर कर सकते हैं।

  1. एक ओएस छवि ढूंढें जो अमेज़ॅन के लिनक्स डिस्ट्रो (फेडोरा, सेंकॉस, अन्य जो कि yum को पैकेज मैनेजर के रूप में इस्तेमाल करते हैं) जैसे दिखते हैं - विकी देखें
  2. एक साधारण कॉन्फ़िगरेशन स्क्रिप्ट का उपयोग करें, जो मशीन स्टार्टअप पर वार्जंट द्वारा चलाए जाने पर, npm install करेगा (वैकल्पिक रूप से यह एक साफ इंस्टालेशन सुनिश्चित करने से पहले node_modules फ़ोल्डर को भी निकाल सकता है)
  3. अतिरिक्त सुविधा के लिए, स्क्रिप्ट तैनाती के लिए ज़िप फ़ाइल भी बना सकती है
  4. स्थापना समाप्त होने पर, स्क्रिप्ट सिस्टम संसाधनों की अनावश्यक खपत से बचने के लिए वीएम बंद कर देगी
  5. तैनात!

इसमें कुछ ट्यूनिंग की आवश्यकता हो सकती है यदि लिंक्ड लाइब्रेरी लक्ष्य मशीन पर एक ही स्थान पर नहीं हैं लेकिन आमतौर पर यह मुझे सबसे अच्छा और तेज समाधान की तरह लगता है


कुछ मामलों में वॉगरंट का उपयोग करने वाले ऐप को स्थापित करने में पर्याप्त हो सकता है, मुझे यह पता चला है कि लिनक्स पर ऐप का निर्माण करना जरूरी है जो लम्ब्डा के अमेज़ॅन लिनक्स एएमआई के पास जितना संभव है

आप यहां मूल उत्तर पढ़ सकते हैं: https://.com/a/34019739/303184

इसे काम करने के लिए कदम:

  1. नई ईसी 2 उदाहरण स्पॉन सुनिश्चित करें कि यह आपके एडब्ल्यूएस लेम्बाडा रनटाइम के रूप में बिल्कुल उसी छवि पर आधारित है। आप यहां लेम्बा एनवी विवरण की समीक्षा कर सकते हैं: http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html । हमारे मामले में, यह अमेज़ॅन लिनक्स एमी को amzn-ami-hvm-2015.03.0.x86_64-gp2 कहा गया था।

  2. nvm स्थापित करें और एडब्ल्यूएस लैम्ब्डा पर नोड। जेएस के समान संस्करण को स्थापित करने के लिए इसका इस्तेमाल करें। यह लिखने के समय, यह v0.10.36 था। आप http://docs.aws.amazon.com/lambda/latest/dg/current-supported-versions.html का पुनः पता कर सकते हैं।

  3. आपको शायद ईसी 2 पर git और g ++ कंपाइलर स्थापित करने की आवश्यकता होगी। आप यह चल रहा है

    sudo yum install git gcc-c++
  4. अंत में, अपने ऐप को अपने नए ईसी 2 पर क्लोन करें और अपने ऐप की निर्भरताएं इंस्टॉल करें:

    nvm use 0.10.36
    npm install --production
  5. तब आप आसानी से नोड_मॉड्यूल को scp या इस तरह का उपयोग कर सकते हैं।