給檔案打補丁

2022-07-09 21:39:10 字數 1733 閱讀 6997

一、 給linux核心打補丁

給linux核心打補丁首先要明白每個新版本的補丁都是基於某個穩定版做的,所以我們先要理解linux核心的版本號代表的意思:

linux核心版本有兩種:穩定版和開發版 ,linux核心版本號由3組數字組成:第乙個組數字.第二組數字.第三組數字

第乙個組數字:目前發布的核心主版本。

第二個組數字:偶數表示穩定版本;奇數表示開發中版本。

第三個組數字:錯誤修補的次數。

例如我的電腦的核心版本為2.6.32-38,代表的意思就是主版本為2,是穩定版本,第32次修改,38代表的是當前版本的第38次微調patch。

假設我已經在核心的目錄中。補丁放在核心目錄。

xzcat patch-2.6.32.38.xz | patch -p0 -r #回退到2.6.32

xzcat patch-2.6.32.39.xz | patch -p0    #公升級到2.6.32.39

如果我要公升級到2.6.33版本呢?一樣的,先要回退大都2.6.32版本,然後從2.6.32公升級到2.6.33版本,方法和前面一樣。

二、 製作自己的補丁檔案

準備乙個舊檔案macro.c,它的內容如下:

#include struct

test

;struct

test p;

#define inc(rq, field) do while (0)

int main(void

)

準備乙個新檔案macro_new.c,它的內容如下:

#include struct

test

;struct

test p;

#define inc(rq, field) do while (0)

int main(void

)

製作補丁檔案:

diff -up macro.c macro_new.c > patch-macro-2013-10-30

製作的patch-macro-2013-10-30補丁檔案內容為:

1 --- macro.c     2013-10-30

17:29:44.594212235 +0800

2 +++ macro_new.c 2013-10-30

18:33:49.164108493 +0800

3 @@ -20,6 +20,6 @@ int main(void

)4 pp->a = pp->b = 0;5

inc(pp, a);

6inc(pp, b);

7 - std::cout << pp->a << "

"<< pp->b <8 + /*

去掉列印語句*/9

return0;

10 }

第七行的-表示新檔案中去掉了該行,+表示新檔案中增加了改行。

根據補丁檔案修改原檔案為新檔案的內容:

patch -p0 < patch-macro-2013-10-30

這樣macro.c檔案的內容和macro_new.c一樣了。

回退到原來的檔案:

patch -p0 -r < patch-macro-2013-10-30

在Windows環境給Oracle打補丁

oracle補丁一共分為如下幾步 1 配置環境變數 2 更新opath 3 停用oracle服務 4 打補丁 這樣就完成了opatch的更新,其實就是替換檔案 按照嚮導一路按y,回車就行了 最後這樣就完成了 我們可以在用cmd進入opatch目錄,執行 opatch lsinventory,檢視下打...

在Windows環境給Oracle打補丁

之前一直使用sqlserver資料庫,這次有個專案要用oracle資料庫,正好還趕上要打scn補丁包,對oracle打補丁一點概念都沒有,在網上搜了搜,也許是比較簡單吧,網上的文件寫的也比較簡單 估計對這件事熟的人寫文章的時候會忽略一些東西,但這些東西對我這種沒弄過的還是有些影響的 而且大部分都是l...

製作原始碼補丁和給原始碼打補丁

1.製作原始碼補丁 假設原始的原始碼目錄為src code,修改後的原始碼目錄為src code new。通過如下命令,就可以製作出原始碼補丁檔案changes.patch。changes.patch中記錄了src code與src code new之間的差異。root localhost diff...