ソフトウェアパッチを適用する方法は?

ソフトウェアパッチを適用する方法は?

foobar私のお気に入りの機能を追加するために誰かがパッチを書いたアプリケーションがあります。このパッチをどのように使用しますか?

ベストアンサー1

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

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

1. ソースコードパッケージの入手プヴァ

ほとんどのLinuxディストリビューション(パッチングはLinuxにのみ適用されるわけではありません)にはこの目的に使用できる「ソースパッケージ」がありますが、これらのディストリビューションは異機種なので、ここでは生のソースコードの形式だけを言及します。ソースソースはディストリビューションの一部ではないため、見つけるのが難しい場合があります。始めるのに良い場所はウィキペディアです。これには多くの一般的なアプリケーションに関する記事が含まれており、記事にはソースダウンロードを含むホームページへのリンクが含まれている必要があります。もちろん、Googleで直接検索することもできます。解凍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これは、ソースコードから何かをビルドするときに最初に、それからmake実行する一般的なプロセスですmake checkmake install最後の操作を実行する前にすでにインストールされている場合は、foobar削除または上書きするか、名前の競合を処理する方法を決定します。foobar以前のバージョンではなく新しいパッチバージョンを参照することをお勧めします。

おすすめ記事