एक मेटा-पैकेज कैसे बनाएं जो स्वचालित रूप से अन्य पैकेज स्थापित करता है?


54

मैं एक ऐसा पैकेज बनाने में सक्षम होना चाहता हूं जिसमें कोई कोड या प्रोग्राम स्वयं न हों, बल्कि एक कंप्यूटर पर रिपॉजिटरी में मौजूद अन्य पैकेजों को स्थापित करता है, जैसे कि ubuntu-restricted-extrasपैकेज कैसे करता है?

जवाबों:


47

इस तरह का एक मेटा-पैकेज बनाया जा सकता है, जिसे एक टूल कहा जाता है, equivs जो सिर्फ निर्भरता की जानकारी के साथ एक पैकेज बनाएगा।

सबसे पहले, एक निर्देशिका बनाएँ:

mkdir my-metapackage
cd my-metapackage/

अब कार्यक्रम चलाएं:

equivs-control ns-control

यह नामक एक फाइल बनाएगा ns-control, इस फाइल को अपने टेक्स्ट एडिटर से खोलें। आपके द्वारा उत्पन्न की जाने वाली नियंत्रण फ़ाइल में आपके द्वारा इंस्टॉल किए गए पैकेजों पर निर्भर करने के लिए इसकी Dependsया Recommendsलाइनें संशोधित होनी चाहिए :

Section: misc
Priority: optional
Standards-Version: 3.9.1

Package: my-metapackage
Version: 1.0   
Depends: openssh-server, gedit
Description: This package installes an ssh server and a text editor
 The Long description of this package ends with a newline!

(सिर्फ एक उदाहरण, आपको अधिक जानकारी शामिल करनी चाहिए)

और अंत में, रन करके पैकेज का निर्माण करें

equivs-build ns-control

आपके पैकेज पर स्थित है my-metapackage/my-metapackage_1.0_all.deb

यदि आप एक स्रोत पैकेज भी बनाना चाहते हैं, तो --fullविकल्प को पास किया जा सकता है equivs-build, जैसे equivs-build --full ns-control। यह debuild का उपयोग करेगा और .dsc & .tar.gz फ़ाइलें भी बनाएगा।

एक स्रोत .changes फ़ाइल बनाने के लिए जिसे आप PPA पर अपलोड कर सकते हैं, स्रोत पैकेज को निकाल सकते हैं और बना सकते हैं

dpkg-source -x my-metapackage_1.0.dsc
cd my-metapackage-1.0
debuild -S

यदि आपके द्वारा ns-control में सेट किया गया Maintainer आपकी GPG कुंजी से मेल खाता है, तो आपको अपने PPA पर विवाद करने के लिए my-metapackage_1.0_source.changes फ़ाइल का निर्माण और हस्ताक्षर करना चाहिए।


बहुत धन्यवाद। मैं बाद में इसकी सबसे अधिक संभावना परीक्षण करूंगा, लेकिन अभी तक, निर्देशों ने काम किया है। :)
थॉमस वार्ड

2
यह पूरी तरह से काम करता है!
स्टेफानो पलाज़ो

उत्तर के लिए धन्यवाद, ajmitch, लेकिन सिर्फ इसलिए कि, मैं यह इंगित करने जा रहा हूं कि यदि आपके पास एक ~/.devscriptsफ़ाइल है और विशेष रूप से भक्ति की फाइल में उपयोग करने के लिए एक अलग GPG कुंजी को परिभाषित करता है, तो यह dpkg / debuild प्रक्रिया को पूरा करेगा और इसे में निर्दिष्ट विशिष्ट GPG कुंजी का उपयोग .devscriptsबस अपने जवाब में अंतिम वाक्य के लिए एक उल्लेखनीय बिंदु के रूप
थॉमस वार्ड

मैंने देखा कि पैकेजों को नीचे Depends:रखना स्थापना को अच्छा बनाता है अगर और केवल अगर पैकेज हैं; यदि वे मेरी मशीन पर नहीं हैं तो यह उन्हें स्थापित नहीं करता है। उन्हें स्थापित करने के लिए, मैंने Providesइसके बजाय उपयोग किया और यह एक आकर्षण की तरह काम करता है। मेरा कोड देखें (बस इसे बदल दिया): github.com/palladius/debian-packages/blob/master/…
रिकार्डो
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.