लिनक्स विकास के वातावरण के लिए एक विंडोज सबसिस्टम में फ़ाइलों का संपादन


23

लिनक्स के लिए विंडोज सबसिस्टम (WSL) ज्यादातर कमांडलाइन लिनक्स टूल्स उपलब्ध कराने और बिना संशोधन के विंडोज पर काम करने के लिए बहुत अच्छा काम करता है। हालांकि, यह विकास के लिए थोड़ा मुश्किल हो जाता है, जब कोई चाहता है

  • लिनक्स टूलकिन का उपयोग कर एक परियोजना का निर्माण करें जिसमें अच्छी तरह से समर्थित विंडोज समकक्ष (रूबी, नोड, आदि) नहीं है
  • विजुअल स्टूडियो कोड जैसे Windows- आधारित GUI संपादक का उपयोग करके फ़ाइलों को संपादित करें ।

समस्या यह है कि विंडोज ऐप्स वर्चुअल lxss फाइल सिस्टम के अंदर फाइलों को संशोधित नहीं कर सकते हैं । इन फ़ाइलों को सीधे संशोधित करने के लिए सभी प्रकार के मुद्दों का कारण जाना जाता है।

इसलिए, जब विकास के लिए WSL का उपयोग करने की बात आती है, तो यह केवल दो उप-अपनाने के विकल्प हैं:

  1. प्रोजेक्ट को lxss ( /home/foo) के तहत स्टोर करें । सामान्य टूलकिन ठीक से काम करता है। हालाँकि, संपादन या तो टर्मिनल-आधारित विम / एमएसीएस तक सीमित है या जो कुछ भी एक एक्स एक्स सर्वर के तहत चलाया जा सकता है , जो विंडोज पर चलने वाले देशी संपादकों की तुलना में कम चिकना है।

  2. विंडोज फाइलसिस्टम ( /mnt/c/Users/foo) के तहत प्रोजेक्ट को स्टोर करें । अब किसी भी विंडोज-आधारित संपादक का उपयोग विकास के लिए किया जा सकता है। हालांकि, लिनक्स-आधारित टूलचैन नाजुक है क्योंकि इसे "नेटवर्क ड्राइव" पर उपयोग करने के लिए डिज़ाइन नहीं किया गया है, और फ़ाइल देखने या डेटाबेस के साथ समस्याएं पैदा कर सकता है ।

क्या यहां दोनों दुनिया के सर्वश्रेष्ठ पाने का कोई तरीका है - अर्थात्, एक देशी विंडोज एप्लिकेशन का उपयोग करने में सक्षम होने के लिए, लेकिन अभी भी लिनक्स टूलचैन का काम है क्योंकि यह सामान्य रूप से एक स्थानीय ड्राइव पर होगा?

जवाबों:


4

Microsoft ने हाल ही में इसके लिए व्यापक समर्थन जोड़ा है, और यह आमतौर पर अप्रैल 2019 (19H1) अपडेट में उपलब्ध होना चाहिए। एक बार तैयार होने के बाद, जब भी लिनक्स डिस्ट्रो चल रहा होता है तो एक 9 पी सर्वर बैकग्राउंड में चलेगा। 9 पी सर्वर लिनक्स फाइलसिस्टम मेटाडेटा को संभालने में सक्षम होगा, और विंडोज इसे नेटवर्क ड्राइव के रूप में व्यवहार करने में सक्षम होगा ताकि यह इसे सुरक्षित रूप से एक्सेस कर सके। आप इसके बारे में https://blogs.msdn.microsoft.com/commandline/2019/02/15/whats-new-for-wsl-in-windows-10-version-1903/ पर पढ़ सकते हैं ।

