Застосування пластирів Magento CE


15

На сторінці завантаження Magento , в розділі з патчами

Завантажте патч у свою кореневу директорію 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.
#

Програміст в мені хоче довіряти вихідному файлу, але процес wink хоче підкорятися тому, що написано на веб-сайті Magento, цинік задається питанням, чи виправлено виправлення на відмінності між bash та sh .


Процес виправлення повинен бути таким же простим, як і .diff файли, зіткнуті вгору. REQUIRED_UTILS='sed patch'все, що я бачу в .shсценаріях. Документи з оновлення для останніх версій звучать як стерео інструкції, і оновлення не повинно бути настільки болючим.
B00MER

2
Я дещо сліпо дістаю патч, chmod + x і запускаю його. (Ну я перевіряю вміст спочатку), але я запускаю його локально (на базі Mac dev), щоб я міг git гілку і взяти на себе тестову гілку перед розгортанням.
Баррі Карліон

3
@ B00MER Це складно. Я погоджуюсь особисто, але для кмітливих, але не для Unix кмітливих людей вручну, застосовуючи патчі, здається, крок занадто далеко. Я можу зрозуміти мотивації, які стоять за установкою патчу.
Алан Шторм

Просто знову про це подумаю. Лінії shebang можуть бути, наприклад, #! / Bin / php, і sh виконує "достатньо", щоб прочитати рядок shebang та передати сценарій програмі shebang'ed. Що стосується посібника, що стосується посібника, патч все одно містить Git Diffs, тож ви можете легко «застосувати» себе. Але чи є аргумент, щоб попросити Magento надати поштовий індекс зі зміненими файлами лише поряд із Patch (що добре, крім редагувань Core)?
Баррі Карліон

Іще одне. Використання розширення файлу, окрім .txt, ймовірно, робить його більш логічним для менш кмітливих, щоб уникнути появи файлів без розширень, що плавають по файловій системі місцевих користувачів. Я відчуваю, що баш і ш взагалі взаємозамінні.
Баррі Карліон

Відповіді:


8

Насправді ви повинні використовувати bash. У рядку 14 патча, який ви явно вказали, є цей код:

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

$((є дійсним арифметичним виразом у XCU sh, але ((це не так.)

На багатьох платформах, схожих на UNIX, /bin/shце лише символьне посилання на /bin/bash. При посиланні на ім'я shbash відключає деякі його POSIXly-нестримні поведінки, але не всі. Цілком ймовірно, що ці патчі спрацюють нормально для bash, викликаного як sh.


У цьому випадку скрипт не виконується під sh, sh скидається на заявлену програму рядка shebang?
Баррі Карліон

Насправді ядро ​​відповідає за інтерпретацію шебангу. Якщо ви chmod +x script && ./scriptядро, то спробуєте виконати команду в рядку shebang з файлом скрипту в якості першого або другого аргументу. Залежно від обставин, немає гарантії, що будь-яка оболонка задіяна в цьому дереві процесу. Якщо ви виконаєте shзі своїм скриптом як аргумент, рядок shebang буде проігноровано.
kojiro

Отже, це означає, що я неправильно слідую інструкціям патчу. Як кажуть, роблю сценарій sh, але я просто роблю ./script Як кумедно
Баррі Карлйон

-2

У випадку, якщо це допоможе комусь у майбутньому, я застосував Phpstorm, щоб застосувати патч, і його інструмент для виправлення чудово. Щоб застосувати виправлення без проблем, потрібно менше 30 секунд, і ви також можете бачити та переглядати відмінності файлів.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.