2009-09-05 16 views
41

मुझे पाइथन पैकेज से पायथन-समर्थन का उपयोग करके डेबियन पैकेज बनाने के लिए एक स्क्रिप्ट लिखना, या ढूंढना है। पायथन पैकेज शुद्ध पायथन होगा जिसमें कोई सी एक्सटेंशन नहीं होगा।मैं पाइथन पैकेज की डेबियन पैकेजिंग कैसे करूं?

परीक्षण उद्देश्यों के लिए पायथन पैकेज केवल खाली __init__.py फ़ाइल और एक पाइथन मॉड्यूल, package_test.py के साथ एक निर्देशिका होगी।

पैकेजिंग स्क्रिप्ट चाहिए उपयोग अजगर-समर्थन लक्ष्य मंच है, यानी v2.5 और Ubuntu बिना इजाजत पर v2.6 पर पायथन के संभावित कई प्रतिष्ठानों के लिए सही बाईटकोड प्रदान करने के लिए।

गुगलिंग के दौरान मुझे जो सलाह मिलती है वह केवल गंदा हैक्स के उदाहरण हैं जो अजगर-समर्थन या पायथन-केंद्रीय का उपयोग भी नहीं करते हैं।

मैंने इस पर शोध करने में घंटों बिताए हैं, और सबसे अच्छा मैं आ सकता हूं कि मौजूदा ओपन सोर्स प्रोजेक्ट से स्क्रिप्ट के आसपास हैक करना है, लेकिन मुझे नहीं पता कि मैं जो कर रहा हूं उसके लिए कौन सी बिट्स की आवश्यकता है।

क्या किसी ने यहां एक पाइथन पैकेज से एक उचित गैर-हैकी तरीके से डेबियन पैकेज बनाया है?

मुझे लगता है कि मुझे एक सप्ताह से अधिक समय तक लेना होगा ताकि डेबियन पैकेजिंग और पायथन समर्थन के बारे में कोई जानकारी न हो, जिससे वर्किंग स्क्रिप्ट प्राप्त हो सके। यह कितने समय तक लिया है?

उत्तर

18

मैं एक मौजूदा Debian पैकेज के स्रोतों ले जाते थे, इसके साथ वास्तविक पैकेज को प्रतिस्थापित करें आर पैकेज संकुल कि अजगर-समर्थन पर निर्भर करती है की एक सूची प्राप्त करने के लिए, कर

apt-cache rdepends python-support 

एक पैकेज है कि है Architecture: all उठाओ, इतना है कि यह एक शुद्ध-अजगर पैकेज है। इस सूची के माध्यम से जाना, मैंने पाया कि उदा। पायथन-फ्लुप एक अच्छा प्रारंभिक बिंदु हो सकता है। ऐसे ही एक पैकेज का स्रोत प्राप्त करने के लिए,

apt-get source <package> 

कर इसे बनाने के लिए,

cd <packagesrc> 
dpkg-buildpackage -rfakeroot 

जब यह संपादन, उम्मीद है कि आप केवल debian फ़ोल्डर में फ़ाइलें की जरूरत है; अपने खुद के पैकेज नाम के साथ फ्लॉप के सभी संदर्भों को प्रतिस्थापित करें।

एक बार शुरू करने के बाद, आपको इसे पूरा करने के लिए एक दिन लेना चाहिए।

+3

