IT pass HikiWiki - [ITPASS2010]patch コマンド Diff

  • Added parts are displayed like this.
  • Deleted parts are displayed like this.

{{toc_here}}

[((<ITPASSサーバ構築ドキュメント>)) へ戻る]

サーバ構築作業では, 設定ファイルを編集する機会がしばしばある. ここでは, そのような時に便利な patch コマンドについて紹介する.

== 概要

patch は, diff コマンドで生成された差分リストを含むパッチファイルを引数に取り, 1 個または複数のオリジナルファイルにこれらの差分を適用し, パッチの当たったバージョンを生成する. 通常, オリジナルファイルはパッチの当たったバージョンと置き換わる. 「パッチを当てる」とは, 古いファイルと差分データを参照しながら新しいファイルを作ることを指す.

== 使い方

パッチファイルを入手し,

$ patch < パッチファイル

とすると自動的にパッチ当て作業が行われる.

=== 使用例

((<"[ITPASS2010]apache2のインストールと設定#extra/httpd-userdir.conf の diff">)) を参考にして extra/httpd-userdir.conf を書き換える場合を考える.

まず, diff をコピーペーストしてパッチファイル (userdir.patch とする) を作成し, しかるべきディレクトリ (後述) に置く.

そして, 以下のように patch コマンドを実行すれば書き換えは完了である.

patch < userdir.patch

ただし, patch コマンドは diff 2 行目の "+++" から始まる行に書いてあるファイル名を参照して書き換えるため, その行に書いてある名前のファイルが存在しないディレクトリでは実行できない. そのため, パッチファイルを置いて patch コマンドを実行するディレクトリの選択には気を配る必要がある.

== 参考資料

(1) patch の man ページ

(2) ((<"UNIXの部屋 コマンド検索:patch (*BSD/Linux)"|URL:http://x68000.q-e-d.net/~68user/unix/pickup?patch>))