नई सुविधा के साथ, जब तक आप 9P सर्वर से नहीं गुजरते हैं, तब तक आप विंडोज़ से विंडोज और लिनक्स दोनों फाइल सिस्टम फाइल को सुरक्षित रूप से एक्सेस कर पाएंगे। यह WSL के भीतर से मूल रूप से नियंत्रित किया जाएगा। उदाहरण के लिए, डब्ल्यूएसएल कमांड लाइन से आप code /mnt/c/Users/username/src/windows-file.txtवीएस कोड में एक विंडोज फाइल खोलने में सक्षम होंगे , या code /home/username/src/linux-file.txtवीएस कोड में लिनक्स फाइल खोलने के लिए टाइप कर सकते हैं।

यदि आप विंडोज इनसाइडर प्रोग्राम का हिस्सा नहीं हैं, तो आपके पास इस तक पहुंच नहीं होगी, इसलिए आपको अभी भी एक पुराने तरीके का उपयोग करना होगा, जैसे कि wslpath।

wslpath विंडोज- और लिनक्स शैली के रास्तों के बीच परिवर्तित हो जाएगा ताकि आप WSL कमांड लाइन से आसानी से विंडोज फाइलें खोल सकें। Https://github.com/Microsoft/WSL/issues/3146#issuecomment-388118689 के अनुसार , यह लिनक्स फाइल सिस्टम पथ (यानी% AppData% \ lxss) को बदलने से इंकार कर देगा, क्योंकि 9P के बिना विंडोज से इन फाइलों को संशोधित करना असुरक्षित है। । इसका मतलब है कि आप नहीं खोल सकते हैं /home/username/src/linux-file.txt, लेकिन आप उपयोग कर सकते हैं code "$(wslpath -aw /mnt/c/Users/username/src/windows-file.txt)"

अतीत में, समान रूपांतरण करने के लिए कई तृतीय-पक्ष उपकरण थे, लेकिन wslpath इसे मूल रूप से करता है - वास्तव में, ls -l /bin/wslpathयह दर्शाता है कि यह सिर्फ / init का लिंक है।


@alex wsltools लिनक्स पथ को अपने विंडोज समकक्ष में बदल सकते हैं। इस तरह, आप लिनक्स कमांड लाइन से एक विंडोज प्रोग्राम खोल सकते हैं, और इसे विंडोज फाइलसिस्टम पर एक फाइल खोलने के लिए कह सकते हैं।
शेन लॉरेंस

ऐसा मत सोचो। blogs.msdn.microsoft.com/commandline/2016/11/17/… । क्या आप कोई संदर्भ प्रदान कर सकते हैं कि ऐसा करना सुरक्षित है?
एलेक्स

