●カーネルの一部機能に変更を加えたい場合やバージョンアップを行いたい場合などに、必要なパッチを取得・適用。パッチとは特定のファイルに対する差分情報のことで、2つのファイル間の差異を出力する diff コマンドによって作成。
patch コマンドを使用してパッチファイルを適用(差分情報を使って内容を更新)。
patch コマンドでパッチの適用に失敗した場合は、適用できなかった差分情報が「該当ファイル.rej」というファイルに出力。
複数のパッチを扱う場合には、それらが両立できるものなのか、適用する順番に指定はないか注意する。複数のパッチが順序通り揃っている場合、これを一気に適用する「patch-kernel」というスクリプトが用意されている場合がある。
●patch コマンドの使い方の種類
■リダイレクトを使う
patch [オプション] < パッチファイル
■パイプを使う
cat パッチファイル | patch [オプション]
■patchの引数にすべて指定
patch [オプション] 対象 パッチファイル
※上二つの方法では現在の作業ディレクトリとパッチファイル内に書かれたパスから、パッチを当てる対象ファイルを自動的に判断するが、最後の方法ではパッチの対象ファイルを明示的に引数で指定している点に注意。
●オプションとして指定できるもの。-p0 や、-R が特に重要
・-pN (Nは階層[/]数)
-p0 パッチないのパスを修正しない
-p1 パッチ内のパスの先頭のスラッシュまでを取り除く
-pN パッチ内のパスのN階層のディレクトリを取り除く
・-d パッチ適用の際の作業ディレクトリを指定
・-R パッチを逆向きに適用し、変更を取り消し