FreeBSD पैकेज कैसे बनाता है
फ्रीबीएसडी परियोजना का उपयोग केवल रिलीज के लिए और कभी-कभी स्थिर शाखाओं के लिए पैकेज बनाने के लिए किया जाता था। पुराने पैकेज बिल्डरों ने पोर्टबिल्ड नामक एक वितरित प्रणाली का उपयोग किया। यह पैकेज बनाने के लिए छोटे 2GB-4GB मशीनों के एक बड़े क्लस्टर का उपयोग करेगा। यह त्रुटि-प्रवण और धीमा था, ज्यादातर पुरानी मशीनों के कारण। एक पूर्ण निर्माण में अभी भी एक सप्ताह लग सकता है। आज संकुल का निर्माण पुदुरीयर के उपयोग से एकल बड़ी मशीनों के उपयोग से किया जाता है। ( ब्रायन ड्रियरी द्वारा वेबपेज से )।
इसे भी देखें: FreeBSD पर पैकेज और पोर्ट के मिश्रण को कैसे अपडेट करें
FreeBSD में एक विकसित ABI (और API) है जैसा कि Solaris और Windows करता है जबकि Linux में एक स्थिर (स्थिर?) ABI (और API) है, इसलिए लिनक्स के साथ पुराने बायनेरिज़ अभी भी एक नए OS संस्करण पर चलेंगे जबकि गैर-लिनक्स OS के साथ यह isn ' t हमेशा मामला (कभी-कभी ऐसा होता है)।
उपयोग करना pkg lock
अभी भी सिरदर्द पैदा कर सकता है , जबकि यह लॉक (एक चेतावनी की पेशकश) करेगा जब आप pkg upgrade
इसका उपयोग करके अपग्रेड करने का प्रयास करते हैं तब भी यह माना जाता है कि उच्च क्रम वाले संस्करण बेहतर (वांछनीय) हैं और यह वह चीज है जिसे आप करना चाहते हैं - इसलिए यह अनुमति मांगता है, और आप अनुमति दे सकते हैं, लेकिन यह गारंटी नहीं देता कि कुछ और टूट नहीं जाएगा। URL से ऊपर देखें, या यह चर्चा: " क्या आप OSBS संस्करण के लिए pkg के माध्यम से वितरित बाइनरी पैकेज के संस्करणों को लॉक करने के लिए FreeBSD को प्राथमिकता देंगे? "।
यदि एक पैकेज बंद कर दिया जाता है, तो कभी-कभी आपको इसे अनलॉक करने और अपग्रेड करने की अनुमति देनी होगी, जबकि यह एक पैकेज के लिए काम करेगा (और इसकी सभी निर्भरताएं) इस बात का कोई आश्वासन नहीं है कि नई लाइब्रेरी के साथ कुछ और असंगत नहीं होगा ( और इस प्रकार अपग्रेड की भी जरूरत है, अगर कोई वर्तमान में उपलब्ध है)।
ब्रायन ड्रियरी का ब्लॉग: " फ्रीबीएसडी जर्नल: पौड्रीयर " ऑपिन :
"अपने सर्वर पर पोर्टमास्टर, पोर्टअपग्रेड और पोर्ट का उपयोग करना बंद करें और पैकेज पर जाएँ।
Poudriere के साथ अपने खुद के पैकेज का निर्माण करने में कुछ ही मिनट लगते हैं और भविष्य में आपका काफी समय बचेगा।
...
यदि आप एक से अधिक FreeBSD सिस्टम बना रहे हैं और पहले से ही पैकेज का उपयोग नहीं कर रहे हैं, तो आपको करना चाहिए। मैं केवल 20 सर्वरों को बनाए रखता हूं, लेकिन प्रत्येक सिस्टम पर बंदरगाहों का निर्माण करने में मेरा बहुत समय लगता है और उत्पादन मशीनों पर संसाधनों को बर्बाद किया जाता है। कई सर्वरों पर पोर्ट बनाते समय, उनके विकल्पों या संस्करणों को सिंक से बाहर निकालना बहुत आसान होता है। एक सिस्टम पर एक बार पैकेज बनाने से, मैंने अपने सिस्टम पर लोड को कम कर दिया, मुझे जो काम करना था उसकी मात्रा को कम कर दिया और सभी प्रणालियों को सुसंगत बना दिया। प्रत्येक प्रणाली पर समान विफलता से निपटने के बजाय, मुझे केवल निर्माण प्रणाली पर इसे संभालने की आवश्यकता है।
लेकिन, अड़चन ...
आपको आधिकारिक पैकेज से विचलन करने की आवश्यकता क्यों होगी? पोर्ट्स फ्रेमवर्क बिल्ड-टाइम कॉन्फ़िगरेशन को बदलने के लिए पोर्ट्स के लिए विकल्प समर्थन प्रदान करता है। सभी एप्लिकेशन रन-टाइम कॉन्फ़िगरेशन का समर्थन नहीं करते हैं। कुछ एप्लिकेशन को अलग तरह से संकलित किया जाना चाहिए, जिसके आधार पर विशेषताएं सक्षम होती हैं। दूसरों के पास डिफ़ॉल्ट पोर्ट में सुविधाओं और निर्भरता की मात्रा को कम करने के लिए विकल्प हैं। सर्वर प्रशासकों के लिए, यह जल्दी से यह पता लगाने के लिए नेतृत्व कर सकता है कि कुछ डिफ़ॉल्ट पैकेज उनकी आवश्यकताओं को पूरा नहीं करते हैं।
इसलिए ...
कस्टम पैकेज प्राप्त करने के कुछ तरीके हैं। Pkg कई रिपॉजिटरी का उपयोग करके समर्थन करता है। यह एक प्राथमिक के रूप में आधिकारिक फ्रीबीएसडी रिपॉजिटरी का उपयोग करने के लिए स्थापित किया जा सकता है और एक माध्यमिक के रूप में एक कस्टम। Pkg यह ट्रैक कर सकने वाले रिपॉजिटरी की संख्या तक सीमित नहीं है और उन्हें प्राथमिकता के लिए फिर से व्यवस्थित किया जा सकता है। कई रिपॉजिटरी के साथ समस्या यह है कि वर्तमान में इसे बनाए रखना मुश्किल हो सकता है। जब Pkg यह पता लगाता है कि एक स्थापित पैकेज के पास रिपॉजिटरी से अलग विकल्प या निर्भरता है जो इसे ट्रैक कर रहा है, तो पैकेज को संभावित रूप से किसी भी दूरस्थ संस्करण से पुनः इंस्टॉल किया जाएगा। आप या तो pkg लॉक PKGNAME और pkg अनलॉक PKGNAME के साथ अपग्रेड के दौरान पैकेज को लॉक कर सकते हैं या इसे pkg एनोटेट -A PKGNAME रिपॉजिटरी REPONAME के साथ एक विशिष्ट रिपॉजिटरी से बाँध सकते हैं। FreeBSD संकुल के साथ आपके कस्टम रिपॉजिटरी के लिए पोर्ट्स ट्री को रखने की भी सूक्ष्म समस्या है। चूंकि संकुल सप्ताह में एक बार लिया जाने वाले पोर्ट्स ट्री स्नैपशॉट से बनाया जाता है, यदि आपका कस्टम रिपॉजिटरी मेल नहीं खाता है तो यह टकराव का कारण बन सकता है। यह बहुत आसान है कि आप जो चाहते हैं उन विकल्पों के साथ सिर्फ एक संपूर्ण पैकेज सेट का निर्माण करें।
समाधान:
पॉडरिएरे (मोटे तौर पर पु-ड्री-ईयर, फ्रेंच फॉर "पाउडर केग") टिंडरबॉक्स के लिए एक तेज और सरल प्रतिस्थापन के रूप में लिखा गया था। यह Pkg के लेखक बैपटिस्ट डारसिन द्वारा लिखा गया था और अब इसे मेरे साथ-साथ बैपटिस्ट और कुछ अन्य योगदानकर्ताओं द्वारा रखा गया है। यह जल्दी से de-facto FreeBSD पोर्ट टेस्टिंग और पैकेज बिल्डिंग टूल बन गया है। यह आधिकारिक बिल्ड क्लस्टर टूल है और इसका उपयोग फ्रीबीएसडी पोर्ट्स परियोजना द्वारा "एक्स-रन" कहे जाने वाले व्यापक पैच परीक्षण के लिए भी किया जाता है । यह POSIX शेल में लिखा गया है और धीरे-धीरे C घटकों में ले जाया जा रहा है। टिंडरबॉक्स के विपरीत, इसकी कोई निर्भरता नहीं है और इसे डेटाबेस की आवश्यकता नहीं है। यह सभी परिचालनों में अत्यधिक समानांतर होने के लिए बहुत अनुकूलित किया गया है। यह बहुत सख्त परिस्थितियों में सैंडबॉक्स वाले वातावरण में बंदरगाहों का निर्माण करने के लिए जेलों का उपयोग करता है। जेल का निर्माण एक बार एक साधारण आदेश के साथ किया जाता है। बिल्ड के दौरान, प्रत्येक सीपीयू को बंदरगाहों को साफ जगह बनाने के लिए इस्तेमाल करने के लिए जेल को स्वचालित रूप से क्लोन किया जाता है। "
पॉडरिएरे के साथ अपनी खुद की रिपॉजिटरी स्थापित करने से आपको बंदरगाहों के लचीलेपन और पैकेजों के प्रबंधन में आसानी होती है।
pkg lock
इसे, और फिर वह सब कुछ स्थापित करें जो आप चाहते हैं।