पैच (यूनिक्स)

कंप्यूटर टूल पैच (patch) एक यूनिक्स कंप्यूटर प्रोग्राम है जो टेक्स्ट फ़ाइल को एक अलग फ़ाइल में निहित निर्देशों के अनुसार अद्यतन करता है, जिसे पैच फ़ाइल कहा जाता है। पैच फ़ाइल (संक्षेप में पैच भी कहा जाता है) एक टेक्स्ट फ़ाइल है जिसमें अंतर (ओं) की एक सूची होती है और मूल और अद्यतन फ़ाइल के साथ संबंधित अंतर प्रोग्राम को तर्क के रूप में चलाकर तैयार किया जाता है। पैच के साथ फ़ाइल को अपडेट करने को प्रायः पैच लगाना या बस फ़ाइल को पैच करना कहा जाता है।

इतिहास
मूल पैच प्रोग्राम लैरी वॉल (जिन्होंने पर्ल प्रोग्रामिंग भाषा बनाई) द्वारा लिखा गया था और पोस्ट किया गया था (जो बाद में बन गया  ) मई 1985 में.

पैच को XPG4 में जोड़ा गया, जो बाद में POSIX बन गया। वॉल का कोड ओपनबीएसडी (OpenBSD) में प्रदान किए गए पैच प्रोग्राम का आधार बना हुआ है, फ्रीबीएसडी, और schilytools. कहा जाता है कि ओपन सॉफ्टवेयर फाउंडेशन, ओपन ग्रुप  में विलय हो गया है, ने एक व्युत्पन्न संस्करण बनाए रखा है।

जीएनयू प्रोजेक्ट/फ्री सॉफ्टवेयर फाउंडेशन लैरी वॉल संस्करण से लिए गए अपने पैच का रखरखाव करता है। रिपॉजिटरी जीएनयू डिफ्यूटिल्स से अलग है, लेकिन दस्तावेज़ीकरण को एक साथ प्रबंधित किया जाता है।

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

यहां वर्णित पैच को पैच (कंप्यूटिंग) के साथ भ्रमित नहीं किया जाना चाहिए, जो कि वैचारिक रूप से समान हो सकता है, प्रोग्राम में सम्मिलित बाइनरी फ़ाइलों को एक नई रिलीज में अपडेट करने के लिए वितरित किया जाता है।

सॉफ़्टवेयर विकास में पैच
पैच में इनपुट के रूप में काम करने वाली भिन्न फ़ाइलें पढ़ने योग्य टेक्स्ट फ़ाइलें हैं, जिसका अर्थ है कि उपयोग से पहले मनुष्यों द्वारा उनकी आसानी से समीक्षा या संशोधित की जा सकती है।

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

पैच कंकररेंट वर्सन सिस्टम (समवर्ती संस्करण प्रणाली) सहित कई स्रोत नियंत्रण प्रणालियों का महत्वपूर्ण घटक रहा है।

उन्नत अंतर
जब अधिक उन्नत अंतर का उपयोग किया जाता है, तो पैच को उन फ़ाइलों पर भी लागू किया जा सकता है जिन्हें इस बीच संशोधित किया गया है, जब तक कि वे संशोधन पैच में हस्तक्षेप नहीं करते हैं। इसे डिफ कॉन्टेक्स्ट (diff Context) प्रारूप और डिफ यूनिफाइड (diff#Unified) प्रारूप (जिसे unidiffs/यूनिडिफ के रूप में भी जाना जाता है) का उपयोग करके प्राप्त किया जाता है, जो प्रत्येक परिवर्तन को संदर्भ से घेरता है, जो बदले हुए भाग के ठीक पहले और बाद का पाठ है। पैच इस संदर्भ का उपयोग पैच किए जाने वाले क्षेत्र का पता लगाने के लिए कर सकता है, भले ही इसे फ़ाइल में पहले के परिवर्तनों से विस्थापित किया गया हो, प्रारंभिक बिंदु के रूप में अंतर में पंक्ति संख्याओं का उपयोग करके। इस संपत्ति के कारण, संदर्भ और एकीकृत अंतर कई सॉफ्टवेयर परियोजनाओं को प्रस्तुत करने के लिए पैच का पसंदीदा रूप हैं।

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

उपयोग उदाहरण
पैच बनाने के लिए, कोई शेल में निम्नलिखित कमांड चला सकता है: पैच लागू करने के लिए, कोई शेल में निम्नलिखित कमांड चला सकता है:

यह पैच को वर्णित निर्दिष्ट फ़ाइलों में परिवर्तन लागू करने के लिए कहता है. उपनिर्देशिकाओं में फ़ाइलों के पैच के लिए अतिरिक्त की आवश्यकता होती है  विकल्प, जहां संख्या 1 है यदि ओपन ट्री की आधार निर्देशिका को अंतर में सम्मिलित किया गया है, और अन्यथा 0 है।

पैच को 'के साथ पूर्ववत या उलटा किया जा सकता है' ' विकल्प:

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

पैच के पोर्ट
मूल रूप से यूनिक्स और यूनिक्स जैसी प्रणालियों के लिए लिखे गए पैच को माइक्रोसॉफ़्ट विंडोज़  और कई अन्य प्लेटफार्मों पर भी पोर्ट किया गया है। पैच के विंडोज़ पोर्ट GnuWin32 और UnxUtils द्वारा प्रदान किए जाते हैं।

एक  कमांड MSX-DOS संस्करण 2 के लिए ASCII कॉर्पोरेशन के MSX-DOS2 टूल्स का भी हिस्सा है।

यह भी देखें

 * पैच (कंप्यूटिंग)
 * क्विल्ट (सॉफ्टवेयर)
 * आरसिंक
 * एक्सडेल्टा (xdelta)
 * यूनिक्स कमांड की सूची
 * आईबीएम मेनफ्रेम यूटिलिटी प्रोग्राम आईईबीयूपीडीटीई (IEBUPDTE) एक मेनफ्रेम पैच प्रोग्राम है, जो लगभग 20 साल पहले (लगभग ~1964) बनाया गया था।

बाहरी संबंध

 * GNU Diffutils (includes diff and patch); Documentation
 * GNU tools for Win32 – Win32 port of tools, including diff and patch