tl को अद्यतन करने के लिए सर्वश्रेष्ठ अभ्यास; डॉ
एक सप्ताह के बारे में पहले मैं अपनी पहली गैर तुच्छ हास्केल परियोजना के लिए 0.1.0.0 पैकेज जारी किया। मैं गैर-हास्केलर्स के लिए भी निष्पादन योग्य स्थापित करना और अपग्रेड करना चाहता हूं। the README में, मैंने cabal install
का उपयोग करके इंस्टॉल करने का सुझाव दिया। क्या यह एक गलती है?एक हास्केल आवेदन वितरण और यह
प्रसंग
मैं "कबाल नरक" के बारे में सुना था, लेकिन नहीं पता था कि यह उन पैकेज के एक विश्व स्तर पर स्थापित प्रतिलिपि को उन्नत करने के लिए कैसे रफ़ू मुश्किल तब भी जब मैं परंपरागत ढंग से वास्तव में किसी भी परिवर्तन नहीं किया होगा, .cabal
फ़ाइल में संस्करण निर्भरताएं। अंत में, मैं 0.1.0.0 से 0.2.0.0 तक अद्यतन करने की कोशिश कर रहा एक गहरी खरगोश छेद नीचे चला गया। इसने मुझे निर्भरताओं को तोड़ने के बारे में चेतावनी दी, मैंने अपग्रेड को मजबूर करने या अपने स्थानीय राज्य को रीसेट करने के लिए विभिन्न incantations की कोशिश की, और प्रणाली को इतनी मेहनत से घायल कर दिया कि मुझे ghc
और cabal-install
ब्रू पैकेज (यह मैकोज़ पर है) को पुनः स्थापित करना था सब कुछ एक ऐसे राज्य में वापस जहां मैं स्थापित और फिर से चला सकता है।
विकल्प:
stack install
: मैं पहले से ही ढेर उपयोग कर रहा था स्थानीय विकास के वातावरण के प्रबंधन के लिए, लेकिन यह, बहुत अच्छी तरह से स्वतंत्र रूप में अच्छी तरह स्थापित करता है के लिए काम करने के लिए जब तक आप ढेर पहले स्थापित किया है लगता है। (बस अपने$PATH
को उचित रूप से स्थापित करने की आवश्यकता है।)- प्रीबिल्ट बाइनरी वितरित करना: अंतिम उपयोगकर्ताओं के लिए अच्छा और आसान होगा, लेकिन कम से कम ओएस एक्स पर, मुझे कोड हस्ताक्षर के बारे में चिंता करने की आवश्यकता होगी और मैं भी नहीं इसके लिए एक पहचान स्थापित की गई है।
तो, मेरे रीडमे में अभी मैं stack install
और cabal install
दोनों का उल्लेख कर रहा हूं। लेकिन 2016 का सबसे अच्छा अभ्यास क्या है?
यदि उपयोगकर्ता आपके पैकेज को स्थापित करने का प्रयास करते हुए "कैबल-नरक" में भाग लेते हैं तो यह वास्तव में आपकी समस्या नहीं है यदि आपने अपनी निर्भरताओं को सही तरीके से निर्दिष्ट किया है।एप्लिकेशन कैबल उपयोगकर्ता स्थापित करने के लिए यदि वे पैकेज संस्करण समस्याओं में भाग लेते हैं तो हमेशा सैंडबॉक्स का उपयोग कर सकते हैं। दोनों 'स्टैक' और 'कैबल' के पास हास्केल पारिस्थितिकी तंत्र में उनकी जगह है। मुझे लगता है कि सबसे अच्छा अभ्यास यह सुनिश्चित करना है कि आपका एप्लिकेशन किसी भी का उपयोग करके स्थापित किया जा सके। – ErikR