パッチに関する質問

パッチに関する質問

パッチファイルを作成しました。

diff -Naur src/bacula.h src/bacula.h.old

このようなファイルをください

--- src/bacula.h        2015-08-13 15:52:24 +0200
+++ src/bacula.h        2015-10-05 19:21:09 +0200
@@ -72,7 +72,7 @@
 #endif
 #if HAVE_UNISTD_H
 #  ifdef HAVE_HPUX_OS
-#  undef _INCLUDE_POSIX1C_SOURCE
+/*#  undef _INCLUDE_POSIX1C_SOURCE*/
 #  endif
 #include <unistd.h>
 #endif
@@ -95,6 +95,7 @@
 #if defined(_MSC_VER)
 extern "C" {
 #include "getopt.h"
+#include "fcntl.h"
 }
 #endif

パッチを使用するときに尋ねます。

can't find file to patch at input line 3
Perhaps you used the wrong -p or --strip option?
The text leading up to this was:
--------------------------
|--- src/bacula.h       2015-08-13 15:52:24 +0200
|+++ src/bacula.h       2015-10-05 19:21:09 +0200

尋ねずにsrc/bacula.hを自動的にパッチするにはどうすればよいですか?私は使う

patch -p1 < file.patch

答え1

コマンドは、patch -p1 file.patchパッチファイル内のファイル名を探します。あなたの場合は、-p1ファイル名のすべてのエントリを最初のエントリまで削除してください。したがって、このコマンドは現在のディレクトリにあると予想されます。/src/bacula.h

ちなみに、例として提供されたファイル名に何か非常に奇妙な点があります。一致せず、一致しないパッチファイルのファイル名も一致しません。次回は自由にタイピングするよりもコピーして貼り付けることを強くお勧めします。

答え2

解決策が見つかりました。フルパスを含める必要があります。例をご覧ください。

間違った!

--- src/bacula.h   2015-08-13 15:52:24 +0200
+++ src/bacula.h   2015-10-05 19:21:09 +0200

正しい!

--- bacula-7.0.5/src/bacula.h   2015-08-13 15:52:24 +0200
+++ bacula-7.0.5/src/bacula.h   2015-10-05 19:21:09 +0200

最初の不完全なパスを使用すると、パッチは機能しますが、毎回bacula.hへのパスを指定するように求められます。 2番目の正しいパスを使用すると、正常に動作し、patch -p1 < patchfileパスを要求しません。

関連情報