@alex इसे ऊपर लाने के लिए धन्यवाद। यह स्पष्ट करने के लिए एक अच्छा बिंदु है। आपके द्वारा साझा किया गया लिंक (जो कि ओपी के प्रश्न में भी है) आपको बता रहा है कि विंडोज से लिनक्स फाइल सिस्टम में फाइलें न खोलें (यानी% AppData% \ lxss के तहत चीजों को बदलने के लिए विंडोज एप्लिकेशन का उपयोग न करें)। मेरा उत्तर और मेरी पिछली टिप्पणी दोनों का वर्णन है कि विंडोज प्रोग्रामों के अंदर विंडोज फाइलों को WSL कमांड लाइन से कैसे खोलें (उदाहरण के लिए "खुला: C: \ Users \ Username \ src \ example.txt" अपने WSL पथ से "/ mnt / c / Users /" उपयोगकर्ता नाम / src / example.txt ")। एक नई विधि भी सामने आ रही है। भेद और नई विधि दिखाने के लिए मैंने अपना उत्तर अपडेट कर दिया है।
शेन लॉरेंस

यदि आप विंडोज़ बायनेरिज़ के साथ विंडोज़ फ़ाइलों को संपादित करने जा रहे हैं तो शेन, डब्ल्यूएसएल का उपयोग करने का क्या मतलब है? सिर्फ खिड़कियों का उपयोग क्यों नहीं?
एलेक्स

अच्छी खबर: WSL अब Win10 के साथ मुद्दों के बिना लिनक्स फाइलों को संपादित कर सकता है 1903: devblogs.microsoft.com/commandline/… "अतीत में, विंडोज से लिनक्स फाइलें बनाने और बदलने से फाइलों को खोने या डेटा को दूषित करने के परिणामस्वरूप यह संभव हो गया है। अत्यधिक अनुरोधित और लंबे समय से प्रतीक्षित सुविधा। हमें यह घोषणा करते हुए गर्व हो रहा है कि अब आप विंडोज से अपने लिनक्स डिस्ट्रोस की सभी फाइलों तक आसानी से पहुँच सकते हैं। "
केईआरआर

1

मुझे यकीन है कि होशियार लोग मुझसे इस सवाल को देखा है। लेकिन मैं इसका जवाब दूंगा। मुझे विश्वास है कि जवाब फिलहाल नहीं है। आपके द्वारा बताए गए लोगों के अलावा, दोनों दुनिया के सर्वश्रेष्ठ पाने का बेहतर तरीका है।

मुझे यकीन है कि यह ऐसा उत्तर नहीं है जो कोई भी चाहता है, लेकिन मुझे लगता है कि यह सही उत्तर है। मुझे पता है कि यह कुछ ऐसा है जिसे Microsoft अधिक सहज बनाने की कोशिश कर रहा है, लेकिन यह अभी तक नहीं है।


और यह अभी भी नहीं है।
ह्यूगो डेर हुनग्रिज

0

2018 की पहली छमाही में, माइक्रोसॉफ्ट ने डब्ल्यूएसएल में कुछ सुधार जारी किए हैं जो इनमें से कुछ मुद्दों को संबोधित करते हैं:

इनमें से पूरी तरह से मेरे मूल प्रश्न में मुद्दों का समाधान नहीं है, लेकिन वे कुछ विशिष्ट मामलों में प्रयोज्यता में सुधार कर सकते हैं।


धन्यवाद! इसे अपडेट रखें। अगर यह मुझे "सुरक्षित रूप से" चुनिंदा फ़ाइलों के लिए अपने पसंदीदा GUI संपादक का उपयोग करने देता है, तो भी मैं ठीक हो जाऊंगा, मैं उचित बिल्ड-टूल एकीकरण के बिना रह सकता हूं (कंसोल से किया जा सकता है)। यहां तक ​​कि अस्थायी रूप से स्थानीय विंडोज़ कॉपी के लिए "rsync-ing" फाइलें तब तक ठीक रहेंगी जब तक कि यह पारदर्शी रूप से नहीं किया जाता है। मैं एक कष्टप्रद बिंदु पर आ रहा हूं, CLI से सभी फ़ाइलों को संपादित करना और उन्हें ट्रैक करना कम से कम (मेरे लिए कम से कम) है, और मैं वास्तव में चाहता हूं कि "सभी सामान विंडोज़ पर करें," भेजें / कॉपी करें "कोड को WSL करें , वहां उपकरण चलाएं।
डैन एम।

0

अगर आप linux कमांड चलाना चाहते हैं और windows editors के साथ edit कर सकते हैं। आप अपने स्रोत कोड (जिसे आप संपादित और परीक्षण करना चाहते हैं) को अपने फ़ाइल सिस्टम में कहीं भी पकड़ सकते हैं (जैसे c: \ source \) और linux कंसोल में / mnt / c / स्रोत के माध्यम से एक्सेस कर सकते हैं। उम्मीद है की यह मदद करेगा।


0

अब विजुअल स्टूडियो कोड सपोर्ट करता है (जैसा कि मैं इसका इस्तेमाल कर रहा हूं)। "डब्ल्यूएसएल एक्सटेंशन" जो आपको लिनक्स लोकेशन से CRUD (क्रिएट, रीड, अपडेट, डिलीट) फाइल्स / फोल्डर को परफॉर्म करने की अनुमति देता है। हालांकि मैं अभी भी परमाणु के लिए एक ही सेटअप प्राप्त करने में संघर्ष कर रहा हूं, जो कि लिनक्स प्लेटफॉर्म पर रेल एप्लिकेशन डेवलपमेंट के लिए संपादक की मेरी पसंद थी।

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