जब वे उपलब्ध हो जाते हैं और पीपीए पर अपलोड करते हैं तो क्या उबंटु स्रोतों को स्वचालित रूप से पैच करने का एक आसान तरीका है?


9

मैं निम्नलिखित करने के लिए एक उपकरण की तलाश में हूँ:

  • स्रोत पैकेज (विशेषकर gtk + 2 और gtk + 3) के सेट पर स्वचालित रूप से अपडेट का पता लगाएं
  • स्रोत पैकेज डाउनलोड करें
  • स्रोत पर अपने स्वयं के कस्टम पैच लागू करें
  • पैच ठीक से ( dpkg-source --commit [something-or-other])
  • अगर सफल उन्हें लॉन्चपैड पर एक पीपीए में अपलोड करें (जो कि मैं अपने सिस्टम को सामान्य तरीके से इंगित कर सकता हूं)।

क्या लॉन्चपैड मेरे लिए वह सब कर सकता है?

यदि नहीं, तो क्या कोई ऐसा उपकरण है जो क्रोन जॉब से अपने आप हो जाएगा?

उपरोक्त को विफल करते हुए, मैं अपने आप से कुछ दस्तक दूंगा, लेकिन मुझे किन आदेशों की आवश्यकता है:

  • स्रोत पैकेज अपडेट का पता लगाएं और डाउनलोड करें? (मैं चाहूंगा कि कुछ ऐसा हो (bzr | git) प्रत्येक बार किसी नए स्रोत को प्राप्त करने के बजाय पुल करें)
  • ऑटो-पैच स्थानीय रूप से (मैं हर बार एक ही प्रतिबद्ध विवरण का उपयोग करूँगा)?
  • एक पीपीए के लिए गैर-संवादात्मक स्रोतों को अपलोड करें?

मुझे एक प्रश्न मिला है ( कस्टम पीपीए के लिए वाइन पैच करने का उचित तरीका क्या है? ), जो समान है लेकिन उत्तर में कदम अभी भी मूल रूप से मैनुअल और इंटरैक्टिव हैं। स्रोत अद्यतनों के उस प्लस ऑटोमैटिक डिटेक्शन का पूरी तरह से हैंड-ऑफ संस्करण बहुत मदद करेगा।

जवाबों:


2

खैर, यह लगता है कि पैकेजिंग व्यंजनों यहां जाने का तरीका है। मूल रूप से, पैकेजिंग रेसिपी स्वचालित रूप से उबंटू स्रोत पैकेज बना सकती है और जब भी लॉन्चपैड पर bzr ब्रांच बदलती है, तो उन्हें PPA पर अपलोड किया जा सकता है। ऑनलाइन प्रलेखन बहुत अच्छा है, लेकिन मैं कुछ उदाहरणों की दे देंगे ...

पहले, आप (उदाहरण के लिए lp:gtk3) ट्रैक करने के लिए एक शाखा निर्दिष्ट करते हैं और फिर उस शाखा में अपनी खुद की डेबियन पैकेजिंग शाखा को घोंसले में डालने के लिए एक कमांड जोड़ते हैं। इस रेसिपी पर एक नज़र डालें जो मैंने Inkscape की दैनिक बिल्ड के लिए बनाई थी।

# bzr-builder format 0.4 deb-version 1:0.48+devel+{revno}+{revno:packaging}
lp:inkscape
nest packaging lp:~inkscape.dev/inkscape/debian-packaging debian

यह नुस्खा प्रत्येक दिन इंकस्केप के लिए नवीनतम अपस्ट्रीम स्रोत का उपयोग करके एक उबंटू पैकेज बनाता है, लेकिन lp:~inkscape.dev/inkscape/debian-packagingशाखा से अनुकूलित डेबियन पैकेजिंग निर्देशों को " debian" नामक एक सबफ़ोल्डर में कॉपी करता है ।

लॉन्चपैड पर पैकेजिंग नुस्खा पृष्ठ आपको यह निर्दिष्ट करने की अनुमति देता है कि आपके पैकेज को स्वचालित रूप से अपलोड करने के लिए कौन सा पीपीए है। हमारे मामले में, यह यहाँ अपलोड किया गया है

एक वैकल्पिक दृष्टिकोण के रूप में, आप अपस्ट्रीम स्रोत पर सीधे बजाय मौजूदा उबंटू पैकेज पर अपने नुस्खा को आधार बना सकते हैं। उदाहरण के लिए, lp:ubuntu/gtk+3.0। फिर आपको इस कोड की एक शाखा बनाने की आवश्यकता होगी, और आपके द्वारा आवश्यक किसी भी संशोधन को करने की आवश्यकता होगी। lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-buildउदाहरण के लिए, इसे कहते हैं । आप तब नेस्ट पैकेजिंग निर्देशों के बजाय अपने परिवर्तनों को स्वचालित रूप से मर्ज करने के लिए एक नुस्खा बनाएंगे । नुस्खा कुछ इस तरह दिखेगा:

# bzr-builder format 0.4 deb-version {debversion}+{date}
lp:ubuntu/gtk+3.0
merge my-custom-build lp:~myaccount/ubuntu/saucy/gtk+3.0/my-custom-build

यह नुस्खा, इसलिए स्वचालित रूप से एक कस्टम उबंटू स्रोत पैकेज बनाता है और इसे अपने पीपीए में अपलोड करता है जब भी आधिकारिक उबंटू पैकेज में कोई बदलाव होता है।

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


लेकिन कौन सा gtk-3 संस्करण lp:ubuntu/gtk+3.0ट्रैक करता है ? वर्तमान स्थिर या वर्तमान विकास संस्करण?
खुर्शीद आलम
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.