Applicazione di patch Magento CE


15

Per la pagina di download di Magento , nella sezione patch

Caricare la patch nella directory principale di Magento ed eseguire il comando SSH appropriato: Per i file di patch con estensione `.sh: sh patch_file_name.sh Esempio: sh PATCH_SUPEE-1868_CE_1.7.0.2_v1.sh

Magento consiglia un'invocazione diretta del shcomando per eseguire il loro patch runner. L'estensione del file .shsupporta anche questo.

Tuttavia, se guardi all'inizio di ogni file del corridore patch , la linea shebang punta a bash.

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

Il programmatore in me vuole fidarsi del file sorgente, ma il processo che wink vuole obbedire a ciò che è scritto sul sito Web Magento, il cinico si chiede se la patch sia stata testata rispetto alle differenze tra bash e sh .


Il processo di patch dovrebbe essere semplice come i file .diff compressi. REQUIRED_UTILS='sed patch'tutto ciò che vedo negli .shscript. I documenti di aggiornamento per le versioni recenti recitano come istruzioni stereo e l'aggiornamento non dovrebbe essere così doloroso.
B00MER,

2
Prendo un po 'alla cieca la patch, chmod + x ed eseguo. (Beh, prima controllo i contenuti) ma lo eseguo localmente (sviluppatore basato su Mac) in modo da poter git branch e impegnarmi in un ramo di test prima di distribuire.
Barry Carlyon,

3
@ B00MER È difficile. Sono d'accordo personalmente, ma per gli esperti di tecnologia ma non per le persone esperte unix l'applicazione manuale di patch sembra un passo troppo avanti. Riesco a capire le motivazioni alla base di un installatore di patch.
Alan Storm,

Sto solo pensando a questo di nuovo. I lins di shebang potrebbero essere #! / Bin / php per esempio e, sh esegue "abbastanza" per leggere la riga di shebang e passare lo script al programma di shebang. Per quanto riguarda il manuale, la patch contiene comunque Git Diffs, quindi puoi "facilmente" applicarti. Ma c'è un argomento per chiedere a Magento di fornire una zip con solo i file modificati, insieme a una Patch (che va bene tranne le modifiche Core)?
Barry Carlyon,

Un'altra cosa. L'uso di un'estensione di file, diversa da .txt, probabilmente rende più logico per i meno esperti, evitare di avere file senza estensione fluttuanti nel file system degli utenti locali. Sento che bash e sh sono comunque intercambiabili.
Barry Carlyon,

Risposte:


8

Devi usare bash, in realtà. Alla riga 14 della patch che hai esplicitamente sottolineato è questo codice:

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

$((è un'espressione aritmetica valida in XCU sh, ma ((non lo è.)

Su molte piattaforme simili a UNIX, tuttavia, /bin/shè solo un collegamento simbolico a /bin/bash. Quando viene invocato con il nome sh, bash disabilita alcuni dei suoi comportamenti POSIX senza restrizioni, ma non tutti. È probabile che queste patch funzionino bene per bash invocato come sh.


In questo caso, tuttavia, lo script non viene eseguito in sh, sh viene scaricato nel programma di linea shebang indicato?
Barry Carlyon,

In realtà il kernel è responsabile dell'interpretazione dello shebang. Se chmod +x script && ./scriptil kernel tenterà di eseguire il comando nella riga shebang con il file di script come primo o secondo argomento. A seconda delle circostanze, non esiste alcuna garanzia che una shell sia coinvolta in quell'albero del processo. Se esegui shuno script come argomento, tuttavia, la riga shebang verrà ignorata.
Kojiro,

Ciò significa che sto seguendo le istruzioni della patch in modo errato. Come si suol dire sh script ma io lo faccio ./script Quanto è divertente
Barry Carlyon,

-2

Nel caso in cui aiuti qualcuno in futuro, ho usato Phpstorm per applicare patch e il suo strumento patch è fantastico. Ci sono voluti meno di 30 secondi per applicare la patch senza problemi e puoi anche vedere e passare attraverso le differenze che hanno i file.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.