उबंटू पैकेजिंग गाइड

प्रलेखन

डेबेलर के साथ पैकेजिंग


[जरूरी]

आवश्यकताएं: "पैकेजिंग से स्क्रैच" प्लस डिबेलपर और डीएच-मेक नामक अनुभाग से आवश्यकताएं

एक पैकेजर के रूप में, आप शायद ही कभी स्क्रैच से पैकेज बनाएंगे जैसा हमने पिछले खंड में किया है। जैसा कि आप कल्पना कर सकते हैं, नियम फ़ाइल में कई कार्य और जानकारी, उदाहरण के लिए, संकुल के लिए आम हैं। पैकेजिंग को आसान और अधिक कुशल बनाने के लिए, आप इन कार्यों के साथ सहायता के लिए डेबेलर का उपयोग कर सकते हैं। डेबेलर पर्ल स्क्रिप्ट्स ( डीएच_ के साथ उपसर्ग) का एक सेट है जो पैकेज-बिल्डिंग की प्रक्रिया को स्वचालित करता है। इन स्क्रिप्ट के साथ, डेबियन पैकेज बनाना काफी सरल हो जाता है।

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

mkdir ~ / हैलो-डेबेलर सीडी ~ / हैलो-डेबेलर wget http://ftp.gnu.org/gnu/hello/hello-2.1.1.tar.gz mkdir ubuntu cd ubuntu

फिर, उबंटू स्रोत पैकेज प्राप्त करें:

apt-get स्रोत हैलो-डेबेलर सीडी ..

पिछले उदाहरण की तरह, हमें सबसे पहले जो करना है वह मूल (अपस्ट्रीम) टैरबॉल को अनपैक कर रहा है।

tar -xzvf हैलो-2.1.1.tar.gz

जैसा कि हमने पिछले उदाहरण में किया था, अपस्ट्रीम टैरबॉल को हैलो_2.1.1.orig.tar.gz पर कॉपी करने के बजाय, हम dh_make को हमारे लिए काम करने देंगे। केवल एक चीज जो आपको करना है वह स्रोत फ़ोल्डर का नाम बदलती है, इसलिए यह - के रूप में है जहां पैकगेनेम लोअरकेस है। इस मामले में, टैरबॉल को अनदेखा करने से एक सही नामित स्रोत निर्देशिका उत्पन्न होती है ताकि हम इसमें आगे बढ़ सकें:

सीडी हैलो-2.1.1

स्रोत के प्रारंभिक "debianization" बनाने के लिए हम dh_make का उपयोग करेंगे

dh_make -e your.maintainer@address -f ../hello-2.1.1.tar.gz

तब dh_make आपको प्रश्नों की एक श्रृंखला पूछेगा:

पैकेज का प्रकार: एकल बाइनरी, एकाधिक बाइनरी, लाइब्रेरी, कर्नेल मॉड्यूल या सीडीबीएस? [एस / एम / एल / के / बी] एस
रखरखाव का नाम: कप्तान पैकर ईमेल पता: packager@coolness.com दिनांक: गुरु, 6 अप्रैल 2006 10:07:19 -0700 पैकेज का नाम: हैलो संस्करण: 2.1.1 लाइसेंस: खाली पैकेज का प्रकार: एकल हिट से पुष्टि करें: दर्ज करें


[सावधान]

केवल एक बार dh_make -e चलाएं। यदि आप पहली बार ऐसा करने के बाद इसे फिर से चलाते हैं, तो यह ठीक से काम नहीं करेगा। यदि आप इसे बदलना चाहते हैं या गलती करना चाहते हैं, तो स्रोत निर्देशिका को हटा दें और अपस्ट्रीम टैरबॉल को अनवरोधित करें। फिर आप स्रोत निर्देशिका में माइग्रेट कर सकते हैं और पुनः प्रयास करें।

चल रहा है dh_make -e दो चीजें करता है:

हैलो प्रोग्राम बहुत जटिल नहीं है, और जैसा कि हमने "स्क्रैच से पैकेजिंग" नामक अनुभाग में देखा है, पैकेजिंग को मूलभूत फ़ाइलों की तुलना में बहुत अधिक आवश्यकता नहीं है। इसलिए, हम .ex फ़ाइलों को हटा दें:

सीडी डेबियन आरएम * .ex * .EX

हैलो के लिए , आप भी नहीं करेंगे

* लाइसेंस

* उबंटू पैकेजिंग गाइड इंडेक्स

README की आवश्यकता है। डेबियन (विशिष्ट डेबियन मुद्दों के लिए README फ़ाइल, प्रोग्राम की रीडमी नहीं ), डीआईआर (आवश्यक निर्देशिका बनाने के लिए dh_installdirs द्वारा उपयोग किया जाता है), दस्तावेज़ (प्रोग्राम दस्तावेज स्थापित करने के लिए dh_installdocs द्वारा उपयोग किया जाता है), या जानकारी ( जानकारी स्थापित करने के लिए dh_installinfo द्वारा उपयोग किया जाता है) फ़ाइल) फ़ाइलों को डेबियन निर्देशिका में। इन फ़ाइलों पर अधिक जानकारी के लिए, "dh_make उदाहरण फाइल" नामक अनुभाग देखें।

