Áp dụng bản vá lỗi Magento CE


15

Theo trang tải xuống Magento , dưới phần bản vá

Vui lòng tải bản vá vào thư mục gốc Magento của bạn và chạy lệnh SSH thích hợp: Đối với các tệp vá có phần mở rộng tệp `.sh: sh patch_file_name.sh Ví dụ: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh

Magento đề xuất một shlệnh gọi trực tiếp để chạy lệnh chạy của họ. Phần mở rộng tập tin .shhỗ trợ này là tốt.

Tuy nhiên, nếu bạn nhìn vào đầu của mỗi tệp chạy vá , dòng shebang trỏ đến bash.

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

Lập trình viên trong tôi muốn tin tưởng vào tệp nguồn, nhưng quá trình wonk muốn tuân theo những gì được viết trên trang web Magento, người ta tự hỏi liệu bản vá đã được kiểm tra chống lại sự khác biệt giữa bash và sh .


Quá trình vá phải đơn giản như các tệp .diff được nén. REQUIRED_UTILS='sed patch'tất cả những gì tôi thấy trong các .shkịch bản. Các tài liệu nâng cấp cho các phiên bản gần đây đọc như hướng dẫn âm thanh nổi và nâng cấp không nên gây đau đớn.
B00mer

2
Tôi hơi mù quáng lấy bản vá, chmod + x và chạy nó. (Vâng, tôi kiểm tra nội dung trước) nhưng tôi chạy nó cục bộ (Mac dựa trên dev) để tôi có thể git nhánh và cam kết với nhánh thử nghiệm trước khi triển khai.
Barry Carlyon

3
@ B00mer Điều đó thật khó khăn. Tôi đồng ý cá nhân, nhưng đối với những người am hiểu về công nghệ nhưng không phải là người không hiểu biết thì việc áp dụng các bản vá có vẻ như là một bước đi quá xa. Tôi có thể hiểu những động lực đằng sau một trình cài đặt bản vá.
Alan Storm

Chỉ cần nghĩ về điều này một lần nữa. Ví dụ, các shebang có thể là #! / Bin / php và, sh thực thi "đủ" để đọc dòng shebang và chuyển tập lệnh đến chương trình shebang'ed. Về chủ đề áp dụng thủ công, bản vá có chứa Git Diffs, vì vậy bạn có thể "dễ dàng" tự áp dụng. Nhưng, có một đối số để yêu cầu Magento chỉ cung cấp một zip với các tệp đã thay đổi, cùng với một Patch (điều này tốt ngoại trừ các chỉnh sửa Core)?
Barry Carlyon

Một điều nữa. Việc sử dụng một phần mở rộng tệp, ngoại trừ .txt có thể làm cho nó hợp lý hơn đối với những người ít hiểu biết hơn, để tránh việc các tệp mở rộng trôi nổi về hệ thống tệp người dùng cục bộ. Tôi cảm thấy bash và sh có thể hoán đổi cho nhau.
Barry Carlyon

Câu trả lời:


8

Bạn phải sử dụng bash, thực sự. Trên dòng 14 của bản vá bạn chỉ ra rõ ràng là mã này:

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

$((biểu thức số học hợp lệ trong XCU sh, nhưng ((không phải.)

Tuy nhiên, trên nhiều nền tảng giống như UNIX, /bin/shchỉ là một liên kết tượng trưng /bin/bash. Khi được gọi với tên sh, bash sẽ vô hiệu hóa một số hành vi không hạn chế POSIXly của nó, nhưng không phải tất cả. Có khả năng các bản vá này sẽ hoạt động tốt đối với bash được gọi là sh.


Trong trường hợp này tho, tập lệnh không được thực thi theo sh, sh có được chuyển sang chương trình dòng shebang đã nêu không?
Barry Carlyon

Trên thực tế, kernel chịu trách nhiệm phiên dịch shebang. Nếu chmod +x script && ./scripthạt nhân của bạn sẽ cố gắng thực thi lệnh trong dòng shebang với tệp script là đối số thứ nhất hoặc thứ hai. Tùy thuộc vào hoàn cảnh, không có gì đảm bảo rằng bất kỳ vỏ nào có liên quan đến cây quy trình đó. shTuy nhiên, nếu bạn thực thi với một tập lệnh làm đối số của nó, dòng shebang sẽ bị bỏ qua.
kojiro

Vì vậy, điều đó có nghĩa là tôi đang làm theo các hướng dẫn vá sai. Khi họ nói làm kịch bản sh nhưng tôi chỉ làm ./script Thật thú vị
Barry Carlyon

-2

Trong trường hợp nó giúp được ai đó trong tương lai, tôi đã sử dụng Phpstorm để áp dụng bản vá và công cụ vá của nó rất tuyệt. Chỉ mất chưa đến 30 giây để áp dụng bản vá mà không có bất kỳ vấn đề nào và bạn cũng có thể thấy và xem qua sự khác biệt của các tệp.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.