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これをサポートしています。

ただし、各パッチランナーファイルの上部見ると、シェバン行はを指しbashます。

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

私のプログラマーはソースファイルを信頼したいのですが、プロセスはMagentoのWebサイトに書かれている内容に従うことを望んでいます。皮肉な人はパッチがbashとshの違いに対してテストされているかどうか疑問に思います。


パッチプロセスは、.diffファイルを圧縮するのと同じくらい簡単にする必要があります。スクリプトREQUIRED_UTILS='sed patch'に表示されるすべて.sh。最近のバージョンのアップグレードドキュメントはステレオの説明のようであり、アップグレードはそれほど苦痛ではありません。
B00MER 14年

2
パッチをやみくもにフェッチして、chmod + xを実行します。(内容を最初に確認します)が、ローカルで実行する(Macベースの開発)ので、展開する前にブランチをgitしてテストブランチにコミットできます。
バリーカーリヨン14年

3
@ B00MERそれはトリッキーです。個人的には同意しますが、技術に精通しているがUNIXに精通していない人にとっては、手動でパッチを適用するのはあまりにも一歩のように思えます。パッチインストーラの背後にある動機を理解できます。
アランストーム14年

もう一度考えてみてください。たとえば、シバンlinsは#!/ bin / phpであり、shは「十分」を実行して、シバン行を読み取り、スクリプトをシバングされたプログラムに渡します。とにかく手動で適用するというテーマでは、パッチにはGit Diffが含まれているため、自分で「簡単に」適用できます。しかし、Magentoに、変更されたファイルのみを含むzipを提供するように求めるパッチはありますか?
バリーカーリヨン14年

もう一つ。.txt以外のファイル拡張子を使用すると、あまり知識のない人にとってはより論理的になり、ローカルユーザーのファイルシステムに拡張子のないファイルが浮かんでしまうのを避けることができます。とにかくbashとshは互換性があると感じています。
バリーカーリヨン14年

回答:


8

実際にはbashを使用する必要があります。明示的に指摘したパッチの14行目には、次のコードがあります。

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

$((ある有効な算術式 XCUのSHで、しかし((ではありません。)

ただし、多くのUNIXライクなプラットフォームでは、/bin/shへの単なるシンボリックリンク/bin/bashです。name shで呼び出された場合、bashはPOSIXly-unstrict動作の一部を無効にしますが、すべてではありません。これらのパッチは、shとして起動されたbashで正常に機能する可能性があります。


この場合、スクリプトはshの下で実行されていません。shは指定されたshebang行プログラムにダンプしていますか?
バリーカーリヨン14年

実際、カーネルはシバンの解釈を担当します。あなたならばchmod +x script && ./script、カーネルは、その第一または第二引数としてスクリプトファイルとシェバング行でコマンドを実行しようとします。状況によっては、シェルがそのプロセスツリーに関与しているという保証はありません。shただし、スクリプトを引数として実行する場合、シバン行は無視されます。
小次郎14年

つまり、パッチの指示に間違っているということです。彼らはshスクリプトを実行すると言うけど、私はただ./script行う方法面白い
バリーカーライオン

-2

将来それが誰かを助ける場合、私はPhpstormを使用してパッチを適用しましたが、そのパッチツールは素晴らしいです。問題なくパッチを適用するのに30秒もかからず、ファイルの違いを確認して確認することもできます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.