मेरे पास एक एप्लिकेशन foobar
है जिसके लिए किसी ने एक पैच लिखा है जो मुझे पसंद है। मैं पैच का उपयोग कैसे कर सकता हूं?
मेरे पास एक एप्लिकेशन foobar
है जिसके लिए किसी ने एक पैच लिखा है जो मुझे पसंद है। मैं पैच का उपयोग कैसे कर सकता हूं?
जवाबों:
पैच आमतौर पर .diff
फाइलों में समाहित होते हैं , क्योंकि diff
कमांड का उपयोग करके पैच बनाए जाते हैं ।
एक पैच स्रोत कोड में सम्मिलन और विलोपन की एक श्रृंखला है। इस कारण से, पैच का उपयोग करने के लिए, आपको पैच लगाने के बाद स्रोत से एप्लिकेशन (जैसे, "फोब्बर") का निर्माण करना होगा। तो, चरणों में:
1. फ़ॉबर के लिए स्रोत पैकेज प्राप्त करें ।
अधिकांश लिनक्स वितरण (नायब पैचिंग लाइनक्स के लिए अद्वितीय नहीं है) "स्रोत पैकेज" आपके पास इस उद्देश्य के लिए उपयोग कर सकते हैं, लेकिन चूंकि ये विषम हैं, इसलिए मैं केवल यहां मूल स्रोत के प्रारूप का उल्लेख करूंगा। मूल स्रोत डिस्ट्रो का हिस्सा नहीं है और इसे खोजना मुश्किल हो सकता है। शुरू करने के लिए एक अच्छी जगह विकिपीडिया है, जिसमें कई लोकप्रिय अनुप्रयोगों के लिए लेख हैं, और लेख में एक स्रोत डाउनलोड के साथ एक होमपेज का लिंक होना चाहिए। आप खुद भी google कर सकते हैं, जाहिर है। स्रोत पैकेज को कुछ इस तरह कहा जाएगा foobar.0.1.tar.bz2
। इसे अनपैक करें - आपके पास अब एक निर्देशिका है foobar.0.1
।
2. पैच जोड़ें।
कभी-कभी पैच एकल फाइलें होते हैं और कभी-कभी वे कई फाइलों का एक सेट होते हैं। उन में कॉपी foobar.0.1
और cd foobar.0.1
। अगला, आपको patch
कमांड चलाने की आवश्यकता है । यह मानक इनपुट से पढ़ता है, इसलिए आप .diff
फ़ाइल को पाइप में डालना चाहते हैं । मुश्किल हिस्सा यह निर्धारित कर रहा है कि -p
विकल्प के लिए क्या उपयोग करना है (यदि पैच के साथ कोई निर्देश नहीं हैं)। ऐसा करने के लिए आपको पैच फ़ाइल की शुरुआत को देखना होगा। उदाहरण के लिए:
--- old/comm.c 2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c 2006-07-07 02:39:24.000000000 +0000
इस स्थिति में, comm.c
स्रोत फ़ाइल का नाम है जिसे बदल दिया जाएगा। हालाँकि, ध्यान दें कि इसमें कोई निर्देशिका संलग्न है। चूंकि ये समान निर्देशिका ("पुराने" बनाम "नए") नहीं हैं, यह एक बड़ा सुराग है कि पथ का यह हिस्सा कबाड़ है (हमारे उद्देश्यों के लिए)। -p
स्विच का उद्देश्य (देखें man patch
) इस उपसर्ग को खत्म करना है। यह एक संख्या लेता है, जो कि स्लैश की संख्या है ( /
) को खत्म करने के लिए, बीच में सब कुछ के साथ; इस मामले में हम -p1
सिर्फ सादा रास्ता कम करने के लिए उपयोग करेंगे comm.c
।
वह अनुमान comm.c
वास्तव में उसी निर्देशिका में है, जो एक और सुराग होगा कि क्या आपकी व्याख्या सही है। यदि वे दोनों लाइनें थीं src/comm.c
, और comm.c
वास्तव में src
आपके बिल्ड ट्री के उपनिर्देशिका में हैं, तो आपको उपयोग करने की आवश्यकता है -p0
- सावधान रहें कि बिल्कुल भी उपयोग नहीं करना -p
सभी स्लैश को हटा देगा। यदि मार्ग निरपेक्ष है (यानी, के साथ शुरू होता है /
), तो शायद यही आप चाहते हैं। अब पैच लागू करें:
patch -p1 < patch.diff
स्रोत को अब संशोधित किया गया है। यदि अधिक .diff
फाइलें हैं, तो उसी तरह लागू करें।
3. निर्माण और स्थापित करें।
यह सामान्य प्रक्रिया आप स्रोत से निर्माण कुछ करने के लिए के माध्यम से जाना होता है - पहला ./configure
, तो make
, make check
, make install
। इससे पहले कि आप अंतिम एक करें, यदि आपके पास पहले से ही मौजूदा इंस्टॉलेशन है foobar
, तो तय करें कि क्या आप नामकरण संघर्ष से निपटना चाहते हैं या इसे हटाना चाहते हैं या आप कैसे हैं। आप शायद foobar
अपने नए, पैच किए गए संस्करण को संदर्भित करना चाहते हैं , और पुराने को नहीं।