डेबियन पैकेजिंग ने अपस्ट्रीम सोर्स आर्काइव को देखते हुए दो पैकेज कैसे बनाए?


14

मैं अपने पीपीए के लिए कुछ पैकेजिंग कर रहा हूं। अपस्ट्रीम स्रोत एक .tar.gzसंग्रह है जो मेकफाइल-आधारित है।

चूंकि इस पैकेज में आर्किटेक्चर-इंडिपेंडेंट डेटा की एक महत्वपूर्ण मात्रा है, इसलिए बिल्ड स्क्रिप्ट के लिए दो पैकेज तैयार करना बुद्धिमानी होगी:

  • पैकेज
  • पैकेज -डेटा

मैं इसे कैसे सेट कर सकता हूं? मैंने controlदो पैकेज तैयार करने के लिए अपनी डेबियन फ़ाइल को संपादित किया है, लेकिन मुझे नहीं पता कि सही फ़ाइलों को सही पैकेज में कैसे लाया जाए ।

चूंकि डेटा फाइलें वर्तमान में मेकफाइल के माध्यम से सभी स्थापित हैं, इसलिए मैं यहां खो गया हूं।

जवाबों:


14

यह एक ऐसी जगह है जहाँ मैंने हमेशा प्रलेखन की कमी पाई है। मैंने बहुत कुछ सीखा केवल यह कैसे काम करता है यह देखकर कि यह अन्य पैकेजों में कैसे किया जाता है। जैसा कि डेबियन पैकेजिंग में अधिकांश चीजें हैं, ऐसा करने के कुछ तरीके हैं। मुझे लगता है कि debian/package.installफ़ाइलों का उपयोग करने का सबसे सरल तरीका है । यहाँ एक पैकेज का उदाहरण दिया गया है जिस पर मैंने काम किया है, कल्पना (bzr शाखा)

सबसे पहले, हमें पैकेज बनाने की आवश्यकता है debian/control। अभी तीन श्लोक हैं। स्रोत पैकेज के लिए एक और प्रत्येक बाइनरी पैकेज के लिए एक। ध्यान दें कि फू-डेटा पैकेज होना चाहिए Architecture: all। यह भी ध्यान दें कि कल्पना पर निर्भर करता है imagination-common (= ${source:Version})

अगला, हम एक debian/imagination.installफ़ाइल बनाते हैं। इसमें विशिष्ट फाइलें या पथ शामिल हैं जिन्हें हम कल्पना पैकेज में समाप्त करना चाहते हैं। इस पैकेज के लिए हम सभी आर्किटेक्चर पर निर्भर फाइलें चाहते हैं। डेस्कटॉप फ़ाइल को शामिल किया गया है क्योंकि इसे बाइनरी के साथ कहना पड़ता है जिसे वह अपनी Exec:लाइन में कहता है ।

usr/bin/
usr/lib/
/usr/share/applications/imagination.desktop

हमें एक debian/imagination-common.installफ़ाइल बनाने की आवश्यकता है । इसमें आर्किटेक्चर की सभी स्वतंत्र फाइलें, चित्र, अनुवाद, डॉक्स और इसी तरह की सभी फाइलें होंगी।

/usr/share/doc/
/usr/share/icons/
/usr/share/imagination/
/usr/share/locale/

man dh_install वर्णन करता है कि वास्तव में यहाँ क्या हो रहा है:

शायद आपके पास एक बड़ा पैकेज है जो कई बाइनरी पैकेज बनाता है। आप अपस्ट्रीम मेकफाइल का उपयोग इसे डेबियन / tmp में स्थापित करने के लिए कर सकते हैं, और फिर वहां से उचित संकुल निर्माण निर्देशिकाओं में निर्देशिका और फ़ाइलों की प्रतिलिपि बनाने के लिए dh_install का उपयोग कर सकते हैं।

"उचित पैकेज बिल्ड निर्देशिकाओं" से इसका क्या मतलब है कि निर्माण प्रक्रिया के अंत तक, परिणाम में जो कुछ भी होगा, वह सभी में foo.debमिल जाएगा src/debian/foo। जो फाइलें समाप्त foo-data.debहो जाएंगी, वे मिल जाएंगे src/debian/foo-data। जैसा debian/rulesकि अनिवार्य रूप से सिर्फ एक मेकफिल है, आप समान परिणाम प्राप्त करने के अन्य तरीकों की कल्पना करना शुरू कर सकते हैं।


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