नोट: के बाद से इस सवाल का जवाब लिखा गया था, 'अजगर-support'' dh_python2 के पक्ष में पदावनत किया गया था '। [Dh_python2 में संक्रमण] (http://wiki.debian.org/Python/TransitionToDHPython2) को डेबियन विकी पर संक्षेप में वर्णित किया गया है। – drdaeman

+0

@drdaeman @Martin: dh_python2 अब सीधे 'पायथन' पैकेज में भेज दिया गया है, इसलिए यह नुस्खा अब इतना अच्छा काम नहीं करता है। आप इसे कैसे अपडेट करेंगे? गाइड के लिए – bukzor

4

सबसे पहले, डेबियन में पहले से ही पाइथन पैकेज बहुत सारे हैं; आप उनमें से किसी के लिए apt-get source या http://packages.debian.org पर जाकर स्रोत (सभी पैकेजिंग समेत) डाउनलोड कर सकते हैं।

आप उपयोग की निम्न संसाधनों मिल सकता है:

19

मुझे लगता है कि क्या आप चाहते हैं http://pypi.python.org/pypi/stdeb है:

stdeb एक नया distutils आदेश, sdist_dsc के माध्यम से अजगर संकुल से डेबियन स्रोत संकुल पैदा करता है। स्वचालित डिफॉल्ट डेबियन पैकेज के लिए प्रदान किए जाते हैं, लेकिन परिणामस्वरूप पैकेज के कई पहलू अनुकूलित हो सकते हैं (नीचे अनुभाग को अनुकूलित करना देखें)। एक अतिरिक्त कमांड, bdist_deb, एक डेबियन बाइनरी पैकेज, एक .deb फ़ाइल बनाता है।

14

जवाब यहां पोस्ट के अधिकांश पुराने हो गए हैं, सौभाग्य से एक महान डेबियन विकी पोस्ट हाल ही में किया गया है, जो वर्तमान सर्वोत्तम प्रथाओं बताते हैं और वर्णन करता है पायथन मॉड्यूल और अनुप्रयोगों के लिए डेबियन संकुल का निर्माण करने के लिए कैसे।

15

एक देब पैकेज के निर्माण के सही तरीके से dpkg-buildpackage उपयोग कर रहा है, लेकिन कभी कभी यह एक छोटा सा जटिल है। इसके बजाय आप dpkg -b <folder> का उपयोग कर सकते हैं और यह आपके डेबियन पैकेज को बनाएगा।

  1. बनाएँ:

    ये किसी भी बाइनरी के साथ या स्क्रिप्ट के किसी भी प्रकार कि मैनुअल संकलन (अजगर, बैश, पर्ल, रूबी) की जरूरत के बिना स्वचालित रूप से चलाता है के साथ dpkg -b <folder> के साथ एक डेबियन पैकेज बनाने के लिए मूल बातें कर रहे हैं ,

    ProgramName-Version/ 
    ProgramName-Version/DEBIAN 
    ProgramName-Version/DEBIAN/control 
    ProgramName-Version/usr/ 
    ProgramName-Version/usr/bin/ 
    ProgramName-Version/usr/bin/your_script 
    

    लिपियों /usr/bin/ पर रखा सीधे टर्मिनल से कहा जाता है ध्यान दें कि मैं स्क्रिप्ट में एक एक्सटेंशन जोड़ने नहीं किया: फ़ाइलें और क्रम में निम्न फ़ोल्डर संरचना से बनाना। साथ ही आप यह भी देख सकते हैं कि डेब पैकेज की संरचना प्रोग्राम स्थापित होने के बाद प्रोग्राम की संरचना होगी। इसलिए यदि आप इस तर्क का पालन करते हैं कि आपके प्रोग्राम में एक फ़ाइल है, तो आप इसे सीधे ProgramName-Version/usr/bin/your_script के तहत रख सकते हैं, लेकिन यदि आपके पास एकाधिक फाइलें हैं, तो आपको उन्हें ProgramName-Version/usr/share/ProgramName/all your files के तहत रखना चाहिए और /usr/bin/ के तहत केवल एक फ़ाइल रखना चाहिए जो आपकी स्क्रिप्ट को /usr/share/ProgramName/

    से कॉल करेगा
  2. बदलें सभी रूट में फ़ोल्डर अनुमति:

    chown root:root -R /path/to/ProgramName-Version 
    
  3. बदलें स्क्रिप्ट की अनुमति:

    chmod 0755 /path/to/the/script 
    
  4. अंत में, आप चला सकते हैं: dpkg -b /path/to/the/ProgramName-Version और आपका डेब पैकेज बनाया जाएगा! (आप भी पोस्ट/पूर्व Inst स्क्रिप्ट जोड़ सकते हैं और सब कुछ आप चाहते हैं, यह एक सामान्य Debian पैकेज की तरह काम करता)


यहाँ control फ़ाइल का एक उदाहरण है।आप केवल यह एक खाली "नियंत्रण" कहा जाता है फ़ाइल में कॉपी-पेस्ट और Debian फ़ोल्डर में रख करने की जरूरत है

Package: ProgramName 
Version: VERSION 
Architecture: all 
Maintainer: YOUR NAME <EMAIL> 
Depends: python2.7, etc , etc, 
Installed-Size: in_kb 
Homepage: http://foo.com 
Description: Here you can put a one line description. This is the short Description. 
Here you put the long description, indented by 1 space. 
+0

धन्यवाद। मैं प्री/पोस्ट इंस्टेंट स्क्रिप्ट कैसे जोड़ सकता हूं? – Gleb

+3

@ प्रीब/पोस्ट स्क्रिप्ट को गेलब 'डेबियन' फ़ोल्डर के अंदर रखा जाना चाहिए। बस अपनी स्क्रिप्ट को सही नाम 'preinst',' postinst', 'prerm' [etc ..] (https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html) के साथ जोड़ें। मुझे खुशी है कि यह आपकी मदद की :) – rsm

संबंधित मुद्दे