फ़ाइलों की एक श्रृंखला स्थापित करने वाला एक डिबेट पैकेज कैसे बनाया जाता है


23

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

प्रश्न है - क्या यह संभव है और यदि ऐसा है - तो कैसे?

एक उदाहरण दें:

~/mypluginfolder/फ़ाइलें x, yएक सबफ़ोल्डर कहा जाता है abcऔर अंदर एक और फ़ाइल कहा जाता है z

मैं इस फ़ोल्डर को टारगेट करना चाहता हूं: tar -cvf myfiles.tar ~/mypluginfolder

मुझे लगता है कि मेरा डेबियन पैकेज जैसा लगेगा

myfiles.tar.gz
myfiles+ppafoss_0.1-1/
   myfiles.tar
   DEBIAN
      changelog, compat, control, install, rules source

क्या यह संभव है कि myfiles.tarउदाहरण के लिए एक ज्ञात फ़ोल्डर स्थान पर किसी तरह का असत्य हो

/usr/share/rhythmbox/plugins/

इस प्रकार अंतिम परिणाम होगा:

/usr/share/rhythmbox/plugins/mypluginfolder
/usr/share/rhythmbox/plugins/mypluginfolder\x
/usr/share/rhythmbox/plugins/mypluginfolder\y
/usr/share/rhythmbox/plugins/mypluginfolder\abc\z

यदि - लॉन्चपैड को स्रोत की जरूरत है, तो सलाह दी जाती है कि मुझे स्रोत फ़ोल्डर और फ़ाइलों को डेब पैकेज संरचना में कहां छोड़ना चाहिए।


यह अंततः व्यक्तिगत लॉन्चपैड पीपीए पैकेजों की एक श्रृंखला बन जाएगा।

जो मैं पसंद करता हूं (लेकिन प्राप्त करने में सक्षम नहीं हो सकता ...) मेरी पैकेजिंग को न्यूनतम रखने के लिए है - एक टेम्पलेट से पैकेज की एक श्रृंखला बनाएं और नंगे न्यूनतम (चैंजेलॉग आदि + टार फ़ाइल / फ़ाइल और फ़ोल्डर संरचना) को समायोजित करें ।


उम ... आप टार निष्कर्षण करने के लिए एक .deb क्यों चाहते हैं ? क्यों न केवल स्रोत कोड को टार से लिया जाए और स्रोत से स्क्रैच से बहस बनाएं?
थॉमस वार्ड

2
एक संभावना यह हो सकती है कि आप टारबॉल को दूसरी जगह, एडोब-फ्लैश शैली से मिटा दें।
jrg

@jrg, जो कि .bin इंस्टॉलर डाउनलोड करता है, टारबॉल नहीं। एडोब पैकेजिंग शैली doesnt स्रोत (इसके बंद स्रोत) प्रदान करते हैं। : अवधारणा, हालांकि, अब भी वही, कहीं और से कोड डाउनलोड करें और फिर निकालने / स्थापित (पी मैं निट = यहाँ picky जा रहा हूँ) है
थॉमस वार्ड

@ लॉर्डोफ़टाइम समान अंतर। , पी
जेआरजी

जवाबों:


31

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


लॉन्चपैड के लिए तैयार पैकेज बनाना

यह अंततः व्यक्तिगत लॉन्चपैड पीपीए पैकेजों की एक श्रृंखला बन जाएगा।

जो मैं पसंद करता हूं (लेकिन प्राप्त करने में सक्षम नहीं हो सकता ...) मेरी पैकेजिंग को न्यूनतम रखने के लिए है - एक टेम्पलेट से पैकेज की एक श्रृंखला बनाएं और नंगे न्यूनतम (चैंज आदि) + टार फ़ाइल को समायोजित करें।

लॉन्चपैड केवल स्रोत पैकेज स्वीकार करता है, इसलिए एक rulesऐसी फाइल बनाएं जो सही स्थानों पर फाइलों को स्थापित करे। सुविधा के लिए, मैं डीहेल्पर का उपयोग करूँगा । आपकी फ़ाइलों की निर्देशिका इस तरह दिखनी चाहिए:

