Patch
關於更新檔的問題
我做了一個更新檔文件
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
找到解決方案,您必須包含完整路徑,請參見範例
錯誤的!
--- 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 的路徑,第二個正確,
patch -p1 < patchfile
工作正常並且不要求路徑
您的命令
patch -p1 file.patch
在更新檔文件中查找文件名。刪除文件名中的-p1
所有內容,直到第一個/
;在你的情況下,這是領先的src/
。因此,該命令希望bacula.h
在您的目前目錄中找到。順便說一句,您作為範例提供的文件名有些奇怪。它們不匹配,並且更新檔文件中的文件名不應該匹配,這樣做。我強烈建議您下次複製和粘貼時不要隨意輸入。