कई पैकेज प्रबंधन प्रणालियों के बारे में अच्छा अभ्यास


14

कुछ प्रोग्रामिंग भाषाएं अपने स्वयं के पैकेज प्रबंधन प्रणाली के साथ आती हैं, उदाहरण के लिए, आर के मामले में, अंतर्निहित install.packagesकमांड सीआरएएन रिपॉजिटरी से इंस्टॉल होती है और निर्भरता से संबंधित है।

समानांतर में, ओएस अपने स्वयं के पैकेज प्रबंधन प्रणालियों के साथ आते हैं, जैसे aptडेबियन-आधारित लिनक्स वितरण के लिए कमांड।

मैंने फैसला किया था कि वितरण के पैकेज प्रबंधक का उपयोग करना बेहतर था, यह गारंटी देने के लिए कि मेरे सिस्टम पर सब कुछ संगत होगा (देखें /programming//a/31293955/1878788 )।

लेकिन जल्द ही एक दिन आया जब मुझे उन चीजों की जरूरत थी जो इस तरह उपलब्ध नहीं थीं। उदाहरण के लिए, एक जैव सूचना विज्ञान कार्यक्रम जिसे मेरे वितरण द्वारा पैक नहीं किया गया था, उसके लिए आर के कुछ विशिष्ट संस्करण की आवश्यकता होगी। ऐसा हुआ कि यह कार्यक्रम "बायोकॉन्केटर" नामक एक परियोजना के माध्यम से उपलब्ध था, जिसका लक्ष्य जैव सूचना विज्ञान के लिए आर संकुल प्रदान करना था, जो संकुल को सुनिश्चित करता है। एक दूसरे के साथ संगत रहें ( https://www.bioconSTR.org/install/#why-biocLite देखें )।

इसलिए मैंने आर के लिए अपने ओएस पैकेजिंग प्रबंधन प्रणाली का उपयोग नहीं करने का फैसला किया, और biocLiteबायोकॉन्टर प्रोजेक्ट द्वारा प्रदान की गई कमांड के माध्यम से सब कुछ स्थापित किया।

यह दृष्टिकोण कुछ समय के लिए सुचारू रूप से चला, जब तक मुझे पता चला कि सुसंगत, स्वस्थ और आसानी से पुनर्निर्माण योग्य जैव सूचना विज्ञान पारिस्थितिकी प्रणालियों को बनाए रखने के लिए, कुछ लोगों ने कोंडा पैकेज प्रबंधन प्रणाली का उपयोग करने का फैसला किया था। "बायोकोन्डा" नामक यह परियोजना न केवल आर पैकेज प्रदान करती है, बल्कि सभी प्रकार की भाषाओं से चीजें आसानी से संस्करणों को स्विच करने की संभावना प्रदान करती हैं, और इसी तरह ( https://bioconda.github.io/ देखें )।

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

मैं सोच रहा हूं कि मुझे एक दृष्टिकोण से दूसरे तक कितनी देर कूदना पड़ेगा। क्या पैकेज प्रबंधन के इन कई, हस्तक्षेप, और अतिव्यापी स्तरों से निपटने के तरीके के बारे में सामान्य अच्छा अभ्यास है?

संपादित करें (14/09/2017) : फिर भी एक और विकल्प मैंने माना है कि वैकल्पिक ओएस-स्तरीय पैकेज प्रबंधकों का उपयोग करना है, जैसे गुइक्स या निक्स


1
फेडोरा प्रोजेक्ट के पास R कार्यक्रमों की पैकेजिंग के लिए दिशानिर्देश हैं । फेडोरा, आरएचईएल और सेंटोस में आरपीएम पैकेज आम तौर पर इनका पालन करेंगे।
माइकल हैम्पटन

जवाबों:


13

मुझे यकीन नहीं है कि आर के लिए क्या उपलब्ध है (आरईएनवी के बारे में सुना), लेकिन पायथन के लिए मैंने व्यावहारिक दृष्टिकोण पर फैसला किया है कि प्रत्येक उपयोगकर्ता अपने स्वयं के पायथन पर्यावरण के लिए जिम्मेदार है pyenv(वही पर्ल के साथ perlbrewऔर रूबी के साथ सच है RVM)। इस तरह, उपयोगकर्ता मेरी सहायता के बिना हर प्रोजेक्ट के लिए अपना स्वयं का इष्टतम वातावरण बना सकते हैं ( pyenvपायथन इंस्टॉलेशन का प्रबंधन करते हैं और फिर आप pipउस विशिष्ट पायथन इंस्टॉलेशन के लिए मॉड्यूल स्थानीय स्थापित करने के लिए उपयोग कर सकते हैं )।

सिस्टम पैकेज केवल सिस्टम की जरूरत के लिए उपयोग किए जाते हैं।


0

आमतौर पर सिस्टम पैकेज मैनेजर का उपयोग करना बेहतर होता है। लेकिन अगर आप आधुनिक भाषाओं का उपयोग कर रहे हैं, जो तेजी से विकसित होती है, तो स्थिर वितरण में नए पैकेज और संस्करण शामिल नहीं होंगे। और नहीं-तो-लोकप्रिय पैकेज रिपॉजिटरी में कभी भी शामिल नहीं किए जा सकते हैं।

तो मैं कहूंगा, उस मामले में सबसे अच्छा तरीका भाषा के अंतर्निहित कार्यों का उपयोग करना है। यदि आर-निर्माता संकुल के प्रबंधन के लिए आधिकारिक टूल बनाएंगे, तो यह बहुत अच्छा होगा, लेकिन गैर-आधिकारिक टूल का उपयोग करना कुछ जोखिम भरा है।

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