इस बिंदु पर, आपको डेबियन निर्देशिका में केवल चेंजलॉग , कंपैट , कंट्रोल , कॉपीराइट और नियम फाइलें होनी चाहिए। "स्क्रैच से पैकेजिंग" नामक अनुभाग से, एकमात्र फ़ाइल जो नई है वह compat है , जो एक फ़ाइल है जिसमें डेबेलर संस्करण (इस मामले में 4) का उपयोग किया जाता है।

इस मामले में आपको चेंजलॉग को थोड़ा समायोजित करने की आवश्यकता होगी ताकि यह प्रतिबिंबित किया जा सके कि इस पैकेज को हैलो-डेबेलर का नाम हैलो की बजाय:

हैलो-डेबेलर (2.1.1-1) डैपर; तात्कालिकता = कम * प्रारंभिक रिलीज - कप्तान पैकेजर गुरु, 6 अप्रैल 2006 10:07:19 -0700

डेबेलर का उपयोग करके, केवल उन्हीं चीजों को जिन्हें हम नियंत्रण में बदलने की जरूरत है, नाम है ( हैलो-डेबेलर के लिए हैलो को प्रतिस्थापित करना) और स्रोत पैकेज के लिए बिल्ड-निर्भर फ़ील्ड में डेबेलर (> = 4.0.0) जोड़ना। हैलो-डेबेलर के लिए उबंटू पैकेज इस तरह दिखता है:

हम उबंटू हैलो-डेबेलर पैकेज से कॉपीराइट फ़ाइल और पोस्टइंस्ट और प्रीआरएम स्क्रिप्ट्स की प्रतिलिपि बना सकते हैं, क्योंकि वे "स्क्रैच से पैकेजिंग" नामक अनुभाग के बाद से नहीं बदला है। हम नियम फ़ाइल की प्रतिलिपि भी लेंगे ताकि हम इसका निरीक्षण कर सकें।

सीपी ../../ubuntu/hello-debhelper-2.1.1/debian/copyright। सीपी ../../ubuntu/hello-debhelper-2.1.1/debian/postinst। सीपी ../../ubuntu/hello-debhelper-2.1.1/debian/prerm। सीपी ../../ubuntu/hello-debhelper-2.1.1/debian/rules।

आखिरी फाइल जिसे हम देखना चाहते हैं वह नियम है , जहां डेबेल स्क्रिप्ट की शक्ति देखी जा सकती है। नियमों का डिबेलर संस्करण कुछ हद तक छोटा है ("नियम" नामक खंड से संस्करण में 72 लाइनों के विपरीत 54 लाइनें)।

डेबेलर संस्करण इस तरह दिखता है:

#! / usr / bin / make -f पैकेज = हैलो-डेबेलर सीसी = जीसीसी CFLAGS = -g -Wall ifeq (, $ (findstring noopt, $ (DEB_BUILD_OPTIONS))) CFLAGS + = -O2 endif #export DH_VERBOSE = 1 साफ : dh_testdir dh_clean rm -f build - $ (बनाने) -i distclean इंस्टॉल करें: dh_clean dh_installdirs $ (मेक) prefix = $ (CURDIR) / डेबियन / $ (पैकेज) / usr \ mandir = $ (CURDIR) / डेबियन / $ (पैकेज) / usr / share / man \ infodir = $ (CURDIR) / डेबियन / $ (पैकेज) / usr / share / info \ install build: ./configure --prefix = / usr $ (बनाने) CC = "$ (सीसी) "CFLAGS =" $ (CFLAGS) "

स्पर्श बाइनरी-इंडेप बनाएं: इंस्टॉल करें # इस पैकेज द्वारा जेनरेट की गई कोई आर्किटेक्चर-स्वतंत्र फ़ाइलें अपलोड नहीं की गई हैं। यदि कोई था तो वे # यहां होंगे। बाइनरी-आर्क: dh_testdir -a dh_testroot -a dh_installdocs-a NEWS dh_installchangelogs -a चेंजलॉग dh_strip -a dh_compress -a dh_fixperms -a dh_installdeb -a dh_shlibdeps -a dh_gencontrol -a dh_md5sums -a dh_builddeb -a बाइनरी: बाइनरी-इंडिप बाइनरी- आर्क। PHONY: बाइनरी बाइनरी-आर्क बाइनरी-इंडिप क्लीन चेकरूट

ध्यान दें कि परीक्षण की तरह कार्य यदि आप सही निर्देशिका में हैं ( dh_testdir ), यह सुनिश्चित कर लें कि आप रूट विशेषाधिकार ( dh_testroot ) के साथ पैकेज बना रहे हैं, दस्तावेज़ ( dh_installdocs और dh_installchangelogs ) स्थापित कर रहे हैं, और बिल्ड ( dh_clean ) को स्वचालित रूप से संभालने के बाद सफाई कर रहे हैं । हैलो की तुलना में कई संकुल अधिक जटिल हैं, नियम फाइलें बड़ी नहीं हैं क्योंकि डेबेलर स्क्रिप्ट अधिकांश कार्यों को संभालती है। डेबेल स्क्रिप्ट की पूरी सूची के लिए, कृपया " डेबेल स्क्रिप्ट की सूची" नामक अनुभाग देखें। वे अपने संबंधित मैन पेजों में भी अच्छी तरह से प्रलेखित हैं। यह उपरोक्त नियम फ़ाइल में उपयोग की जाने वाली प्रत्येक सहायक स्क्रिप्ट के लिए मैन पेज को पढ़ने के लिए एक उपयोगी अभ्यास है (वे अच्छी तरह से लिखे गए हैं और लंबे समय तक नहीं हैं)।