debian/changelog
debian/control
debian/rules
debian/compat
mypluginfolder/...

debian/copyrightपैकेज से जुड़े लाइसेंस के बारे में उपयोगकर्ताओं को सूचित करने के लिए एक फ़ाइल भी उपयोगी हो सकती है। मुझे नहीं लगता कि आपको एक postinstस्क्रिप्ट की आवश्यकता है क्योंकि आपको केवल कुछ फ़ाइलों को निकालने की आवश्यकता है। compat"8" कहने के लिए, डिस्लेपर कॉम्पेलबिलिटी स्तर होना चाहिए। (कृपया अधिक जानकारी के लिए डिफेलर के मैनुअल पेज को देखें)

changelogफ़ाइल के साथ संपादित किया जा सकता dchआदेश, से उपलब्ध devscriptsपैकेज। rules(Debhelper का उपयोग) शामिल करना चाहिए:

#!/usr/bin/make -f
%:
    dh $@
override_dh_install:
    dh_install mypluginfolder/ /usr/share/rhythmbox/plugins

इसका उपयोग करके निष्पादन योग्य बनाएं chmod 755 debian/rules। स्रोत पैकेज का उपयोग करके निर्माण किया जा सकता है debuild -S। नाम वाली निर्देशिका में होना सुनिश्चित करें <package-name>-<version>override_व्यवहार और dhकमांड के बारे में अधिक जानकारी इसके मैनुअल पेज पर पाई जा सकती है ।

डेबियन नई देखरेख गाइड मुझे इस को समझने के लिए बहुत ही मूल्यवान था, यह सिफारिश की पढ़ने है। उदाहरण पैकेजिंग https://github.com/Bumblebee-Project/bumblebee-ppa पर देखी जा सकती है ।


मौजूदा फ़ाइल ट्री से पैकेज बनाना

dpkg-deb -bएक मौजूदा फ़ाइल ट्री से टारबॉल बनाने के लिए इस्तेमाल किया जा सकता है। सबसे पहले, एक निर्देशिका बनाने के साथ शुरू करें जिसे आपके पैकेज के नाम पर रखा जाना चाहिए। मैं मान लूंगा कि आप इसे नाम देना चाहते हैं myplugin, और इसे लगाना चाहते हैं /usr/share/rhythmbox/plugins/mypluginfolder। इसके अलावा, DEBIANपैकेज की जानकारी संग्रहीत करने के लिए निर्देशिका (अपरकेस!) बनाएँ :

mkdir -p myplugin/usr/share/rhythmbox/plugins/mypluginfolder
mkdir myplugin/DEBIAN

अपनी फ़ाइलों पर प्रतिलिपि बनाएँ:

cp -r ~/mypluginsfolder myplugin/usr/share/rhythmbox/plugins

अगला, आपको एक तथाकथित नियंत्रण फ़ाइल की आवश्यकता होगी , myplugin/DEBIAN/controlजिस पर पैकेज का वर्णन किया गया हो। ऐसी फ़ाइल की सामग्री नीचे दी गई है:

Package: myplugin
Version: 1.0-1
Maintainer: You <whatever@contact.address>
Architecture: all
Description: plugins for Rhythmbox
 Longer description here
 .
 As you can see, new paragraph are split by a single dot,
 and lines have to be indented by one space.

अब, आप वैकल्पिक रूप से अपने पैकेज की सामग्री को सत्यापित कर सकते हैं। अगला कमांड फ़ाइल और निर्देशिका प्रविष्टियों को सूचीबद्ध करता है myplugin:

find myplugin -ls

यदि आप संतुष्ट हैं, तो वर्तमान निर्देशिका में पैकेज बनाएँ:

dpkg-deb -b myplugin .

एक नई फ़ाइल दिखाई देगी, जिसका नाम <package>_<version>_<architecture>.debइस उदाहरण में है myplugin_1.0-1_all.deb। आप lessफ़ाइल में झांकने के लिए कार्यक्रम का उपयोग कर सकते हैं । उदाहरण के लिए, less myplugin_1.0-1_all.deb


3
+1 पूर्ण प्रतिभा - मैं आपको नमन करता हूं सर। धन्यवाद!
जीवाश्म

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