यहां 2019-01 के दौरान 2018-05 के अनुसार उपलब्ध विकल्पों की एक सूची है, जिसमें 2019-01 के दौरान प्रत्येक एक के बारे में थोड़ा विस्तार के साथ अपडेट किया गया है।
विकल्प जो बाहर खड़े हैं
साइगविन निम्नलिखित प्रदान करता है:
- एक बैश शेल और मिंट्टी टर्मिनल,
- विंडोज पर चलने के लिए संकलित सामान्य लिनक्स उपयोगिताओं की एक विस्तृत श्रृंखला
- एक व्यापक संगतता परत जो विंडोज़ पर लिनक्स प्रोग्राम को चलाने में सक्षम बनाती है।
Cygwin का उद्देश्य विंडोज़ पर लिनक्स अनुप्रयोगों को आसान बनाना है। यदि कुछ C प्रोग्राम को यूनिक्स के लिए डिज़ाइन किया गया था और इसमें पाइप, यूनिक्स-शैली फ़ाइल और डायरेक्ट्री एक्सेस आदि जैसी सुविधाओं का उपयोग करने की उम्मीद है, तो आप इसे Cygwin के लिए संकलित कर सकते हैं और Cygwin कोड और विदेशी OS (Windows) के बीच संगतता परत के रूप में कार्य करेगा । यह समान सी प्रोग्राम को लिनक्स या विंडोज दोनों पर बहुत कम या बिना किसी संशोधन के काम करने की अनुमति देता है। इस प्रकार लिनक्स कार्यक्रमों की एक विशाल सूची का अनुपालन किया गया है और जब आप सिगविन स्थापित करते हैं तो इसे चलाया जा सकता है। हालाँकि, आप, इन कार्यक्रमों के उपयोगकर्ता, शायद यूनिक्स से परिचित होंगे। उदाहरण के लिए, आपको /cygdrive/c/autoexec.bat
इसके बजाय तर्कों को पास करने की आवश्यकता हो सकती है c:\autoexec.bat
और \n
विंडोज लाइन समाप्ति ( \r\n
) के बजाय यूनिक्स लाइन समाप्ति ( ) के साथ आउटपुट से निपटने के लिए तैयार होना चाहिए ।
सभी Cygwin प्रोग्राम्स के संग्रह में एक रिपॉजिटरी शामिल होती है और हालांकि Cygwin के पास एक पारंपरिक Linux पैकेज मैनेजर नहीं होता है जिसे आप इस रिपॉजिटरी से किसी भी समय बहुत ही सहज तरीके से (आप Cygwin's setup.exe चलाते हैं) पर प्रोग्राम्स को जोड़ या हटा सकते हैं। किसी भी समय स्थापना पूर्ण होने के बाद )
बाबुन एक पूर्ण-विशेषताओं वाले पैकेज मैनेजर (पैक्ट) के साथ साइगविन है, इसके खोल, गिट, स्वचालित अपडेट और प्लग-इन उन्मुख वास्तुकला के लिए ओह-माय-ज़ेड। हालांकि डिफ़ॉल्ट शेल zsh है आप आसानी से बैश में जा सकते हैं। अगर आपको अतिरिक्त वजन से ऐतराज नहीं है तो यह वैनिला साइगविन से एक अच्छा अपग्रेड लगता है।
Mingw-w64 निम्नलिखित प्रदान करता है:
- एक बैश शेल,
- लिनक्स उपयोगिताओं की एक उचित राशि,
- लिनक्स विकास परत (या कम से कम एक) के बिना चलने वाले ऐप्स के निर्माण के लिए एक एसडब्ल्यू विकास टूलचैन।
MinGW मुख्य रूप से एक सॉफ्टवेयर वितरण और विंडोज के लिए एक बिल्डिंग प्लेटफॉर्म है। विशेष रूप से यह जीएनयू संकलक उपकरण का एक विंडोज पोर्ट है, जैसे कि जीसीसी, मेक, बैश, और इसी तरह। इसमें GNU टूल्स की उचित मात्रा और न्यूनतम यूनिक्स संगतता परत शामिल है।
मिंगव-w64 और साइगविन के बीच मुख्य अंतर प्राथमिकताओं पर है: सिग्विन का उद्देश्य पूर्ण POSIX संगतता परत प्रदान करना है जिसमें सभी प्रमुख यूनिक्स सिस्टम कॉल और पुस्तकालयों का पूर्ण कार्यान्वयन शामिल है; प्रदर्शन संगतता के लिए माध्यमिक है। MinGW का उद्देश्य प्रदर्शन है, इसलिए यह कुछ POSIX APIs प्रदान नहीं करेगा, जिन्हें आसानी से और / या Windows के तहत पर्याप्त रूप से लागू नहीं किया जा सकता है। इसके अलावा MinGW का मुख्य लक्ष्य S / W डेवलपर्स हैं। फिर भी आकस्मिक उपयोगकर्ता इसके खोल का आनंद ले सकते हैं और सामान्य उद्देश्य में उपयोगिताओं शामिल हैं।
MSYS2 निम्नलिखित प्रदान करता है:
- एक बैश शेल और मिंट्टी टर्मिनल,
- लिनक्स उपयोगिताओं की एक उचित राशि,
- OS प्रोग्राम इंस्टॉल करने के लिए एक पूर्ण रुप से प्रदर्शित कमांड लाइन पैकेज मैनेजर
- Cygwin और MinGW दोनों के हिस्से एक व्यापक लिनक्स कम्पैटिबिलिटी लेयर के साथ या बिना बिल्डिंग एप्लिकेशन को सपोर्ट करने के लिए।
- एक सॉफ्टवेयर रिपॉजिटरी और एक पैकेज मैनेजर (pacman) जो विंडोज़ पर सॉफ़्टवेयर को स्थापित, उपयोग, निर्माण और पोर्ट करना आसान बनाता है।
MSYS2 भी मुख्य रूप से एक सॉफ्टवेयर वितरण और विंडोज के लिए एक निर्माण मंच है जैसे कि MinGW लेकिन यह Cygwin और MinGW के रास्ते दोनों को जोड़ता है। आप MSYS2 का उपयोग या तो बनाने के लिए कर सकते हैं "MinGW कार्यक्रमों" या "MSYS2 कार्यक्रमों" । MSYS2 (msys-2.dll) की संगतता परत का बाद का लिंक जो स्वयं कुछ जोड़ / संशोधनों के साथ Cygwin की संगतता परत के विकास का बारीकी से अनुसरण करता है । हालांकि 2 परियोजनाओं के भंडार पूरी तरह से असंबंधित हैं। तो हालांकि MSYS2 और Cygwin दोनों प्रदान करते हैं, grep.exe
लेकिन उनके पास एक पूरी तरह से अलग संस्करण हो सकता है।
विंडोज के लिए Git या तो सिर्फ MSYS2 है जिसमें git इंस्टॉल किया गया है या कम से कम MSYS2 पर आधारित है । यह समान शेल (बैश), टर्मिनल (मिंट्टी) और पैकेज मैनेजर (पैकमैन) प्रदान करता है। यह विंडोज पर चलने वाले प्रमुख गिट पाने के लिए सबसे लोकप्रिय तरीका प्रतीत होता है और इसके साथ ही आपको एक अच्छा यूनिक्स वातावरण मिलता है।
WSL पूरी तरह से अलग विधि का उपयोग करके एक ही समस्या हल करता है। आप उसी सटीक कोड को चलाते हैं जिसे आप WSL पर लिनक्स सिस्टम पर चलाते हैं जो कर्नेल कॉल को स्वीकार करता है और उन्हें विंडोज़ कर्नेल कॉल में अनुवाद करता है (यह वाइन के विपरीत है)। बेशक अनुवाद सही नहीं हो सकता है लेकिन Microsoft ने बीटा चेतावनी को छोड़ दिया । क्योंकि WSL 2018 से पहले विंडोज सर्वर पर उपलब्ध नहीं था, इसलिए मैंने इस पर ध्यान नहीं दिया। वैसे भी आपको ज्यादातर CLI उपहारों के साथ एक अच्छा बैश शेल मिलता है, जिसे आप स्टॉक उबंटू इंस्टॉलेशन में ढूंढने की उम्मीद करेंगे। Microsoft आधिकारिक तौर पर कहता है कि "WSL का उद्देश्य GUI डेस्कटॉप या एप्लिकेशन का समर्थन नहीं करना है"हालाँकि, यह कैसे करना है पर अनौपचारिक निर्देश हैं। ऐसा लगता है कि जैसे-जैसे चीजें इस समय (2018 की शुरुआत में) खड़ी होती हैं, डब्ल्यूएसएल की मुख्य कमियां निम्नलिखित हैं: ए) स्क्रीन और डिस्क एक्सेस प्रदान करना बहुत धीमा बी है) आप विंडोज सी से डब्ल्यूएसएल (लिनक्स) फ़ाइलों को संपादित करने के लिए नहीं हैं। यह केवल 64 बिट विंडोज पर चलता है। यहां साइबरविन के साथ एक पुरानी लेकिन अच्छी तुलना है (ध्यान दें कि रिच टर्नर डब्लूएसएल टीम का सदस्य है और उसने डब्लूएसएल के बारे में बहुत सारी उपयोगी जानकारी पोस्ट की है)
सार्वजनिक भूक्षेत्र
डब्ल्यूएसएल से ऊपर के अधिकांश उपकरण सामान्य प्रौद्योगिकी (पुस्तकालयों, निष्पादन योग्य, अवधारणाओं) का एक बहुत साझा करते हैं। उदाहरण के लिए, बाश शेल जो कि मिनगव के साथ आता है, एमएसआईएस-2. डीएल पर निर्भर करता है जो खुद ही साइबरविन का एक कांटा है। तो हाँ भ्रम के लिए बहुत जगह है :-)
अधिक विकल्प
Cmder विंडोज के लिए सिर्फ एक अच्छा टर्मिनल और एक बैश जैसा शेल प्रदान करता है। यह मुख्य घटक Conemu (टर्मिनल) है। की है कि यह कहते हैं शीर्ष पर झंकार जो प्रदान करता है शक्तिशाली बैश शैली कमांड लाइन संपादन , एक कस्टम शीघ्र लेआउट और Monokai रंग योजना। यह देशी विंडो कंसोल प्रोग्राम के साथ अत्यधिक (या शायद पूरी तरह से) संगत है।
स्कूप कई जीएनयू टूल सहित कई प्रसिद्ध क्रॉस-प्लेटफॉर्म कार्यक्रमों के लिए एक कमांड लाइन पैकेज मैनेजर प्रदान करता है। यह पहले से संकलित संकुल को डाउनलोड करता है। यह न तो एक शेल और न ही टर्मिनल प्रदान करता है, बल्कि विंडोज़ 'cmd.exe के तहत चलता है (अपनी सभी सीमाओं के साथ, बल्कि देशी विंडोज़ कंसोल प्रोग्राम के साथ इसकी पूर्ण संगतता के साथ)। इसमें कोई कंपाइलर सूट भी शामिल है (लेकिन निश्चित रूप से संकलक और विकास उपकरण विशिष्ट पैकेज हैं जो आप स्कूप के साथ स्थापित कर सकते हैं)। स्कूप इंस्टॉल करने वाले बहुत सारे प्रोग्राम या तो सीधे मिनगीडब्ल्यू / एमएसवाईएस परियोजना से आते हैं, या उनके उपकरणों का उपयोग करके बनाए गए थे।
और भी विकल्प
समाधान बलो सक्रिय नहीं लगता है और मैंने कभी भी उनका परीक्षण नहीं किया है लेकिन वे दूसरों के लिए काम करते हैं:
गो (विंडोज पर ग्नू) शेल के बिना सिग्विन का हल्का विकल्प है। यह एक सुविधाजनक विंडोज इंस्टॉलर का उपयोग करता है जो मूल win32 बायनेरिज़ के रूप में संकलित 130 अत्यंत उपयोगी ओपन सोर्स लिनक्स अनुप्रयोगों को स्थापित करता है और विंडोज़ 'cm3.exe' के माध्यम से उपलब्ध है। इसे यथासंभव छोटा (लगभग 10 एमबी) बनाया गया है।
UnxUtils & GnuWin32 : UnxUtils मूल Win32 के लिए सामान्य GNU यूनिक्स जैसी उपयोगिताओं के बंदरगाहों का एक संग्रह है, जिसमें केवल Microsoft C-runtime msvcrt.dll पर निर्भर करता है। आपको मुख्य भाग और कुछ अपडेट डाउनलोड करने होंगे। GnuWin32 में UnxUtils की तुलना में बाद के संस्करण हैं, लेकिन समर्थन फ़ाइलों (जैसे DLL) की आवश्यकता है
MSYS और MinGW लगते है किया गया obsoleted MSYS2 और MinGW-W64 द्वारा तो मैं उन पर कभी नहीं देखा।
Cygwin और MSYS2 पर कुछ सामान्य मुद्दे
टर्मिनल के संबंध में
मिंट्टी Cygwin, MSYS2 और उनके डेरिवेटिव में उपयोग किया जाने वाला टर्मिनल है। एक को पता होना चाहिए कि यदि आप विंडोज़ देशी कंसोल प्रोग्राम चला रहे हैं तो यह विंडोज कमांड प्रॉम्प्ट के लिए दर्द रहित प्रतिस्थापन नहीं है। जबकि साधारण पाठ आउटपुट वाले प्रोग्राम आमतौर पर ठीक काम करते हैं, इंटरैक्टिव और पूर्ण स्क्रीन वाले को अक्सर समस्याएं होती हैं। पढ़ें Mintty के मुख पृष्ठ के बारे में अधिक है और यह भी पढ़ा पर प्रविष्टि "जब Git बैश से चलाने के कुछ देशी सांत्वना कार्यक्रमों काम नहीं करता" विंडोज पूछे जाने वाले प्रश्न के लिए Git । जब आप इस तरह की समस्याओं का सामना करते हैं तो उस प्रविष्टि में यह सिफारिशें होती हैं:
इन समस्याओं के आसपास काम करने के लिए कई तरीके हैं:
- ऐसे प्रोग्राम चलाएं जिनमें विनिपेट यूटिलिटी का उपयोग करने में समस्याएं हों । यह आपको अच्छे माइनर शेट्टी टर्मिनल का उपयोग करने की अनुमति देता है, लेकिन यदि आप कई कार्यक्रमों के लिए वर्कअराउंड की आवश्यकता रखते हैं, तो यह अस्पष्ट हो सकता है।
- [cmd.exe का उपयोग करें] और इसे "त्वरित संपादन", उचित आकार और स्क्रॉल-बैक और उपयुक्त यूनिकोड फ़ॉन्ट के लिए कॉन्फ़िगर करें। आपको अभी भी [cmd.exe] के अन्य प्रश्नों के साथ रहना होगा।
- स्थापित करें और Conemu का उपयोग करें ।
अन्य मामले
ध्यान रखने योग्य दो सबसे महत्वपूर्ण बातें ये हैं:
मुद्दों के डिबग करने की शक्ति और कड़ी मेहनत के बीच एक व्यापार है। अधिक शक्तिशाली समाधान अधिक सामान गलत तरीके से भी जा सकता है जो शुरू में आपके लिनक्स-लेयर से असंबंधित लगेगा।
यदि आपके पास बहुत सारे लिनक्स अनुभव नहीं हैं, तो साइगविन / MSYS2 / MinGW जैसे अधिक शक्तिशाली समाधानों का उपयोग न करें
UnxUtils और GnuWin32 में सबसे कम शक्ति है, लेकिन आपको सिरदर्द पैदा करने की सबसे कम क्षमता भी है। साइग्विन और इसी तरह की शक्ति और सिरदर्द दोनों में बार शीर्ष पर होगा। Cmder बीच में कहीं है। इसलिए जब आपको सबसे शक्तिशाली उपाय की आवश्यकता होती है तो अच्छी नींद लें और पूरी तरह से एकाग्रचित्त रहें। कुछ नया और संभवतः अस्थिर परीक्षण करते समय शक्तिशाली समाधानों का उपयोग करने से बचें। यह भी मत भूलो कि मध्यम जटिलता समाधान जैसे कि सीमलेस स्पॉटलेस नहीं हैं।
लिनक्स कमांड का मुद्दा विंडोज़ वाले को छाया देना, सिग्विन / एमएसवाईएस 2 / एसडब्ल्यूडब्ल्यू जैसे समाधानों में परेशानी को दूर करने का एक आम कारण है। यहाँ एक उदाहरण है: मेरे पास एक .bat फ़ाइल थी जो टाइमआउट कमांड का उपयोग कर रही थी। जब सिग्विन के तहत चलाया जाता है तो यह विफल हो जाता है क्योंकि टाइमआउट भी एक लिनक्स कमांड है लेकिन विभिन्न सिंटैक्स के साथ। के बाद मैं इस मुद्दे को देखा है मुझे पता चला कि मैं एक पाथ = जोड़ सकता हूँ ... .bat फ़ाइल के शीर्ष पर यह सुनिश्चित करने के लिए कि विंडोज़ कमांड में प्राथमिकता थी। लेकिन फिर मुझे और भी अधिक गूढ़ "इनपुट पुनर्निर्देशन समर्थित नहीं है" त्रुटि और कारण खोजने से पहले एक वर्कअराउंड के लिए व्यवस्थित किया गया।
यहाँ पर एक समस्या है जिसका एक उदाहरण cmder है। मैं Cmder के तहत यूनिसन का विंडोज संस्करण चला रहा था और कुछ विशेष परिस्थितियों में यह बिल्कुल बिना किसी त्रुटि संदेश के साथ लटका हुआ था । एक ही कमांड हमेशा cmd.exe के तहत पूरी तरह से चल रहा था। मजेदार बात यह है कि यह पूरी तरह से साइगविन के तहत भी चल रहा था (वास्तव में यदि आपके पास यूनिकोड फाइलनेम है तो साइगविन टर्मिनल cmd.exe से बेहतर है क्योंकि cmd.exe अक्सर यूनिकोड टेक्स्ट को विकृत प्रदर्शित करता है)।
इस गाइड के बारे में
2017-05 के दौरान मैं उपरोक्त साधनों के अंतर को न समझ पाने के कारण बीमार हो गया था हालांकि मैं उनमें से कुछ का उपयोग बहुत पहले से कर रहा था (मुख्य रूप से साइग्विन और सीडर लेकिन विकास के उद्देश्यों के लिए कभी नहीं)। इसलिए मैंने परिदृश्य को देखने के लिए कुछ घंटे बिताए। यह गाइड मेरे द्वारा रखे गए नोट्स का परिणाम है। मैं इस क्षेत्र का विशेषज्ञ नहीं हूं, लेकिन मैंने सभी प्रासंगिक जानकारी खोजने के लिए कड़ी मेहनत की है, इसे एक आलोचनात्मक नज़र से पढ़ें और सबसे महत्वपूर्ण भागों को स्पष्ट रूप से प्रस्तुत करें। कृपया टिप्पणी करें कि क्या कुछ गलत लगता है और मैं इसे ठीक करने की पूरी कोशिश करूंगा।
अंत में कुछ शब्दावली मुद्दों के लिए माफी: इस पाठ में मैं कभी-कभी यूनिक्स या पॉसिक्स के स्थान पर लिनक्स शब्द का उपयोग करता हूं। मुझे पता है कि वे समान नहीं हैं लेकिन इतनी लंबी दूरी से किसी विषय पर संपर्क करने पर उनके बीच अंतर करना बहुत मुश्किल है। यहां तक कि जब यह मुश्किल नहीं है तब भी समय लगता है जो मेरे पास नहीं है; ;-)
putty
एक वास्तविक लिनक्स सर्वर से जुड़ते थे। खिड़कियों पर मैं हमेशा अनिच्छुक था और उपयोग करने के लिए लुभाता थाcygwin
, अपने अनाड़ी अनुभव के कारण अनिच्छुक था। लेकिन व्यक्तिगत रूप से, मैंने इसे msys की तुलना में अधिक सुविधाजनक और vm से अधिक तेज़ पाया। एक बार स्थापित होने के बाद, साइबरविन किसी न किसी तरह से पोर्टेबल हो जाता है, बस इसकी निर्देशिका पर्याप्त होती है, हालाँकि यह विंडोज़ यूज़रनेम (डिफ़ॉल्ट रूप से, कम से कम) के आधार पर प्रत्येक मशीन / उपयोगकर्ता पर एक नया उपयोगकर्ता नाम बनाएगा। लेकिन ध्यान रखें कि चूंकि cygwin / msys को एक कस्टम "वितरण" के रूप में देखा जा सकता है, इसलिए कुछ [वैकल्पिक] कमांड स्विच गायब हो सकते हैं। उन्हें परखें।