ソフトウェアパッチを適用するにはどうすればよいですか?


回答:


21

コマンド.diffを使用してパッチが作成されるため、パッチは通常ファイルに含まれていますdiff

パッチは、ソースコードへの一連の挿入と削除です。このため、パッチを使用するには、パッチを適用した後にソースからアプリケーション(「foobar」など)をビルドする必要があります。したがって、次の手順で:

1. foob​​arのソースパッケージを取得します。

ほとんどのLinuxディストリビューション(nbパッチはLinuxに固有のものではありません)には、この目的に使用できる「ソースパッケージ」がありますが、これらは異種であるため、ここでは元のソースの形式のみを参照します。元のソースはディストリビューションの一部ではないため、見つけにくい場合があります。始めるのに適した場所はウィキペディアです。ウィキペディアには多くの一般的なアプリケーションの記事があり、記事にはソースダウンロードのあるホームページへのリンクが含まれている必要があります。もちろん、自分でグーグルで検索することもできます。ソースパッケージはのような名前になりますfoobar.0.1.tar.bz2。これを解凍します-これで、というディレクトリができましたfoobar.0.1

2.パッチを追加します。

パッチは単一のファイルである場合もあれば、複数のファイルのセットである場合もあります。それらをfoobar.0.1とにコピーしcd foobar.0.1ます。次に、patchコマンドを実行する必要があります。これは標準入力から読み取るため、.diffファイルをパイプで渡します。トリッキーな部分は、-pオプションに何を使用するかを決定することです(パッチに指示がない場合)。そのためには、パッチファイルの先頭を確認する必要があります。例えば:

--- old/comm.c  2003-09-08 14:25:08.000000000 +0000
+++ new/comm.c  2006-07-07 02:39:24.000000000 +0000

この場合、comm.cは、変更されるソースファイルの名前です。ただし、それにディレクトリが追加されていることに注意してください。これらは同じディレクトリ(「古い」と「新しい」)ではないため、これはパスのこの部分がジャンクであることを示す大きな手がかりです(目的のため)。-pスイッチの目的(を参照man patch)は、このプレフィックスを削除することです。数を取ります。これは、/削除するスラッシュ()の数で、その間にすべてがあります。この場合-p1、パスを単純なパスに減らすために使用しcomm.cます。

これcomm.cは実際には同じディレクトリにあると推測されます。これは、解釈が正しいかどうかの別の手がかりになります。これらの両方の行がsrc/comm.cで、comm.c実際にsrcビルドツリーのサブディレクトリにある場合は、使用する必要があります。-p0使用-pしない場合はすべてのスラッシュが削除されることに注意してください。パスが絶対パス(つまり、で始まる/)である場合は、おそらくこれが必要です。パッチを適用します:

patch -p1 < patch.diff

これでソースが変更されました。さらに.diffファイルがある場合は、同じ方法で適用します。

3.ビルドしてインストールします。

最初の-これは、ソースからビルド何かに通るでしょう、通常のプロセスであり./configure、その後、makemake checkmake install。最後の手順を実行する前に、の既存のインストールが既にある場合はfoobar、それを削除するか上書きするか、または名前の競合に対処する方法を決定します。おそらくfoobar、古いものではなく、新しいパッチが適用されたバージョンを参照する必要があります。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.