2012-02-07 6 views
8

के साथ उबंटू सिस्टम में पायथन मॉड्यूल को तैनात करना मैं कुछ पुस्तकालयों को डिस्ट्यूट के साथ डेब में पैकेजिंग पर काम कर रहा हूं।डिब्यूटिल्स और डेब

संभवतः, मुझे setup.py को सही तरीके से कॉन्फ़िगर करने की आवश्यकता है, साथ ही डेब के लिए उपयुक्त /debian फ़ाइलें भी आवश्यक हैं।

library_name/ 
__init__.py 
liba.py 
libb.py 
... 

यह तो वे from library_name import liba निष्पादित कर सकते हैं अन्य कार्यक्रमों के लिए एक निर्भरता के रूप में जोड़ा जा रहा है:

अभी, भंडार कुछ इस तरह लग रहा है।

गूगलिंग उबंटू पर तैनाती के 3 और 5 विभिन्न तरीकों के बीच कुछ बताता है, जिसमें easy_install दृष्टिकोण शामिल नहीं है; प्रलेखन बड़े पैमाने पर टुकड़ों और पुराने तारीख में प्रतीत होता है।

मैं विशेष रूप से यह सुनिश्चित करने के लिए देख रहा हूं कि पाइथन संस्करण के बावजूद, पुस्तकालय सही सिस्टम निर्देशिका में रखा गया है। इसके अलावा, ज़ाहिर है कि इसे अनइंस्टॉल किया जा सकता है या निर्बाध रूप से अपग्रेड किया जा सकता है।

एंडगैम एक स्थानीय सर्वर पर एक डेब है जो हमारे अन्य कार्यक्रमों के लिए पैकेज निर्भरता के रूप में जोड़ा जाता है।

ऐसा करने के लिए कैननिकल "आसान और सीधा" तरीका क्या है?

+0

अपने पैकेज दोनों 2.x और 3.x के साथ संगत है? यही है, क्या आप दोनों को लक्षित कर रहे हैं? – nfirvine

+0

@ एनफिरविन: 2.6 + 2.7 –

उत्तर

2

डेबियन फ़ाइलों को तेज़ बनाने के लिए आप pkgme का उपयोग कर सकते हैं। जहां तक ​​मुझे पता है, dh-make, pkgme डिज़ाइन जैसे अन्य समान उपकरणों के विपरीत प्लगइन पर आधारित है जिसका अर्थ है कि जब पाइथन का पता चला है तो आपकी setup.py फ़ाइल की जानकारी सही ढंग से निकाली गई है।

अधिक जानकारी के लिए, आप Ubuntu Developer Week ईवेंट पर इस recent talk पर एक नज़र डाल सकते हैं।

2

मैंने पहले भी उबंटू/डेबियन के लिए पाइथन पैकेजिंग के साथ लड़ाई की है, और मैं सहमत हूं कि दस्तावेज़ एक गड़बड़/अस्तित्वहीन/भ्रामक हैं: उन्हें वास्तव में सबसे आसान संभावित स्थिति के लिए त्वरित प्रारंभ मार्गदर्शिका की आवश्यकता है।

ठीक है, यह है!

अपने टूल्स इंस्टॉल करें। यह overkill है, हालांकि हो सकता है:

अपने कोड के साथ
sudo apt-get install build-essential python-all dh-make devscripts fakeroot 

प्रारंभ $packagename-$version नाम के एक निर्देशिका में बाहर की जाँच की, library_name-0.6.0/ की तरह है, और उस निर्देशिका के लिए cddh_make -i -c gpl3 -e [email protected] जैसे कुछ चलाएं (अन्य विकल्पों के लिए dh_make --help देखें)। अगर सब कुछ ठीक हो जाता है, तो आपको कोई त्रुटि नहीं मिलेगी, और यह ./debian में फ़ाइलों का एक भार बनाएगा। आप ./debian/*.{ex,EX} को अनदेखा या हटा सकते हैं; वे सिर्फ उदाहरण हैं।

तुम शायद कुछ बिंदु पर इन सभी फ़ाइलों को जांच करनी चाहिए, लेकिन बहुत कम से कम, आप जरूरत./debian/control और ./debian/rules संपादित करने के लिए। आपको सभी templately क्षेत्रों को नियंत्रण में भरना चाहिए, अर्थात् Description और HomepagePackage लाइन बदलें python-$libname इस के लिए control में अपने Depends लाइन बदलने के लिए:

Depends: ${misc:Depends}, ${python:Depends} 

यह सुनिश्चित करता है कि हमारे द्विआधारी पैकेज python-$libname अजगर के संस्करणों में यह जरूरत पर निर्भर करता है। (${python:Depends} is a "substvar"; they're created when we build; you can inspect their values after your first build in।/Debian/$ packagename.substvars`।)

बदलें dh [email protected] से dh [email protected] --with python2 करने के लिए rules में लाइन, सामने (यह एक Makefile है) पर टैब संरक्षण। यह डेबेलर को अपने पायथन 2 एडन का उपयोग करने का कारण बनता है; डिफ़ॉल्ट अभी भी pysupport का उपयोग करने के लिए है (जो बहिष्कृत है, याद है?)।

फिर, स्रोत जड़ में निम्नलिखित कमांड चलाएँ:

debuild -us -uc 

इस पैकेज बनाता है, यह प्रवेश किए बिना (कुछ आप सीखना चाहिए बाद में कैसे करना है!)। आपको कुछ परिचित सेटअपटोल्स लाइनों को देखना चाहिए (दो बार: 2.6 के लिए एक बार, 2.7 के लिए एक बार), dh_ addons के ढेर, और अन्य भवन क्रॉफ्ट। अंत में लिंटियन का उत्पादन होता है, जो कुछ सामान्य पैकेजिंग समस्याओं का पता लगा सकता है; आपको इन्हें ठीक करना चाहिए। लिंटियन और दोस्तों के बारे में शिकायत करने वाली बहुत सी चीजें पैकेजिंग नियमों का पालन करती हैं, और यदि आपकी लिब सिर्फ आंतरिक है, तो इसे ढीला खेलने के लिए स्वतंत्र महसूस करें।

वैसे, This page talks about the deprecation of python-support and python-central

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

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