この記事は会員限定です。会員登録すると全てご覧いただけます。
ソースコードのコンパイルでいろいろなソフトを利用していると、拡張子「patch」ファイルを目にすることがある。このファイルは、オリジナルファイルに、変更後差分を反映させるためのものだ。
パッチを作成するためには、ツール(コマンド)「diff」にてcontext、またはunified形式で書き出す必要がある。通常は、unified形式が利用される場合がほとんどだ。ここでもunified形式での例を挙げよう。
サンプルプログラムとして、Cのhello World表示プログラムを使う。オリジナルを「hallo world...」、改変後を「hello world...」の表示にしている。次がオリジナルソースファイルの例だ。
$ cat hello.c #include int main() { printf("hallo world...\n"); return 0; }
次の例が、上記のソースのスペルミス「a」→「e」に直しているリストだ。なお、同一ファイル名で作成するため、カレントに「mkdir patch」としてパッチファイル用のディレクトリを作成し、以下のファイルを用意した。
$ cat patch/hello.c #include int main() { printf("hello world...\n"); return 0; }
この2つのファイルを利用し、パッチファイルを作成する指定が次の通りだ。
$ diff -Naur hello.c patch/hello.c >hello.patch
上記の指定で作成されたファイル内容は次の通りだ。行頭「+」が記述されている個所が差分であることが分かる。
$ cat hello.patch --- hello.c Wed Oct 9 15:38:58 2002 +++ patch/hello.c Wed Oct 9 15:39:22 2002 @@ -1,6 +1,6 @@ #include int main() { - printf("hallo world...\n"); + printf("hello world...\n"); return 0; }
このファイル行頭に、次のように黄色文字行を付け加える。
$ vi hello.patch diff -Naur hello.c patch/hello.c --- hello.c Wed Oct 9 15:38:58 2002 +++ patch/hello.c Wed Oct 9 15:39:22 2002 @@ -1,6 +1,6 @@ #include int main() { - printf("hallo world...\n"); + printf("hello world...\n"); return 0; }
最後に、実際にパッチ実行が行えるかの確認だ。
$ patch -p1 patching file `hello.c' $ cat hello.c #include int main() { printf("hello world...\n"); return 0; }
Copyright © ITmedia, Inc. All Rights Reserved.