यह उत्तर दूसरों को 1-2 घंटे की समस्या निवारण में मदद करने के लिए मदद करना चाहता है और वीएस कोड में टर्मिनल के लिए डब्ल्यूएसएल का उपयोग करते समय सामान्य समस्याओं के लिए धीरे-धीरे असमान समाधान खोजने में मदद करता है। यह विशिष्ट पैकेजों को स्थापित करने को कवर नहीं करता है, बल्कि सामान्य हैं जो उन चीजों को स्थापित करते समय निर्भरता के रूप में ठीक से स्थापित नहीं हो सकते हैं जो उनकी उपस्थिति पर भरोसा करते हैं, और संबंधित सामान्य सेटिंग्स को ठीक करने पर।
चरणों का सारांश
- डब्लूएसएल स्थापित
- वीएस कोड (या अन्य आईडीई) टर्मिनल के लिए कॉन्फ़िगर किया गया है
- एनपीएम ने इनफ़िल्टाइल में स्थापित और पथ को ठीक किया (अन्य उपकरणों के साथ मदद कर सकता है)
- बिल्ड-आवश्यक स्थापित (किसी भी उपकरण के साथ मदद करता है जो मेक / जीसीसी / आदि का उपयोग करते हैं)
- WSL का उपयोग करके VS कोड कार्य
- अतिरिक्त
आरंभ और आवश्यकताएँ
- आपके पास WSL स्थापित होना चाहिए । (जिसका अर्थ है कि आपको 64 बिट विंडोज 10, उपयुक्त अपडेट के साथ चलना चाहिए ) पहले से स्थापित नहीं होने पर इंस्टॉल गाइड का पालन करें । इसके लिए कुछ रिबूट की आवश्यकता होगी।
वीएस कोड टर्मिनल कॉन्फ़िगरेशन
या तो CTRL+ ,कीबोर्ड शॉर्टकट, या File
→ Preferences
→Settings
संपादन विंडो के शीर्ष दाईं ओर, सुनिश्चित करें कि आप अपने लिए सही संदर्भ में काम कर रहे हैं: या तो उपयोगकर्ता सेटिंग्स या कार्यक्षेत्र सेटिंग्स ।
सेटिंग सर्च बार में, टाइप करें terminal.integrated.shell.windows
(या जो भी आपको काफी लंबे समय तक मिलता है)
वास्तविक सेटिंग फ़ाइल में सेटिंग ढूंढें, उपयोग करें Edit
(लाइन पर माउस, यह बाईं ओर होगा: माउस के बिना एक टच स्क्रीन पर, आपको बस लाइन के बाईं ओर टैप करने में सक्षम होना चाहिए), और चयन करेंReplace in Settings
दाएँ फलक में, संशोधित json फ़ाइल में बनाई गई प्रविष्टि को संशोधित करें: पिछली सेटिंग को बदलें
"C:\\WINDOWS\\Sysnative\\bash.exe"
अन्य आईडीई: इंटेलीज
सेटिंग / टूल / टर्मिनल खोलें और "शेल पथ" फ़ील्ड को सेट करें "C:\Users\USERNAME\AppData\Local\Microsoft\WindowsApps\ubuntu.exe"
अपने WSL Ubuntu बैश टर्मिनल देव के लिए कार्यात्मक बनाना
जब आप टर्मिनल खोलने के लिए CTRL+ `का उपयोग करते हैं, तो आपके पास अब एक बैश टर्मिनल होना चाहिए।
यदि आपने पहली बार bash.exe चलाया है, तो आपसे Ubuntu स्थापित करने के बारे में पूछा जा सकता है। ऐसा करो। एक बार आपका इंस्टॉलेशन पूरा हो जाने के बाद, अपने उपयोगकर्ता नाम और पासवर्ड को WSL Ubuntu में उपयोग करने के लिए चुनें। ये आपके वर्तमान विंडोज खाते के साथ मेल नहीं खाते हैं, और यह ध्यान रखना महत्वपूर्ण है कि वे आपके विंडोज खाते के पासवर्ड में परिवर्तन के आधार पर नहीं बदलेंगे।
एक बार जब आप कर लेते हैं, तो आपके पास अपने टर्मिनल में बैश कमांड प्रॉम्प्ट होगा।
ध्यान दें कि विंडोज पर गिट-बैश के विपरीत, यह एक अलग वातावरण है। जबकि इसका उपयोग विंडोज सॉफ़्टवेयर को स्वयं के बाहर लॉन्च करने के लिए किया जा सकता है, आपको वास्तविक टर्मिनल के भीतर उन्हें चलाने के लिए उपयुक्त उबंटू पैकेजों की आवश्यकता होगी।
वर्तमान में, WSL आपके द्वारा अपेक्षित सब कुछ के साथ लोड नहीं आता है या होने के लिए इस्तेमाल किया जा सकता है, और कुछ चीजें सॉफ्टवेयर में आपके द्वारा विंडोज में लोड की गई डिफ़ॉल्ट प्रोफाइल सेटिंग्स के आधार पर संघर्ष कर सकती हैं।
अपडेट और गिट
नोट: मैं इन्हें sudo के रूप में उन लोगों के लिए दस्तावेज करने जा रहा हूं, जिन्हें बस इसके एक टुकड़े की आवश्यकता है, लेकिन शुरुआत में एक विकल्प बदले में sudo su
और बिना sudo के केवल निम्न कमांड चलाने का है।
सुनिश्चित करें कि आपके उबंटू पैकेज अद्यतित हैं:
sudo apt-get -y update
sudo apt-get -y upgrade
sudo apt-get -y dist-upgrade
sudo apt autoremove
गिट स्थापित करें:
sudo apt-get install git
Node.js और NPM
यदि आपके पास पहले से ही विंडोज में एनओडी या एनपीएम लोड है, तो उन्हें उबंटू में चलाने से पथ समस्याओं के कारण समस्याग्रस्त हो सकते हैं। तो, आपको उबंटू देशी संस्करण स्थापित करने और यह सुनिश्चित करने की आवश्यकता है कि वे इसके बजाय उपयोग किए जाते हैं।
सबसे पहले, एनपीएम के साथ नोड.जेएस स्थापित करें । (वैकल्पिक: NVM स्थापित करें और नोड को स्थापित करने के लिए इसका उपयोग करें। js)
स्थापित करने के बाद, एनपीएम कमांड चलाना संभवतः विफल हो जाएगा: उदाहरण के लिए, npm -v
शायद आपको देगा:
: not foundram Files/nodejs/npm: 3: /mnt/c/Program Files/nodejs/npm:
: not foundram Files/nodejs/npm: 5: /mnt/c/Program Files/nodejs/npm:
/mnt/c/Program Files/nodejs/npm: 6: /mnt/c/Program Files/nodejs/npm: Syntax error: word unexpected (expecting "in")
यह एक काफी सीधा समाधान के साथ एक रास्ते के मुद्दे के कारण है । अपने पसंदीदा CLI संपादक का उपयोग करना (जैसे nano
, vim
, emacs
, cat
और sed
... आदि) खोलने पर, आपकी~/.profile
nano ~/.profile
नोट: विंडोज टूल्स का उपयोग करके लिनक्स फाइलों को संपादित करने का प्रयास न करें । ( यह समझाने वाले बोल्ड रेड टेक्स्ट के साथ आधिकारिक लिंक के लिए @ david-c-rankin की टिप्पणी के लिए धन्यवाद ) यदि आप टर्मिनल में इसके लिए एक CLI संपादक का उपयोग नहीं करना चाहते हैं, तो इस लिंक के लिए इस पोस्ट के नीचे देखें कि कैसे एक जीयूआई चलाने के लिए।
वर्तमान में, डब्ल्यूएसएल में डिफ़ॉल्ट बैश पैट वैरिएबल है
PATH="$HOME/bin:$HOME/.local/bin:$PATH"
जो पहले दो बाइनरी निर्देशिकाओं के बाद विंडोज़ पथ को इंजेक्ट कर रहा है। दुर्भाग्य से, इसका परिणाम / usr / bin में विंडोज़ npm स्थापित होने से पहले उपयोग नहीं किया जा रहा है, इसलिए अंतिम $ PATH से पहले इसे जोड़ें:
PATH="$HOME/bin:$HOME/.local/bin:/usr/bin:$PATH"
सहेजें, और फिर टर्मिनल को लोड करें या केवल पथ फ़ाइल को स्रोत करें
source ~/.profile
बिल्ड जरूरी
यदि आप ऐसी किसी भी चीज़ का उपयोग कर रहे हैं, जिसे बनाने या अन्यथा उपयोग करने की आवश्यकता है, तो यह लगभग गारंटी है कि आपको इन स्थापित की आवश्यकता होगी; इसलिए यदि आपने उन्हें नोड स्थापित करते समय स्थापित नहीं किया है। तो, ऐसा करें। यह बहुत आसान है कि निर्माण-आवश्यक पैकेज का उपयोग करने के बजाय सब कुछ अलग से स्थापित करने का प्रयास करें।
ध्यान दें कि कॉम्पास जैसे पैकेज जो रूबी एफएफआई पर भरोसा करते हैं, उनके बिना विफल हो जाएंगे। यदि आपको एक उपकरण को ठीक से स्थापित करने और चलाने में समस्या हो रही है, तो सुनिश्चित करें कि आपके पास जीसीसी है और स्थापित करना शुरू करने के लिए एक अच्छी जगह हो सकती है।
sudo apt-get install -y build-essential
उबंटू का उपयोग करके रनिंग टास्क
ध्यान दें कि यदि आप VS कोड के कार्यों का उपयोग करते हैं। बिल्ड कार्यों को चलाने के लिए, डिफ़ॉल्ट रूप से यह अभी भी उबंटू एक के बजाय विंडोज सबसिस्टम का उपयोग करके उन्हें चलाएगा। कभी-कभी यह वही हो सकता है जो आप चाहते हैं, लेकिन अगर आपने उबंटू में ग्रंट-क्ली को स्थापित करना समाप्त कर दिया है और विंडोज नहीं है, तो यह संभवतः नहीं है।
वीएस कोड ने हाल ही में 2017 मई अपडेट किया था कि टास्क कैसे काम करता है जो टर्मिनल के रूप में कार्य धावक को सेट करने की अनुमति देता है । यह अब तक के कार्यों को स्थानांतरित करने का सबसे आसान तरीका है।
बस सेट
"runner": "terminal",
आपके tasks.json
और आप कर रहे हैं (यह मानते हुए कि आपके पास उपयुक्त सभी उपकरण हैं जिन्हें आप अब WSL Ubuntu में स्थापित करने के लिए चला रहे हैं)।
यह बहुत ही पोर्टेबल है, आदर्श रूप से उन प्रणालियों के बीच कोई बदलाव की आवश्यकता नहीं है जो WSL, या अन्य OSes में नहीं हैं, या वह विधि है जो मैं सुझाऊंगा।
पल के रूप में, यह विधि एक और TERMINAL
टैब उदाहरण (ड्रॉप डाउन से एक्सेस) को जन्म देती है । आप अभी भी उपयुक्त वॉचर्स सेट कर सकते हैं, लेकिन इसका मतलब यह है कि यह अब OUTPUT
टैब पर नहीं बैठा है ।
पुरानी विधि WSL Ubunutu बैश शेल को लागू करने और इसे दिखाने में सक्षम है OUTPUT
, और इसमें -c तर्क के साथ bash.exe को कॉल करना या शेल स्क्रिप्ट का उपयोग करना शामिल है। यह दुर्भाग्य से शब्दार्थ नहीं है, क्योंकि हम bash
अपनी आज्ञा बना रहे हैं और इसे पारित कर रहे हैं जो हम इसके बजाय एक तर्क के रूप में चलाना चाहते हैं। इसका मतलब यह भी है कि यह अन्य प्रणालियों के लिए जल्दी पोर्टेबल नहीं है।
आप उसी स्थान का उपयोग कर सकते हैं जो आपने पहले वी.एस. कोड के लिए दिया था, C:\\WINDOWS\\Sysnative\\bash.exe
मान के लिएcommand
args
सरणी के पहले तत्व को -c
और दूसरी को उस कमांड के रूप में सेट करें जिसे आप चलाना चाहते हैं ( इस उत्तर के उत्तरार्ध में क्रेडिट )।
वैकल्पिक रूप से, आप इसके बजाय एक शेल स्क्रिप्ट चला सकते हैं जैसा कि यहां देखा गया है ।
आगे सहायक बिट्स
WSL बैश कमांड लाइन से विंडोज में VSCode शुरू करना चाहते हैं ?
अपने WSL Ubuntu के लिए एक ग्राफिकल इंटरफ़ेस रखना चाहते हैं ? (यह आपको उबंटू प्रणाली के भीतर फाइलों के लिए लिनक्स जीयूआई संपादक का उपयोग करने जैसी चीजें करने की अनुमति देगा : विंडोज संपादन उपकरण का उपयोग करके उन्हें संपादित न करें, npm पर अनुभाग में टिप्पणी / नोट देखें)
निर्माण करना चाहते हैं (WSL के लिए ठीक से वी.एस. कोड कार्य स्थापित करने पर उपरोक्त भाग देखें) और पूरी तरह से WSL Ubuntu में डिबग करें ? (यह दिखाता है कि कैसे gdb का उपयोग करना है, लेकिन pipeTransport
अवधारणा का उपयोग अन्य डीबगर्स के साथ किया जा सकता है) ( इस उत्तर का श्रेय , लेकिन इससे पहले कि यह स्थानीय लूपबैक का उपयोग करके एक विधि प्रदान करता है जो उपयोगी साबित हो सकता है)