การใช้ Magento CE patches


15

ตามหน้าดาวน์โหลด Magento ภายใต้ส่วนแพตช์

โปรดอัปโหลดแพตช์ลงในไดเรกทอรีรากของวีโอไอพีของคุณและรันคำสั่ง SSH ที่เหมาะสม: สำหรับไฟล์แพตช์ที่มีนามสกุลไฟล์ `.sh: sh patch_file_name.sh ตัวอย่าง: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh

Magento แนะนำให้เรียกใช้shคำสั่งโดยตรงเพื่อเรียกใช้ตัวแก้ไขโปรแกรมแก้ไข นามสกุลของไฟล์.shนี้รองรับเช่นกัน

แต่ถ้าคุณมองไปที่ด้านบนของแต่ละไฟล์วิ่งแพทช์ที่จุดเส้น shebang bashไป

#!/bin/bash
# Patch apllying tool template
# v0.1.2
# (c) Copyright 2013. Magento Inc.
#

โปรแกรมเมอร์ในตัวผมต้องการที่จะไว้วางใจแฟ้มแหล่งที่มา แต่กระบวนการ wonk ต้องการที่จะทำตามสิ่งที่เขียนไว้ในเว็บไซต์วีโอไอพีมหัศจรรย์ถากถางถ้าแพทช์ได้รับการทดสอบกับความแตกต่างระหว่างการทุบตีและการดวลจุดโทษ


กระบวนการแก้ไขควรเป็นไฟล์. zip แบบง่ายๆ REQUIRED_UTILS='sed patch'ทั้งหมดที่ฉันเห็นใน.shสคริปต์ เอกสารการอัปเกรดสำหรับเวอร์ชันล่าสุดอ่านเช่นคำแนะนำแบบสเตอริโอและการอัพเกรดไม่ควรเจ็บปวดอย่างนี้
B00MER

2
ฉันเรียกโปรแกรมแก้ไข, chmod + x และเรียกใช้ (ฉันจะตรวจสอบเนื้อหาก่อน) แต่ฉันเรียกใช้ในเครื่อง (สำหรับ Mac ที่ใช้ dev) เพื่อให้ฉันสามารถคอมไพล์แบรนช์และคอมมิชชันให้กับสาขาทดสอบก่อนที่จะนำไปใช้ได้
Barry Carlyon

3
@ B00MER มันยากมาก ฉันเห็นด้วยเป็นการส่วนตัว แต่สำหรับคนที่มีความชำนาญด้านเทคโนโลยี แต่ไม่ใช่คนที่ไม่เข้าใจยูนิกซ์ที่ใช้แพทช์ด้วยตนเองดูเหมือนจะเป็นขั้นตอนที่ไกลเกินไป ฉันสามารถเข้าใจแรงจูงใจที่อยู่เบื้องหลังตัวติดตั้งแพทช์
Alan Storm

แค่คิดเรื่องนี้อีกครั้ง ตัวอย่างของ shebang lins อาจเป็น #! / bin / php และ sh ดำเนินการ "เพียงพอ" เพื่ออ่านบรรทัด shebang และส่งสคริปต์ไปยังโปรแกรม shebang'ed ในเรื่องของคู่มือการใช้งานแพทช์มี Git Diffs อยู่แล้วดังนั้นคุณสามารถ "ง่าย" ใช้ตัวคุณเอง แต่มีข้อโต้แย้งหรือไม่ที่ขอให้วีโอไอพีจัดหาไฟล์ซิปที่มีการเปลี่ยนแปลงให้เท่านั้นพร้อมกับ Patch (ซึ่งใช้ได้ดียกเว้นการแก้ไขคอร์)?
Barry Carlyon

อีกหนึ่งสิ่ง. การใช้นามสกุลไฟล์นอกเหนือจาก. txt อาจทำให้มีเหตุผลมากขึ้นสำหรับความเข้าใจน้อยลงเพื่อหลีกเลี่ยงการมีไฟล์ส่วนขยายลอยอยู่เกี่ยวกับระบบไฟล์ผู้ใช้ท้องถิ่น ฉันรู้สึกทุบตีและดื้อ ๆ
Barry Carlyon

คำตอบ:


8

คุณต้องใช้ bash จริง ๆ ในบรรทัดที่ 14 ของโปรแกรมแก้ไขที่คุณระบุอย่างชัดเจนคือรหัสนี้

if (( $? != 0 )); then

$((เป็นนิพจน์ทางคณิตศาสตร์ที่ถูกต้องใน XCU sh แต่((ไม่ใช่)

ในหลาย UNIX เหมือนแพลตฟอร์ม แต่/bin/shเป็นเพียง symlink /bin/bashไป เมื่อเรียกใช้ด้วยชื่อshbash จะปิดใช้งานพฤติกรรม POSIXly-unstrict บางส่วนของมัน แต่ไม่ใช่ทั้งหมด อาจเป็นไปได้ว่าแพทช์เหล่านี้จะทำงานได้ดีสำหรับการทุบตี bash ที่เรียกใช้


ในกรณีนี้สรรพากรสคริปต์ไม่ได้ทำงานภายใต้ sh และ sh กำลังถ่ายโอนข้อมูลไปยังโปรแกรมบรรทัด shebang ที่ระบุไว้หรือไม่
Barry Carlyon

ที่จริงเคอร์เนลมีหน้าที่รับผิดชอบในการตีความ Shebang หากคุณchmod +x script && ./scriptเคอร์เนลจะพยายามดำเนินการคำสั่งในบรรทัด shebang ด้วยไฟล์สคริปต์เป็นอาร์กิวเมนต์แรกหรืออาร์กิวเมนต์ที่สอง ไม่มีการรับประกันว่าเชลล์ใด ๆ ที่เกี่ยวข้องในทรีกระบวนการนั้นขึ้นอยู่กับสถานการณ์ หากคุณรันshด้วยสคริปต์เป็นอาร์กิวเมนต์ของมันบรรทัด shebang จะถูกละเว้น
kojiro

นั่นหมายความว่าฉันกำลังทำตามคำแนะนำของการแก้ไขที่ผิด ตามที่พวกเขาบอกว่าทำสคริปต์ sh แต่ฉันเพิ่งทำ. /script ว่าสนุก
Barry Carlyon

-2

ในกรณีที่มันช่วยใครบางคนในอนาคตฉันได้ใช้ Phpstorm เพื่อใช้แพทช์และเครื่องมือแก้ไขที่ยอดเยี่ยม ใช้เวลาน้อยกว่า 30 วินาทีในการใช้โปรแกรมแก้ไขโดยไม่มีปัญหาใด ๆ และคุณยังสามารถดูและทำตามความแตกต่างของไฟล์ที่มี

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