كيفية تطبيق تصحيح على ملف (وإنشاء تصحيحات) في Linux
patch
يتيح لك أمر Linux نقل التغييرات من مجموعة واحدة من الملفات إلى مجموعة أخرى من الملفات بسرعة وأمان. تعلم كيفية استخدام patch
الطريقة البسيطة.
أوامر التصحيح والفرق
تخيل أن لديك ملفًا نصيًا على جهاز الكمبيوتر الخاص بك. تتلقى نسخة معدلة من هذا الملف النصي من شخص آخر. كيف تنقل جميع التغييرات بسرعة من الملف المعدل إلى ملفك الأصلي؟ هذا هو المكان patch
والدخول diff
في اللعب. patch
و diff
توجد في لينكس وغيرها من نظم التشغيل يونكس مثل، مثل ماك.
و diff
يتناول قيادة إصدارين مختلفين من ملف ويسرد الخلافات بينهما. يمكن تخزين الاختلافات في ملف يسمى ملف التصحيح.
و patch
القيادة يمكن قراءة ملف التصحيح واستخدام محتويات كمجموعة من التعليمات. باتباع هذه التعليمات ، يتم نسخ التغييرات في الملف المعدل في الملف الأصلي.
تخيل الآن أن هذه العملية تحدث لدليل كامل من الملفات النصية. الكل دفعة واحدة. هذه هي قوة patch
.
في بعض الأحيان لا يتم إرسال الملفات المعدلة إليك. كل ما يتم إرساله هو ملف التصحيح. لماذا ترسل عشرات الملفات بشكل دائري بينما يمكنك إرسال ملف واحد أو نشر ملف واحد للتنزيل بسهولة؟
ماذا تفعل بملف التصحيح لتصحيح ملفاتك بالفعل؟ بصرف النظر عن كونه مجرد لسان ، فهذا أيضًا سؤال جيد. سنرشدك خلال هذا المقال.
patch
غالبًا ما يستخدم هذا الأمر الأشخاص الذين يعملون مع ملفات التعليمات البرمجية المصدر للبرنامج ، ولكنه يعمل بشكل جيد مع أي مجموعة من الملفات النصية مهما كان الغرض منها ، أو كود المصدر أم لا.
ذات صلة: كيفية مقارنة ملفين نصيين في Linux Terminal
سيناريو المثال لدينا
في هذا السيناريو ، نحن في دليل يسمى work والذي يحتوي على دليلين آخرين. أحدهما يسمى العمل ، والآخر يسمى الأحدث . يحتوي دليل العمل على مجموعة من ملفات التعليمات البرمجية المصدر. يحتوي أحدث دليل على أحدث إصدار من ملفات التعليمات البرمجية المصدر هذه ، والتي تم تعديل بعضها.
لكي تكون بأمان ، فإن دليل العمل هو نسخة من الإصدار الحالي من الملفات النصية. إنها ليست النسخة الوحيدة منهم.
البحث عن الاختلافات بين نسختين من الملف
و diff
يجد الأمر الاختلافات بين الملفين. الإجراء الافتراضي الخاص به هو سرد الأسطر المعدلة في نافذة المحطة الطرفية.
ملف واحد يسمى slang.c
. سنقارن الإصدار الموجود في دليل العمل بالإصدار الموجود في أحدث دليل.
و -u
يقول خيار (موحدة) diff
لإدراج أيضا بعض خطوط النص المعدل للامم المتحدة من قبل وبعد كل الأقسام تغييرها. تسمى هذه الخطوط بخطوط السياق. فهي تساعد patch
الأمر في تحديد مكان التغيير بدقة في الملف الأصلي.
نقدم أسماء الملفات حتى diff
نعرف الملفات المطلوب مقارنتها. يتم سرد الملف الأصلي أولاً ، ثم الملف المعدل. هذا هو الأمر الذي نصدره إلى diff
:
فرق -u العمل / slang.c الأحدث / slang.c
diff
ينتج قائمة إخراج توضح الفروق بين الملفات. إذا كانت الملفات متطابقة ، فلن يكون هناك أي إخراج مدرج على الإطلاق. diff
تؤكد رؤية هذا النوع من المخرجات من وجود اختلافات بين إصداري الملف وأن الملف الأصلي يحتاج إلى تصحيح.
صنع ملف التصحيح
لالتقاط هذه الاختلافات في ملف التصحيح ، استخدم الأمر التالي. إنه نفس الأمر على النحو الوارد أعلاه ، مع diff
إعادة توجيه الإخراج إلى ملف يسمى slang.patch.
فرق -u العمل / slang.c latest / slang.c> slang.patch
اسم ملف التصحيح عشوائي. يمكنك تسميتها أي شيء تريده. إن إعطائها امتداد ".patch" فكرة جيدة ؛ ومع ذلك ، لأنه يوضح نوع الملف.
لجعل patch
العمل على ملف التصحيح وتعديل ملف العمل / slang.c، استخدم الأمر التالي. و -u
يتيح الخيار (الموحدة) patch
تعرف أن الملف التصحيح يحتوي على خطوط السياق موحدة. بمعنى آخر ، استخدمنا الخيار -u مع فرق ، لذلك نستخدم -u
الخيار مع patch
.
التصحيح -u working.slang.c -i slang.patch
إذا سارت الأمور على ما يرام ، فهناك سطر إخراج واحد يخبرك أنك patch
تقوم بتصحيح الملف.
عمل نسخة احتياطية من الملف الأصلي
يمكننا إصدار تعليمات patch
لعمل نسخة احتياطية من الملفات المصححة قبل تغييرها باستخدام -b
خيار (النسخ الاحتياطي). و -i
يقول الخيار (المدخلات) تصحيح اسم الملف التصحيح الاستخدام:
التصحيح -u -b working.slang.c -i slang.patch
تم تصحيح الملف كما كان من قبل ، مع عدم وجود فرق واضح في الإخراج. ومع ذلك ، إذا نظرت إلى مجلد العمل ، فسترى أن الملف المسمى slang.c.orig قد تم إنشاؤه. تُظهر طوابع التاريخ والوقت للملفات أن slang.c.orig هو الملف الأصلي وأن slang.c هو ملف جديد تم إنشاؤه بواسطة patch
.
استخدام فرق مع الدلائل
يمكننا استخدامها diff
لإنشاء ملف تصحيح يحتوي على جميع الاختلافات بين الملفات في دليلين. يمكننا بعد ذلك استخدام ملف التصحيح هذا patch
لتطبيق هذه الاختلافات على الملفات الموجودة في مجلد العمل باستخدام أمر واحد.
الخيارات التي سنستخدمها diff
هي خيار -u
(السياق الموحد) الذي استخدمناه سابقًا ، الخيار -r
(العودي) diff
للنظر في أي أدلة فرعية -N
وخيار (ملف جديد).
و -N
يقول خيار diff
كيفية التعامل مع الملفات في أحدث دليل ليست في دليل العمل. يفرض diff
وضع التعليمات في ملف التصحيح بحيث يتم إنشاء patch
الملفات الموجودة في أحدث دليل ولكنها مفقودة من دليل العمل.
يمكنك تجميع الخيارات معًا بحيث تستخدم واصلة واحدة ( -
).
لاحظ أننا نقدم أسماء الدلائل فقط ، ولا نطلب diff
النظر في ملفات معينة:
فرق - العمل / أحدث /> عامية
نظرة خاطفة داخل ملف التصحيح
دعونا نلقي نظرة سريعة على ملف التصحيح. سوف نستخدمها less
لإلقاء نظرة على محتوياتها.
يظهر الجزء العلوي من الملف الاختلافات بين نسختين من slang.c.
بالتمرير لأسفل خلال ملف التصحيح ، نرى أنه يصف التغييرات في ملف آخر يسمى Structs.h. هذا يتحقق من أن ملف التصحيح يحتوي بالتأكيد على الاختلافات بين الإصدارات المختلفة لملفات متعددة.
فكر قبل أن تثب
قد يكون تصحيح مجموعة كبيرة من الملفات مثيراً للقلق بعض الشيء ، لذلك سنستخدم --dry-run
الخيار للتحقق من أن كل شيء على ما يرام قبل أن نتحرك ونلتزم بإجراء التغييرات.
و --dry-run
يقول خيار patch
أن تفعل كل شيء وبصرف النظر عن تعديل في الواقع الملفات. patch
ستقوم بإجراء جميع عمليات الفحص قبل الرحلة على الملفات وإذا واجهت أي مشاكل ، فإنها تقوم بالإبلاغ عنها. في كلتا الحالتين ، لا يتم تعديل أي ملفات.
إذا لم يتم الإبلاغ عن أي مشاكل ، فيمكننا تكرار الأمر بدون --dry-run
الخيار وتصحيح ملفاتنا بثقة.
و -d
الخيار (دليل) اقول patch
التي الدليل إلى العمل على.
لاحظ أننا لا نستخدم -i
خيار (الإدخال) لتحديد patch
ملف التصحيح الذي يحتوي على التعليمات من diff
. بدلا من ذلك، نحن إعادة توجيه ملف التصحيح في patch
و <
.
تصحيح - تشغيل جاف - RUN - عمل <slang.patch
من الدليل بأكمله ، diff
تم العثور على ملفين للتصحيح. تم فحص التعليمات الخاصة بالتعديلات الخاصة بهذين الملفين بواسطة patch
، ولم يتم الإبلاغ عن أي مشاكل.
فحوصات ما قبل الرحلة جيدة ؛ نحن جاهزون للإقلاع.
ترقيع الدليل
لتطبيق التصحيحات بشكل حقيقي على الملفات ، نستخدم الأمر السابق بدون --dry-run
الخيار.
التصحيح -RUN -d العمل <slang.patch
هذه المرة لا يبدأ كل سطر من الإخراج بـ "التحقق" ، كل سطر يبدأ بـ "patching".
ولم يتم الإبلاغ عن أي مشاكل. يمكننا تجميع شفرة المصدر الخاصة بنا ، وسنكون على أحدث إصدار من البرنامج.
تسوية خلافاتك
هذه هي الطريقة الأسهل والأكثر أمانًا للاستخدام patch
. انسخ ملفاتك الهدف إلى مجلد وقم بتصحيح هذا المجلد. انسخها مرة أخرى عندما تكون سعيدًا لأن عملية التصحيح قد اكتملت بدون أخطاء.