क्या संकुल का विशिष्ट संस्करण सेट करना संभव है, कौन सा मुख्य पैकेज निर्भर करता है?


10

हमारे पास FreeBSD 10.3 पर विकास का माहौल है। मैंने सुना है कि FreeBSD उस तरह से पैकेज निर्भरता का प्रबंधन करता है, जो हमेशा सभी पैकेजों के नवीनतम संस्करण की तलाश करता है, जो मुख्य पैकेज पर निर्भर करता है। और यह सच लग रहा है। तो, मेरे सवाल हैं:

  1. क्या ये सच है? क्या कोई आधिकारिक दस्तावेज है जो इसे साबित करता है?
  2. सबसे अच्छा तरीका है कि इस समस्या को कैसे दूर किया जाए?

7
मुझे संदेह है, आप पहले जिस विशिष्ट संस्करण की आवश्यकता है, उसके पैकेज को स्थापित कर सकते हैं, फिर pkg lockइसे, और फिर वह सब कुछ स्थापित करें जो आप चाहते हैं।
तीर

1
यह इस बात पर भी निर्भर करता है कि आपको कौन सा पोर्ट / पैकेज चाहिए और किस संस्करण में। उदाहरण के लिए आपके पास अलग-अलग अजगर / पोस्टग्रेज़ल / php संस्करण हो सकते हैं। कभी-कभी एक सॉफ्टवेयर के लिए कई पैकेज उपलब्ध होते हैं, कभी-कभी आप बंदरगाहों से अपने विशेष पैकेज का निर्माण कर सकते हैं।
राफेल एहरेंस

3
यदि आप आँख बंद करके फ्रीबर्ड अपडेट (या pkg upugrade) चलाते हैं, तो हाँ, यह सबसे नया मिलेगा जो इसे स्थापित करने का प्रयास कर सकता है। जैसा कि तीर ने कहा, अब (9.2 या तो के बाद से), आप लॉक कर सकते हैं <pkg> जो कि आपने जो भी स्थापित किया है और उसके निर्भरता को संशोधन से संरक्षित करना चाहिए। YMMV।
चौगुनी

जवाबों:


1

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 घटकों में ले जाया जा रहा है। टिंडरबॉक्स के विपरीत, इसकी कोई निर्भरता नहीं है और इसे डेटाबेस की आवश्यकता नहीं है। यह सभी परिचालनों में अत्यधिक समानांतर होने के लिए बहुत अनुकूलित किया गया है। यह बहुत सख्त परिस्थितियों में सैंडबॉक्स वाले वातावरण में बंदरगाहों का निर्माण करने के लिए जेलों का उपयोग करता है। जेल का निर्माण एक बार एक साधारण आदेश के साथ किया जाता है। बिल्ड के दौरान, प्रत्येक सीपीयू को बंदरगाहों को साफ जगह बनाने के लिए इस्तेमाल करने के लिए जेल को स्वचालित रूप से क्लोन किया जाता है। "

पॉडरिएरे के साथ अपनी खुद की रिपॉजिटरी स्थापित करने से आपको बंदरगाहों के लचीलेपन और पैकेजों के प्रबंधन में आसानी होती है।

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