python पायथन कार्यक्रमों को वितरित करने के लिए डेबियन पैकेज बनाने का मानक तरीका?




debian packaging (4)

ऐसा लगता है कि stdeb आप जो चाहते हैं वह करेंगे।

साथ ही, स्क्रिप्ट स्थापित करने के लिए, मैं दृढ़ता से वितरण की कंसोल_स्क्रिप्ट प्रविष्टि बिंदु समर्थन की अनुशंसा करता हूं।

https://code.i-harness.com

ऐसा करने के तरीके के बारे में जानकारी का एक टन है, लेकिन चूंकि "बिल्ली को त्वचा के एक से अधिक तरीके हैं" , और प्रक्रिया के कुछ हिस्सों को कवर करने वाले सभी ट्यूटोरियल / मैनुअल कुछ मान्यताओं को प्रतीत करते हैं जो दूसरे से अलग हैं ट्यूटोरियल, मैं अभी भी इसे समझने के लिए प्रबंधन नहीं किया था।

अब तक मुझे लगता है कि मुझे लगता है कि मैं समझ गया।

  1. मेरा अंतिम लक्ष्य "बाइनरी" .deb पैकेज बनाने का होना चाहिए। इस तरह के पैकेज मंच स्वतंत्रता (32/64 बिट) होगा क्योंकि सभी पायथन कार्यक्रम ऐसे हैं।
  2. एक "बाइनरी" पैकेज बनाने के लिए मुझे पहले स्रोत पैकेज बनाने की आवश्यकता है।
  3. स्रोत पैकेज बनाने के लिए मैं या तो CDBS या CDBS उपयोग कर सकता हूं। डेबेलर शुरुआती लोगों के लिए अनुशंसित तरीका है।
  4. स्रोत पैकेज बनाने का मूल स्रोत निर्देशिका में डेबियन निर्देशिका को पॉप्युलेट कर रहा है जिसमें फाइलों की प्रतिलिपि बनाने की आवश्यकता है, फाइलों की प्रतिलिपि बनाने की आवश्यकता है, कॉपीराइट और लाइसेंसिंग योजना के अधीन वे क्या निर्भर हैं, उनके पास क्या निर्भरता है, आदि ...
  5. चरण # 4 को बड़े पैमाने पर dh_make कमांड को स्वचालित किया जा सकता है यदि पाइथन स्रोत भी distutils ' setup.py स्क्रिप्ट के साथ आता है।

अब मेरे प्रश्न:

  1. क्या प्रक्रिया की मेरी समझ सही है? क्या मुझे कुछ भी याद आ रहा है, या कुछ भी जो मुझे गलत हो गया है?
  2. चरण # 5 वास्तव में मेरे लिए अधिक भ्रमित है: विशेष रूप से दो बिंदु जो मेरे लिए सबसे अस्पष्ट हैं:
    • मैं एक setup.py स्क्रिप्ट कैसे लिखूं जो स्टैंड-अलोन प्रोग्राम स्थापित करता है? संपादित करें: स्टैंडअलोन प्रोग्रामिंग से मेरा मतलब है कि एक डेस्कटॉप उपयोगकर्ता द्वारा उपयोग किया जाने वाला एक प्रोग्राम (जैसा कि एक मॉड्यूल के विपरीत है जिसे मैं आयात करने के बाद अन्य सॉफ़्टवेयर द्वारा उपयोग की जाने वाली कार्यक्षमता के संग्रह की तरह समझता हूं)। मेरे विशिष्ट मामले में मुझे वास्तव में दो ऐसे "प्रोग्राम" की आवश्यकता होगी: मुख्य सॉफ्टवेयर और एक अलग उपयोगिता (असल में एक दूसरा "प्रोग्राम" जो दूसरे पैकेज के साथ एक ही पैकेज में होना चाहिए)।
    • डीईबी पैकेज के लिए ऐसी स्क्रिप्ट की विशिष्टताओं क्या हैं? आधिकारिक दस्तावेज केवल आरपीएम और विंडोज सामान से निपटने लगता है ...

बीटीडब्लू: ये जानकारी का सबसे अच्छा स्रोत हैं जो मैं अब तक खुद को पा सकता हूं। यदि आपके पास इससे बेहतर कुछ है, तो कृपया साझा करें! :)


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

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

  1. निम्न संरचना को फिर से बनाने के लिए फ़ाइलें और फ़ोल्डर्स बनाएं:
    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/

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

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

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

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

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.

वहां कई पुस्तकालय हैं जो सभी आवश्यक चरणों को दूर करते हैं और आपको अपने पायथन पैकेज को एक कमांड के साथ एक डेबियन पैकेज में बदलने देते हैं।

मान लें कि आपके पायथन पैकेज में पहले से setup.py , निर्देशिका में जहां setup.py स्थित है, आप इसका उपयोग कर सकते हैं:

  • stdeb (इस answer में पहले से ही उल्लेख किया गया है, pip install stdeb साथ pip install stdeb )। डेबियन पैकेज बनाने के लिए, चलाएं:

    python setup.py --command-packages=stdeb.command bdist_deb
    

    आउटपुट .deb फ़ाइल bdist_deb निर्देशिका में स्थित होगी।

  • fpm ( gem install --no-ri --no-rdoc fpm इंस्टॉल के साथ gem install --no-ri --no-rdoc fpm )। डेबियन पैकेज बनाने के लिए, चलाएं:

    fpm -s python -t deb setup.py
    
  • py2deb ( pip install py2deb साथ pip install py2deb )। डेबियन पैकेज बनाने के लिए, चलाएं:

    py2deb -r . .
    

इन पुस्तकालयों में से प्रत्येक की अपनी चेतावनी है, इसलिए आप यह कोशिश करना चाहेंगे कि आपके लिए सबसे अच्छा क्या काम करता है।


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

एक अच्छा setup.py होने के नाते वास्तव में एक अच्छी सलाह है। मैंने इन दो गाइडों को काफी अच्छा पाया:





debhelper