बूस्ट एक जटिल उदाहरण है, आइए पहले एक सरल को देखें।
सटीक में, खुलता स्रोत पैकेज 5 बाइनरी पैकेज प्रदान करता है:
libssl1.0.0OpenSSL डायनेमिक लाइब्रेरी, संस्करण 1.0.0 शामिल है। इस पुस्तकालय से जुड़े कार्यक्रमों को चलाने की जरूरत है। पैकेज नाम में एक संस्करण संख्या होती है क्योंकि आपके पास एक ही समय में लाइब्रेरी के अन्य संस्करण हो सकते हैं, यदि आपके पास अन्य प्रोग्राम हैं जो किसी अन्य संस्करण से जुड़ा हुआ है जो कि बाइनरी-संगत नहीं है।
opensslइसमें कमांड लाइन टूल शामिल है जो ओपनएसएसएल लाइब्रेरी का उपयोग करता है। यहां तक कि अगर आपके पास पुस्तकालय के कई संस्करण हैं, तो आपको इन उपकरणों के कई संस्करणों की आवश्यकता नहीं है: बस एक /usr/bin/opensslऔर संबंधित उपकरण, डेटा और प्रलेखन है।
libssl-devयदि आप एक प्रोग्राम को संकलित करना चाहते हैं, जो OpenSSL के विरुद्ध लिंक करना चाहता है, तो इसमें फ़ाइलें हैं। सी हेडर फाइलें ( *.h), लिंक करने के लिए पुस्तकालय ( *.a, *.so), और कुछ मिश्रित फाइलें हैं।
libssl-docOpenSSL लाइब्रेरी के लिए प्रलेखन शामिल है। यदि आपको लाइब्रेरी का उपयोग करने वाले प्रोग्राम लिखने हैं तो आपको केवल इस पैकेज की आवश्यकता होगी।
libssl1.0.0-dbgजिसमें डिबगिंग प्रतीक हैं। यह केवल उन लोगों के लिए उपयोगी है जो OpenSSL लाइब्रेरी या प्रोग्राम का उपयोग करते हैं। andrewsomething का उत्तर इन -dbgपैकेजों पर अधिक जानकारी रखता है।
इसके अलावा, सटीक में लाइब्रेरी का एक पुराना संस्करण शामिल है libssl0.9.8, क्योंकि ऐसे प्रोग्राम हैं जो अभी भी पुराने संस्करण के खिलाफ जुड़े हुए हैं।
अन्य पैकेज जिन्हें आप देख सकते हैं, सी। ओपनएसएसएल के अलावा अन्य भाषाओं के लिए बाइंडिंग हैं (किसी भी अन्य भाषाओं के लिए ओपनएसएसएल के लिए बाइंडिंग नहीं हैं, लेकिन वे एक ही स्रोत से नहीं आते हैं)। एक उदाहरण sqlite3 है , जो बंधन बाइंडिंग के साथ जहाज करता है ।
इस तरह के पैकेजों को विभाजित करने का मुख्य कारण यह है कि विभिन्न पैकेजों में अलग-अलग लक्ष्य दर्शक होते हैं। एक प्रणाली जहां कोई भी कभी भी कुछ भी संकलित नहीं करता है केवल कोर libपैकेज की आवश्यकता होती है , और शायद कमांड लाइन टूल; यदि आवश्यक हो तो वे स्वचालित रूप से निर्भरता से स्थापित हो जाएंगे। यदि कोई लाइब्रेरी का उपयोग करने वाले प्रोग्राम को संकलित करना चाहता है, तो उन्हें -devपैकेज की आवश्यकता होती है । यदि कोई ऐसा प्रोग्राम लिखना चाहता है जो लाइब्रेरी का उपयोग करता है, तो उन्हें -docपैकेज की आवश्यकता होती है ।
तो बूस्ट का क्या? यह उसी संरचना का अनुसरण करता है, लेकिन क्योंकि बूस्ट एक विशाल पुस्तकालय है, यह कई छोटे पैकेजों में टूट गया है: libboost-*1.46.1और libboost-*1.46-dev। सटीक रूप से, बूस्ट का केवल एक संस्करण है, 1.46 , लेकिन वनैरिक में 1.42 और 1.46 दोनों थे । एक रूपक बढ़ावा-चूक भी है जो एक निर्भरता के रूप में संस्करण पैकेज में खींचती है।
कामचलाऊ पुस्तकालय को देखते हुए , गतिशील पुस्तकालय पैकेज libhangul1और विकास पैकेज के अलावा libhangul-dev, एक पैकेज है libhangul-data। इस पैकेज में अतिरिक्त डेटा है जो लाइब्रेरी द्वारा आवश्यक है। यहां तक कि अगर आपके पास पुस्तकालय के कई संस्करण हैं, तो वे -dataपैकेज साझा कर सकते हैं । इसके अलावा, पैकेज वास्तुकला-स्वतंत्र है। सॉफ़्टवेयर जिसमें बड़ी मात्रा में आर्किटेक्चर-इंडिपेंडेंट डेटा होता है, उसे डिस्ट्रीब्यूशन साइट्स पर जगह बचाने के लिए आर्किटेक्चर-डिपेंडेंट और आर्किटेक्चर-इंडिपेंडेंट पैकेज में विभाजित किया जाता है। इसी तरह के अर्थ के साथ एक और प्रत्यय है -common।
उबंटू और डेबियन पैकेजिंग नियम बहुत समान हैं, इसलिए डेबियन पैकेज बनाने के बारे में सामग्री भी उबंटू पर लागू होती है। वास्तव में, आपके पास डेबियन और उबंटू के लिए एक ही स्रोत पैकेज हो सकता है; केवल एक चीज जो डेबियन और उबंटू पैकेज को अलग बनाती है, उन्हें विभिन्न लाइब्रेरी संस्करणों के खिलाफ संकलन कर रही है, और यह उबंटू के विभिन्न रिलीज के बीच के अंतर से अधिक नहीं है। विशेष रूप से डेबियन नीति नियमावली और डेवलपर के संदर्भ में डेबियन डेवलपर के दस्तावेज हों ; एक परिचय के लिए न्यू मेंटेनर गाइड देखें । डेबियन परियोजना के साथ काम करने के बारे में भागों को अनदेखा करें और बस एक पैकेज बनाने के बारे में भागों को पढ़ें।dh_make एक अच्छे पैकेज के साथ एक डिब पैकेज शुरू करना है (आप "लाइब्रेरी" का चयन करना चाहेंगे)।