मेरा संगठन लिनक्स के लिए सॉफ्टवेयर लिखता है।
सॉफ्टवेयर को खुदरा दुकानों पर काम करने के लिए डिज़ाइन किया गया है जो भौगोलिक रूप से वितरित हैं।
प्रारंभ में, सॉफ्टवेयर ग्राहकों को इन डिबेट फ़ाइलों को स्थापित करने से पहले निर्भरता के रूप में स्थापित करने की आवश्यकता वाले पैकेजों की एक सूची के साथ विभिन्न वितरण और आर्किटेक्चर के लिए डिब पैकेज के सेट के रूप में ग्राहकों को प्रदान किया गया था।
मैं आपको बताना चाहता हूं कि एफ़टीपी के माध्यम से फ़ाइलों को वितरित करने से लेकर रिपॉजिटरी बनाने और कॉन्फ़िगरेशन प्रबंधन प्रणाली शुरू करने और एक निरंतर एकीकरण सर्वर को लागू करने के लिए विकासवादी मार्ग क्या था।
जीवन की उत्पत्ति
तो, सॉफ्टवेयर एक वाणिज्यिक विकास है, जो Qt में लिखा गया है, सब कुछ दो आर्किटेक्चर (i386 और amd64) और कई वितरणों के लिए इकट्ठा किया गया है। फिलहाल, हमने यह फैसला किया है: डेबियन की दो या तीन हालिया रिलीज़ और उबंटू से अंतिम दो एलटीएस। साथ ही, कई संस्करण (वर्तमान में तीन) हैं जो ग्राहकों द्वारा उपयोग किए जाते हैं।
तीन संस्करण इस तरह से निकले: सॉफ्टवेयर खरीदते समय, क्लाइंट को सहायता की पेशकश की जाती है और, उचित रूप से उचित धन के लिए, सॉफ्टवेयर के नए संस्करणों का प्रावधान। समर्थन की उपलब्धता की परवाह किए बिना, मामूली संस्करणों को बदलना नि: शुल्क प्रदान किया जाता है। मेजर - या समर्थन की उपस्थिति में, या केवल छूट पर फिर से बेचा गया।
जबकि कुछ संस्करण थे, और ग्राहकों के लिए इंस्टॉलेशन की संख्या छोटी थी, ftp काफी महंगा हो सकता है। यह इस तरह दिखता था: डिबेट पैकेज में सभी स्रोतों को इकट्ठा करने के बाद, प्रत्येक क्लाइंट के लिए फ़ाइलों का सेट (संस्करण पर निर्भर करता है) संग्रहीत किया गया था और प्रत्येक क्लाइंट के लिए अपने स्वयं के खंड में ftp पर रखा गया था। समय के साथ, ftp ने अलग-अलग क्लाइंट्स से काफी समान टार-एस जमा किया, जिसे समय-समय पर निकालना पड़ा।
जैसे-जैसे समय बीतता गया, क्लाइंट्स जुड़ते गए, क्लाइंट नेटवर्क आकार में बढ़ता गया, और पॉइंट्स पर सॉफ्टवेयर वर्जन को अपडेट करना एक और काम हो गया, खासकर यह देखते हुए कि 99% पॉइंट्स पर इंटरनेट (और अभी भी) जीपीआरएस था।
संकुल एकत्रित करने की बात कही। डिब पैकेज एकत्र करने वाली स्काइप को मूल रूप से अंग्रेजी में कुछ मैनुअल पर "300 साल पहले" लिखा गया था और आईएमएचओ पूरी तरह से सही नहीं है। निम्नलिखित लेखों ने लिपियों को कंघी करने और धोने में मदद की (जिसके लिए मैं उनके लेखकों को धन्यवाद कहना चाहता हूं):
विकास की शुरुआत
संकलित पैकेजों को वितरित करने का प्रश्न किसी तरह कुछ और सही तरीके से उठाया गया था। "और फिर ओस्टाप को भुगतना पड़ा" (सी), उन्होंने सब कुछ ठीक करने का फैसला किया, ताकि नियमित संचालन पर कम से कम समय व्यतीत हो।
रिप्रेप्रो को उस सॉफ़्टवेयर के रूप में चुना गया जो रिपॉजिटरी का समर्थन करता था। उस समय, उनके द्वारा प्रदान किए गए अवसर काफी पर्याप्त थे।
इसके अलावा, अद्यतन करने के अनुभव के आधार पर, बड़ी संख्या में कंप्यूटरों को कॉन्फ़िगर करना, मैं एक कॉन्फ़िगरेशन प्रबंधन उपकरण रखना चाहता था। मदद के लिए Google और Habr को बुलाया गया। मैं ansible, शेफ, कठपुतली और अन्य प्रणालियों से परिचित हो गया, जिनके नाम मुझे अब याद नहीं हैं। विन्यास की समझ के अनुसार, प्रलेखन, प्रवेश सीमा और अन्य मापदंडों के संयोजन,
कठपुतली को अपनाया गया था। फोरमैन को कठपुतली के पास ले जाया गया। और आनंद आ गया।
ज्यादा समय नहीं बीता है और मैं भंडार प्रबंधन के रूप में कुछ और अलग करना चाहता हूं। एक ही रिपॉजिटरी में एक ही पैकेज के विभिन्न संस्करणों को संग्रहीत करने की क्षमता को छोड़कर, रिप्रप्रो सभी को अनुकूल बनाता है: ताकि किसी प्रकार के प्रतिगमन के मामले में एक विशिष्ट संस्करण में जल्दी से वापस रोल करना संभव हो, या जल्दी से सही संस्करण डाल सके और एक विशिष्ट डेटा सेट पर एक निश्चित संस्करण की प्रणाली के व्यवहार का परीक्षण कर सके। कुछ हार्डवेयर कॉन्फ़िगरेशन।
एक उदाहरण के रूप में: एक क्लाइंट ने दस्तावेजों के साथ काम करते समय एक एप्लिकेशन क्रैश का पता लगाया। डेवलपर्स के कंप्यूटरों पर सेट किए गए उनके डेटा ने बिना किसी सवाल के उड़ान भरी, सब कुछ खुल गया और गिर नहीं गया, यह आश्चर्यजनक रूप से काम किया। हमने एक स्टैंड को एक साथ रखा, एक ही लिनक्स, सॉफ्टवेयर के एक ही संस्करण को रखा, फिर से सब कुछ काम करता है और क्रैश नहीं करता है। उन्होंने संभव के रूप में पागल के रूप में कार्य करना शुरू कर दिया - उन्होंने ग्राहक की मशीन के करीब एक और मशीन को इकट्ठा किया, डिस्क, मेमोरी, प्रोसेसर, मॉनिटर रिज़ॉल्यूशन और लो और बीहोल्ड की मात्रा! गिरावट को दोहराया। हमने समझना शुरू किया: हमें पता चला कि सार मॉनिटर के रिज़ॉल्यूशन में है, या बल्कि, रिज़ॉल्यूशन में ऐसा नहीं है, लेकिन पहलू अनुपात में। डेवलपर्स और पहली परीक्षण मशीन पर, मॉनिटर का पहलू अनुपात 16: 9 था, और दूसरा परीक्षण 4: 3। नतीजतन, हमने गणना की कि qss में एक लाइन गिरती है। जो निश्चित रूप से, एक बड़ा आश्चर्य था। तो यह इस उदाहरण के लिए है। इन परीक्षणों के समय, ऐसी कोई रिपॉजिटरी नहीं थी, और प्रत्येक असेंबली मशीन के लिए हमें पुराने फैशन में scp के माध्यम से deb पैकेज की प्रतिलिपि बनानी थी, पेन के साथ निर्भरता जोड़ना था, फिर पैकेज को स्वयं स्थापित करना चाहिए और उसके बाद ही उन्हें जांचें। सभी निर्भरताओं के साथ योग्यता के माध्यम से कुछ मिनटों में स्थापित करने के बजाय।
मुझे इसे google करना था।
लेख के परिणामस्वरूप गुगली हुई। मैंने इसमें वर्णित विकल्पों से निपटना शुरू किया। मैं देखने में कामयाब रहा:
पूरी शिद्दत से काम करें
उपयुक्त के लिए प्रलेखन काफी विस्तृत और उदाहरण के साथ है। इसके अलावा बैश-समापन है।
Aptly की संभावनाएं बहुत विस्तृत हैं, नीचे मैं केवल उन आदेशों का उपयोग करूंगा जो मैं उपयोग करता हूं। यदि आप रुचि रखते हैं, तो मैं
उत्पाद साइट को अधिक गहराई से सुझाता हूं।
भंडार बनाना:
आप सभी मापदंडों के साथ तुरंत बना सकते हैं:
aptly repo create -comment="Wheezy prehistoric" -distribution="wheezy-prehistoric" -architectures="i386,amd64,all" -component="non-free" wheezy-prehistoric
आप बाद में पैरामीटर जोड़ सकते हैं, और जैसा बना सकते हैं:
aptly repo create wheezy-prehistoric
पैरामीटर्स बदलें
एक समय में पैरामीटर बदलें:
aptly repo edit -comment="Wheezy prehistoric" wheezy-prehistoric
या सभी एक बार में:
aptly repo edit -comment="Wheezy prehistoric" -distribution="wheezy-prehistoric" -architectures="i386,amd64,all" -component="non-free" wheezy-prehistoric
मौजूदा रिपॉजिटरी देखें
aptly list
रिपॉजिटरी जानकारी को पुनः प्राप्त करना
सामान्य जानकारी:
aptly show wheezy-prehistoric
पैकेज सूची की जानकारी:
aptly repo show -with-packages wheezy-prehistoric
भंडार में पैकेज जोड़ना
एकल फ़ाइल:
aptly repo add wheezy-prehistoric build//Debian-wheezy/chameleon-core_1.3.0-wheezy46_amd64.deb
पूरी सूची:
aptly repo add wheezy-prehistoric build//Debian-wheezy
जोड़ते समय, मैं फ़ाइल / निर्देशिका में पथ के स्वत: पूर्णता की कमी से कुछ उलझन में था
रिपोजिटरी प्रकाशन
aptly publish repo wheezy-prehistoric
प्रकाशन हटाएं
aptly publish drop wheezy-prehistoric
रिपॉजिटरी ग्राफ प्राप्त करें
aptly graph
स्नैपशॉट के लिए समर्थन भी है, दर्पण बनाना, रिपॉजिटरी के बीच मूविंग पैकेज, निर्भरता समर्थन, प्रकाशित रिपॉजिटरी के साथ काम करने के लिए एक अंतर्निहित HTTP सर्वर।
एक ख़ासियत है जिसके बारे में मैंने लेखक को लिखा है - पूल सभी रिपॉजिटरी के लिए एक सामान्य है, जो सही है, केवल अगर मेरे पास अलग-अलग रिपॉजिटरी में एक ही नाम वाली फाइलें हैं, लेकिन इन रिपॉजिटरी को प्रकाशित करने के लिए विभिन्न सामग्रियों और आकारों के साथ कोई संदेश नहीं है, तार्किक रूप से कम से कम लिखने के लिए कुछ था। और पूल में पहले प्रकाशित भंडार की फाइल बनी हुई है।
वैसे, लेखक ने बहुत जल्दी प्रतिक्रिया दी और
बग ट्रैकर पर एक
कार्य बनाया।
विकास जारी है
फिलहाल, इन विट्रो मशीनों पर हैंडल द्वारा बैग एकत्र किए जा रहे हैं। क्या अच्छा नहीं है?
जेनकिंस का कार्यान्वयन पहले ही शुरू हो चुका है। यह वह था जिसे सीआई के लिए उपलब्ध उपकरणों की पूरी सूची से चुना गया था। टीमसिटी को मूल रूप से स्थापित किया गया था, लेकिन लाइसेंस की लागत को इस तथ्य के कारण नहीं समझा गया था कि ऐसी अन्य परियोजनाएं हैं जो पूरी तरह से स्वतंत्र हैं और बहुत खराब कार्यक्षमता रखती हैं। कम से कम अभी तो ऐसा ही लग रहा है। यदि जेनकिंस के संचालन के दौरान किसी कारण से इसकी क्षमता पर्याप्त नहीं होगी (हालांकि इतने सारे प्लगइन्स के साथ शायद ही इस पर विश्वास किया जाता है), हम कुछ बेहतर के लिए बदलेंगे।
पुनश्च
लेख के अंत में मैं संक्षेप में बताना चाहूंगा।
लेख का विचार एक अद्भुत उपकरण का वर्णन करना था - उपयुक्त, क्योंकि खुले स्थानों पर हैबर को उसके बारे में कुछ नहीं मिला। खैर, "यहाँ उपकरण - आप इसका उपयोग कर सकते हैं" की शैली में कहने के लिए, मुझे यह दिलचस्प नहीं लगा। मैंने तय किया कि यह पढ़ने के लिए और अधिक दिलचस्प होगा कि मेरे संगठन ने किस तरीके से विकसित किया और मैंने एक ही समय में किस उपकरण का उपयोग किया और समुदाय का ध्यान एक व्यक्तिगत उदाहरण का उपयोग करके एक उपयोगी उपकरण की ओर आकर्षित किया।
आपका ध्यान देने के लिए धन्यवाद।