patchファイルの作成方法とpatchにlinuxパッチコマンドを添付する方法

4195 ワード

あるバージョンのLinuxカーネルを修正した後、他の人に公開したい場合は、このバージョンのpatchファイルを作成する必要があります.例えばLinux-2.6.25カーネルに基づいて修正を行い、修正後の内容をフォルダLinux-2.6.25-testの下に置くと、patchファイルを作成するコマンドは以下の通りです.
diff -uNr Linux-2.6.25 Linux-2.6.25-test > test.patch

この時testをpatchはネット上に公開され、他の人はこのファイルをダウンロードした後、標準のLinux-2.6.25カーネルで実行するだけです.
patch -p1 < ../test.patch

ここではtest.patchとLinux-2.6.25フォルダは同じディレクトリの下にあり、上記のコマンドはLinux-2.6.25フォルダ内で実行されます.
linux下patchコマンド使用詳細---linuxパッチ適用コマンド
機能説明:ファイルをパッチします.文法:patch[-bceEflnNRstTuvZ][-B<バックアップワード先頭文字列>][-d<作業ディレクトリ>][D<標識記号>][-F<監視列数>][-g<制御数値>][-i<パッチファイル>][-o<出力ファイル>][-p<剥離レベル>[-r<拒否ファイル>][-V<バックアップ方式>][-Y<バックアップワード先頭文字列>][-z<バックアップワード末尾文字列>][backup-if-mismatch][binary][--help][--nobackup-if-mismatch][--verbose][オリジナルファイル<パッチ>]またはpath[-p<剥離レベル>]<[パッチ]補足説明:patchコマンドは、ユーザにパッチを設定する方法で、元のファイルを修正し、更新させる.一度に1つのファイルのみを変更する場合は、コマンド列に直接コマンドを発行して順番に実行できます.パッチを組み合わせることで、大量のファイルを一度にパッチすることができます.これもLinuxシステムのコアのアップグレード方法の一つです.パラメータ:-bまたは--backupは、各元のファイルをバックアップします.-B<バックアップワード先頭文字列>または--prefix=<バックアップワード先頭文字列>ファイルバックアップを設定する場合、ファイル名の前に添付されるワード先頭文字列.この文字列はパス名であってもよい.-cまたは--contextは、パッチデータを関連性の違いに解釈する.-d<作業ディレクトリ>または--directory=<作業ディレクトリ>作業ディレクトリを設定します.-D<表示記号>または--ifdef=<表示記号>変更箇所を指定した記号で表示します.-eまたは--edは、パッチデータをed命令で使用可能な記述ファイルに解釈する.-Eまたは--remove-empty-filesパッチ後に出力されたファイルの内容が空白の場合、そのファイルを削除します.-fまたは--forceこのパラメータの効果は、-tパラメータの指定と似ていますが、パッチデータのバージョンが新しいバージョンであると仮定します.-F<監視列数>または--fuzz<監視列数>監視列数の最大値を設定します.-g<制御値>または--get=<制御値>設定は、RSCまたはSCCSでパッチジョブを制御します.-i<パッチ>または--input=<パッチ>指定したパッチを読み込みます.-lまたは--ignore-whitespaceは、パッチデータと入力データのジャンプ、スペース文字を無視します.-nまたは--normalはパッチデータを一般的な違いに解釈する.-Nまたは--forwardは、元のファイルのバージョンよりも古いパッチデータを無視するか、パッチデータが使用されています.-o<出力ファイル>または--output=<出力ファイル>出力ファイルの名前を設定します.パッチされたファイルはその名前で保存されます.-p<剥離レベル>または--strip=<剥離レベル>剥離するパス名を設定します.-f<拒否ファイル>または--reject-file=<拒否ファイル>は、パッチを拒否する関連情報を保存するファイル名を設定し、プリセットのファイル名は.rej.-Rまたは--reverseは、パッチデータが新しいファイル交換場所によって生成されると仮定する.-sまたは--quietまたは--silentは、エラーが発生しない限り、命令実行プロセスを表示しません.-tまたは--batchは自動的にエラーを省略し、質問をしません.-Tまたは--set-timeこのパラメータの効果は、指定した-Zパラメータと似ていますが、ローカル時間が主です.-uまたは--unifiedは、パッチデータを一致化の違いに解釈する.-vまたは--versionにバージョン情報が表示されます.-V<バックアップ方式>または--version-control=<バックアップ方式>ターゲットファイルを-bパラメータでバックアップすると、バックアップファイルの語尾にバックアップ文字列が追加されます.この文字列は-zパラメータで変更できるだけでなく、-Vパラメータを使用して異なるバックアップ方式を指定すると、語尾と異なるバックアップ文字列が生成されます.-Y<バックアップワード先頭文字列>または--basename-prefix=--<バックアップワード先頭文字列>ファイルバックアップを設定する場合、ファイルの基本名の先頭に付けるワード先頭文字列.-z<バックアップワードテール文字列>または-suffix=<バックアップワードテール文字列>このパラメータの効果は、パッチジョブで使用するパスとファイル名がsrc/linux/fs/superである場合とでは、指定-Bパラメータと同様である.c,backup/文字列を加えるとファイルsuper.cは/src/linux/fs/backupディレクトリにバックアップされます.-Zまたは--set-utcパッチされたファイルを変更し、アクセス時間をUTCに設定します.--backup-if-mismatchは、パッチデータが完全に一致せず、バックアップするファイルを意図的に指定していない場合にファイルをバックアップします.--binaryは標準出力装置を通さずにバイナリモードでデータを読み書きする.--helpオンラインヘルプ.--nobackup-if-mismatchは、パッチデータが完全に一致せず、バックアップするファイルを意図的に指定していない場合は、ファイルをバックアップしないでください.--verboseは、命令の実行手順を詳細に表示します.
patchは、パッチを適用するコマンドで、多くの使い方があります.ヘルプ#man patch-p 0(「p」はパスを指し、後ろの数字はパスのいくつかの部分を表します.0は、パスを削除しないことを表し、全パスです)patch-p 1(「p」の後ろの数字1は、前の最初のパスを削除することを表します)fetchhttp://people.freebsd.org/~delphij/misc/patch-bge-releng62 fetch http://people.freebsd.org/~delphij/misc/patch-bce-watchdog-rewritecd /sys/dev/bge  fetch ...  patch -p0 < ...fetch http://people.freebsd.org/~delphij/misc/patch-tcp_auto_buf-20061212-RELENG_6.diff patch -p < patch-tcp_auto_buf-20061212-RELENG_6.diffは、ファイル内のディレクトリをすべてシステムがすでに存在するディレクトリ、例えば/usr/src/sysに変更することもできます.....注意:1、ディレクトリを確認し、ディレクトリを確認します.デフォルトのディレクトリでなければ、パッチを適用する現在の絶対ディレクトリを書きます.例えば/usr/src/sys/dev/bge/if_bce.c 2,Pの使用には,数値を持たないパラメータを用いることができる.patch後のソフトウェアインストールtelnetdサーバの問題およびパッチは、現在のFreeBSDのすべてのバージョン、すなわち、FreeBSD 5.0、FreeBSD 4.3、FreeBSD 4.2、FreeBSD 4.1.1、FreeBSD 4.1、FreeBSD 4.0、FreeBSD 3である.x、FreeBSD 2.xのバージョンでは、telnetdデーモンに致命的なバッファオーバーフローホールが存在します.この問題は、telnetdがtelnetプロトコルオプションを処理する関数で有効な境界チェックを行っていないため、一部のオプション('AYS')を使用するとバッファオーバーフローが発生する可能性があります.これにより、リモートrootレベルのセキュリティ上の脅威が発生します.