מרחשוון

איך להחיל טלאי (patch) בוורדפרס (על לינוקס)

קורה לי מדי פעם בפעם שאני רוצה להחיל טלאי כדי לתקן משהו בוורדפרס, במקום לחכות לגרסה הרשמית של וורדפרס שבה התיקון יופיע. מאחר שזה קורה לעתים נדירות, אני לא מצליחה לזכור את רצף המשימות ולכן אני מתעדת לעצמי אותן כאן.

  1. בד”כ הטלאי יקושר מתוך טיקט ב-trac. למשל הטיקט הזה או הזה. לפעמים אפשר למצוא אותו באזור ה-attachments של הטיקט ולפעמים הוא מקושר מתוך אחת התגובות. צריך לקרוא בעיון את כל התכתובת כדי לדעת מה הטלאי המתאים.
  2. לוחצים על הקישור לטלאי, ובמסך שנפתח גוללים למטה לאזור ה-download, ובוחרים בקישור לקובץ עם סיומת diff, זה הקישור עם הטקסט Unified Diff.
  3. בשלב הזה, יש הבדל אם הטלאי מוחל רק על קובץ אחד, או על כמה. התהליך של קובץ אחד מתואר בסעיף 4, והתהליך של כמה קבצים מתואר בסעיף 5.
  4. אם הוא מוחל רק על קובץ אחד, התהליך מתואר בתשובה לשאלה ששאלתי ב-WPSE:
    1. את קובץ ה-diff שהורדנו אנחנו מעלים באמצעות FTP לתיקיה שבה נמצא הקובץ שעליו יוחל הטלאי. למשל, באחד המקרים הטלאי שהורדתי היה אמור לחול על comment-template.php, ששוכן ב-wp-includes. לכן העליתי את 17763.diff ל-mysite/wp-includes.
    2. מתחברים לשרת ב-putty ונכנסים לתיקייה שאליה העלינו את ה- diff – בדוגמה לעיל זאת תיקיית wp-includes.
    3. צריך לשים לב שבקובץ הטלאי, הכתובת של הקובץ שהטלאי מוחל עליו היא יחסית, ומתאימה להיררכיית הכתובות באתר שלנו. כשמדובר בסתם טלאי שמעלים זה בד”כ בסדר, אבל כשמדובר בטלאי שעלה במסגרת changeset, הכתובת מתחילה ב-/trunk/src/, מה שכמובן לא יעבוד אצלנו, ולכן צריך להוסיף לפקודת ה-patch פרמטר שאומר לו להתעלם מההתחלה הזאת. בסעיף 5 שבו תמתואר התהליך של החלה על כמה קבצים, יש הסבר איך לעשות את זה.
    4. מריצים את הפקודה הזו, וזה מוּחל!
      patch < 17763.diff
  5. אם הטלאי אמור לחול על כמה קבצים אז התיקייה שאליה מעלים היא שונה, וגם הפקודה שונה:
    1. את קובץ ה-diff שהורדנו, מעלים באמצעות FTP לתיקיית השורש של האתר שלנו.
    2. מתחברים לשרת ב-putty ונכנסים לתיקיית השורש הנ”ל.
    3. מריצים את פקודת patch עם הפרמטרים הבאים:
      1. אם בקובץ הטלאי, הכתובת של הקובץ שהטלאי מוחל עליו מתחילה ב-/trunk/src/, צריך להוסיף לפקודת ה-patch פרמטר שאומר לו להתעלם מההתחלה הזאת. הפרמטר הוא -p, ואחריו מספר. כמו שמוסבר כאן, המספר מייצג את מספר הלוכסנים שאנחנו רוצים שהפקודה תדלג עליהם. לכן אם הכתובת היא /trunk/src/wp-includes/css/editor.css, אנחנו רוצים שהפקודה תתחיל מ-wp-includes, מה שאומר לדלג על 3 לוכסנים, ולכן הפרמטר יהיה -p3.
      2. אנחנו נרצה גם ליצור גיבוי לקובץ לפני הטלאי, ולכן נוסיף את הפרמטר -b.
      3. כדי שהפקודה תדע לקרוא את המידע אודות הטלאי מהקובץ ולא מהקלט הסטנדרטי (standard input), נוסיף את הפרמטר -i.
      4. וזאת הפקודה השלמה:
         patch -b -p3 -i changeset_41643.diff

נסו ותהנו!

2 תגובות על “איך להחיל טלאי (patch) בוורדפרס (על לינוקס)

  1. אפשר לחסוך את העלאה ב־ftp (אני מאוד מקווה שאת מתכוונת ל־sftp) ולהוריד את הטלאי ישר עם wget.

    1. צודק, wget הרבה יותר אלגנטי. תודה!
      ובוודאי שהתכוונתי ל-sftp. אין בכלל אפשרות אחרת מבחינתי.

כתבו תגובה

כתובת הדוא"ל שלכם לא תוצג.