プロが教える店舗&オフィスのセキュリティ対策術

パッチの当て方について2つ教えてください。

cgi スクリプトに差分ファイル(abc.diff)を当てたいのですが、あてかたがわかりません。Windows XP ですが、ドスプロンプトであてるのでしょうか? それとも、パッチを当てるためのソフトをヴェクターなどでダウンロードしてそれを使うのでしょうか?


そもそも、どうしてdiff ファイルのみを配布するのでしょうか? パッチを当てるのは結構難しいことだと思いますが、どうして、パッチを当てたものを配布しないのでしょうか?

A 回答 (2件)

patchはWindows上で実行したことないので、はずしてるかも知れません。



cygwinはインストール時に特に指定しなければ、c:\cygwin配下にインストールされるはずなので、dirコマンドあたりで確認すればわかります。ただ、patchコマンドはデフォルトではインストールされず、Utils/patch(だと思う)を追加指定しないとインストールされません。

それと実行環境ですが、cmd.exe(コマンドプロンプト)じゃなくC:\cygwin\Cygwin.batを実行して、bash上で実行する方が確実だと思います。正常にpatchがあたれば以下のように表示されて、対象ファイルが更新され、元のファイルが*.origにリネームされてます。もし、*.rejというファイルが出来ていたら、パッチ当てに失敗しています。

(例です)
patch -p < ../cc.diff
Hmm... Looks like a unified diff to me...
The text leading up to this was:
--------------------------
|--- cc.c~ 2009-06-22 19:31:42.000000000 +0900
|+++ cc.c 2009-06-23 01:19:03.000000000 +0900
--------------------------
Patching file cc.c using Plan A...
Hunk #1 succeeded at 18.
Hunk #2 succeeded at 28.
Hunk #3 succeeded at 46.
Hunk #4 succeeded at 57.
done
    • good
    • 0

そのcgiファイルのあるディレクトリで、



patch -p < abc.diff

とします。対象がディレクトリ構造でも同じですが、diffファイルによっては追加オプションが必要なこともあるでしょう。

それからUnix系OSならほぼ標準でインストール済みですが、Windows系はcygwinが必要になります。patch自体はどのOSで当てても同じなので、cygwinのインストールが面倒ならLinuxマシンあたりで実行するのが簡単かもしれません。

この回答への補足

Unix系Windows系がよくわかりません。windows XPなのですが、cygwin は必要なのでしょうか? とちゅうまでやってみましたが、かなり複雑でまだインストールを終わっていません。自分のPCにcygwin がインストールされているかどうかを確かめる方法はありませんか?

補足日時:2009/07/03 00:20
    • good
    • 0
この回答へのお礼

回答ありがとうございました。
確認ですが、
patch -p < abc.diff
というのはドスプロンプトを起動して、そこに打つ(たたく、というのでしたっけ?)のですよね?

お礼日時:2009/07/03 00:11

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!