Linux下Patch補丁的生成與打補丁命令
阿新 • • 發佈:2019-01-01
之前在公司做專案的時候用到了在linux打補丁的技術(呵呵,其實也不是什麼技術說大了就是一條命令),感覺這個還是挺有用的,因為很多原廠都是給出原始碼基礎或是他們修改基礎上的補丁包都我們,讓我們自己打上去來更新一些程式碼的功能的。
1、要打補丁的檔案必須是未做任何修改的(這個可以開啟補丁檔案看一下刪除的檔案的日期是否和我們要打補丁的檔案一樣就可以了)。我之前就是因為修改了廠商給的原始碼所以打補丁的時間打不進去,會出錯,後來找資料才明白不能改打補丁前的檔案。
2、還有一個就是有的補丁要一個一個的打,那是補丁做成這樣的,一般廠商給說明是否需要一個一個的打,還直接打最後一個版本的就OK了,但我認為一個一個的打的補丁要嚴謹些,因為它的每一個補丁表示了一次功能性的修改,這樣每次都可以驗證補丁的正確性了。
命令:diff -Naur 路徑1/file_old檔案 路徑2/file_new檔案 > xxx.patch檔案
注:xxx.patch檔案就是新舊檔案生成的補丁檔案,路徑2最好是修改檔案的當前路徑這樣打補丁的時候就把補丁檔案放到要打補丁檔案所在目錄下一起打,file_new檔案最好儲存下來以便打補丁者打不上或者打錯的時間對比下那裡沒有打上。
命令:patch -bp1 < xxx.patch
注:把xxx.patch和要打補丁的檔案放到一起到要打補丁檔案 目錄下執行上述命令會把補丁打進去更新現有檔案,由於加入了引數-b所以還有生成一個.org字尾的檔案它是打補丁前的原始檔,確定打好了可以刪除之。
命令:patch -Rp1 < xxx.patch
注:執行它也是在打完xxx.patch的補丁的檔案的基礎上執行。
一、打補丁最需要注意有以下兩點:
1、要打補丁的檔案必須是未做任何修改的(這個可以開啟補丁檔案看一下刪除的檔案的日期是否和我們要打補丁的檔案一樣就可以了)。我之前就是因為修改了廠商給的原始碼所以打補丁的時間打不進去,會出錯,後來找資料才明白不能改打補丁前的檔案。
2、還有一個就是有的補丁要一個一個的打,那是補丁做成這樣的,一般廠商給說明是否需要一個一個的打,還直接打最後一個版本的就OK了,但我認為一個一個的打的補丁要嚴謹些,因為它的每一個補丁表示了一次功能性的修改,這樣每次都可以驗證補丁的正確性了。
二、生成補丁(針對於釋出補丁檔案的人)
命令:diff -Naur 路徑1/file_old檔案 路徑2/file_new檔案 > xxx.patch檔案
注:xxx.patch檔案就是新舊檔案生成的補丁檔案,路徑2最好是修改檔案的當前路徑這樣打補丁的時候就把補丁檔案放到要打補丁檔案所在目錄下一起打,file_new檔案最好儲存下來以便打補丁者打不上或者打錯的時間對比下那裡沒有打上。
三、打補丁(針對於打補丁的人)
命令:patch -bp1 < xxx.patch
注:把xxx.patch和要打補丁的檔案放到一起到要打補丁檔案 目錄下執行上述命令會把補丁打進去更新現有檔案,由於加入了引數-b所以還有生成一個.org字尾的檔案它是打補丁前的原始檔,確定打好了可以刪除之。
四、撤銷打的補丁(針對打補丁的人)
命令:patch -Rp1 < xxx.patch
注:執行它也是在打完xxx.patch的補丁的檔案的基礎上執行。