2012-11-22 24 views
11

पैकेजिंग सिस्टम के बिना हमारे पास (ए) स्रोत कोड है, जिसे अनुवाद (बी) बाइनरी कोड में अनुवाद/संकलित किया जा सकता है।कैसे * .dsc फ़ाइलें * .deb से संबंधित हैं और स्रोत कोड फ़ाइलें

Debian/Ubuntu पैकेज के मामले में हम (1) स्रोत कोड, (2) स्रोत पैकेज है - डीएससी फ़ाइल और (3) द्विआधारी पैकेज - deb फ़ाइल। यह कैसे है (2) स्रोत पैकेज (1) और (3) से संबंधित है? हमें इसकी जरूरत क्यों है? और, सबसे महत्वपूर्ण सवाल: वर्कफ़्लो जनरेटिंग (2) और (3) (1) से क्या है?

उत्तर

10

कार्यप्रवाह आमतौर पर इस तरह लगभग है:

  1. डेबियन के साथ संबद्ध नहीं किसी ने उदाहरण के लिए, वेब पर एक पैकेज के रूप में कुछ स्रोत कोड और यह पोस्ट लिखते हैं, डेबियन पर splint-3.1.2.tar.gz
  2. किसी को डाउनलोड करता है स्रोत कोड, और

    1. डेबियन पर स्रोत बनाने और डेबियन दिशानिर्देशों के अनुरूप पैच फ़ाइलों का एक सेट। उदाहरण पैकेज के लिए इसे देखने के लिए

      curl -s 'http://archive.ubuntu.com/ubuntu/pool/universe/s/splint/splint_3.1.2.dfsg1-2.diff.gz' | gunzip -dc | less 
      

      चलाएं।

    2. textual metadata file पैकेज का वर्णन-यह .dsc फ़ाइल और debian/control फ़ाइल है। "डीएससी" डेबियन स्रोत नियंत्रण के लिए एक संक्षिप्त शब्द है।
  3. बाइनरी .deb संकुल मूल अपस्ट्रीम स्रोत कोड से प्रत्येक आर्किटेक्चर के लिए बनाया गया है जिसमें डेबियन-विशिष्ट पैच लागू होते हैं। Here is one such fileDebian Binary Package Building HOWTO इन फ़ाइलों के प्रारूप और उनका निरीक्षण कैसे करें, बताता है।

.dsc फ़ाइल का उपयोग तर्क तर्क के लिए नहीं किया जाता है, यह मेटाडेटा के लिए अधिक है। हालांकि रास्ते में कई औजारों की आवश्यकता होती है। उदाहरण के लिए, Build-Depends: फ़ील्ड का उपयोग आवश्यक बिल्ड निर्भरताओं को स्थापित करने के लिए किया जाता है।

+0

महान जवाब! एक और प्रश्न। उदाहरण में आपने यहां दिया है, हमारे पास मूल कोड (अपस्ट्रीम) है और रखरखाव परिवर्तन के बाद diff है। जब मूल कोड का नया संस्करण "debianized" होने वाला है, तो रखरखाव उनके परिवर्तनों पर कैसे ट्रैक रखता है? वे पिछले डीब रिलीज से स्रोत कोड के नए संस्करण में diff विलय? क्या वे कुछ सीवीएस इस्तेमाल करते हैं? –

+1

एक नई रिलीज के बाद, वे आम तौर पर पुरानी '.diff.gz. में पैच को फिर से लागू करेंगे। अगर कुछ तोड़ता है तो वे खुदाई करेंगे। कुछ रखरखाव 'गिट' या' रजाई 'या अन्य टूल्स का उपयोग कर सकते हैं जिन्हें मैं नहीं जानता, लेकिन जहां तक ​​मुझे पता है, यह वास्तव में पैकेज रखरखाव पर निर्भर है। – andrewdotn

+0

आपके उत्तर में से कुछ लिंक टूटे हैं। –

1

यह वास्तव में उससे कहीं अधिक जटिल है। डेबियन पैकेज के पीछे विचार यह है कि उनमें एक पृष्ठ को बल्ब करने के लिए आवश्यक सभी जानकारी होती है। आमतौर पर, स्रोत को debian निर्देशिका शामिल करने के लिए संशोधित किया गया है जिसमें control फ़ाइल शामिल है जो उस पैकेज की निर्भरताओं और अन्य संकुलों का वर्णन करती है जो यह इंटरैक्ट करता है (उदाहरण के लिए, ब्रेक, प्रतिस्थापन, आभासी पैकेज प्रदान करता है)। एक rules फ़ाइल बताती है कि पैकेज कैसे बनाएं और इंस्टॉल करें। पैकेजिंग के विवरण भी हैं क्योंकि एकल स्रोत पैकेज कई बाइनरी पैकेज (उदा।, foo-utils, libfoo0, libfoo-dev) बन सकता है। debuild वास्तव में इस जानकारी को पढ़ता है, संकलन करता है, और बाइनरी संकुल का उत्पादन करता है। एक subtlety: अगर foolibbar-dev का उपयोग करता है, तो मैं वास्तव में libbar बाइनरी पैकेज का उपयोग करने वाले संस्करण का वास्तव में नहीं जानता/देखभाल कर सकता हूं। pbuilder एक स्वच्छ वातावरण में debuild चलाता है इसलिए उन चीजों के खिलाफ संकलन करने का कोई मौका नहीं है जिन्हें आपने स्पष्ट रूप से निर्दिष्ट नहीं किया है।

विवरण के लिए Debian New Maintainers' Guide से परामर्श लें।

+0

उत्तर के लिए धन्यवाद। अब तक मैंने डिबल्ड का उपयोग किया है, लेकिन आप कह रहे हैं कि मुझे इसके बजाय पिबिल्डर का उपयोग करना चाहिए? स्रोत पैकेज क्या हैं? उनका उपयोग नहीं किया जाता है?लिंक पोस्ट करने के लिए यह बहुत अच्छा है, लेकिन इसका आकार मुझे पढ़ने से डराता है :) –

+1

pbuilder यह सत्यापित करने के लिए एक सुविधा उपकरण है कि निर्भरता पूरी तरह से निर्दिष्ट हैं। यह मूल रूप से घोषित निर्भरताओं को छोड़कर कुछ भी नहीं के साथ एक वर्चुअल वातावरण बनाता है; अगर यह निर्माण को पूरा नहीं कर सकता है, तो इसका मतलब है कि आपके पास अव्यवस्थित निर्भरता है। लेकिन यदि आप यहां और अब '.deb' फ़ाइल बनाने में रुचि रखते हैं, तो यह सख्तता आवश्यक नहीं है। – tripleee

+1

एक स्रोत पैकेज debianized स्रोत है, यानी मूल रूप से .orig.tar.gz प्लस आपके डेबडिफ। यही वह है जो आपको दूसरों को प्रदान करने की ज़रूरत है जो खुद के लिए अपनी .deb फ़ाइल बनाना चाहते हैं, शायद अपने पैच या ट्वीक्स के साथ, या शायद वे एक अलग वास्तुकला के लिए पैकेज बनाना चाहते हैं। यदि आप इसे दूसरों को प्रदान करना चाहते हैं, तो 'Pbuilder' को समझना शुरू हो सकता है। – tripleee