ฉันจะใช้ซอฟต์แวร์แก้ไขได้อย่างไร


15

ฉันมีแอปพลิเคชันfoobarที่มีคนเขียนแพทช์เพื่อเพิ่มคุณสมบัติที่ฉันชอบ ฉันจะใช้ตัวแก้ไขได้อย่างไร

คำตอบ:


21

แพตช์มักจะมีอยู่ใน.diffไฟล์เพราะแพทช์ถูกสร้างขึ้นโดยใช้diffคำสั่ง

โปรแกรมแก้ไขคือชุดของการแทรกและการลบลงในซอร์สโค้ด ด้วยเหตุนี้ในการใช้โปรแกรมแก้ไขคุณต้องสร้างแอปพลิเคชัน (เช่น "foobar") จากแหล่งที่มาหลังจากใช้โปรแกรมแก้ไข ดังนั้นในขั้นตอน:

1. ได้รับแพคเกจที่มาสำหรับfoobar

การแจกแจงลินุกซ์ส่วนใหญ่ (การแพตช์ nb ไม่ได้เป็นเอกสิทธิ์ของลินุกซ์) มี "แพ็คเกจแพกเกจ" ที่คุณสามารถใช้เพื่อจุดประสงค์นี้ได้ แต่เนื่องจากสิ่งเหล่านี้มีความแตกต่างกันฉันจะอ้างอิงเฉพาะ แหล่งดั้งเดิมไม่ได้เป็นส่วนหนึ่งของ distro และอาจหายาก จุดเริ่มต้นที่ดีคือวิกิพีเดียซึ่งมีบทความสำหรับแอปพลิเคชันยอดนิยมมากมายและบทความควรมีลิงค์ไปยังหน้าแรกที่มีแหล่งดาวน์โหลด คุณยังสามารถ 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) คือการกำจัดส่วนนำหน้านี้ ใช้จำนวนซึ่งเป็นจำนวนเครื่องหมายทับ ( /) เพื่อกำจัดพร้อมทุกสิ่งในระหว่าง ในกรณีนี้เราจะใช้เพื่อลดเส้นทางที่จะเพียงแค่ธรรมดา-p1comm.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อ้างถึงเวอร์ชันใหม่ที่ได้รับการแพตช์แล้วไม่ใช่เวอร์ชันเก่า

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.