使用補丁文件更新源碼包,省去了用 ./configured 生成新的 Makefile 文件,還省去了大量的編譯工作,因此效率更高。學完本節會對比有更深入的理解。
[root@localhost ~]# diff 選項 old new
#比較old和new文件的不同
[root@localhost ~]# mkdir test
#建立測試目錄
[root@localhost ~]# cd test
#進入測試目錄
[root@localhost test]# vi old.txt
our
school
is
lampbrother
#文件old.txt,為了便于比較,將每行分開
[root@localhost test]# vi new.txt
our
school
is
lampbrother
in
Beijing
#文件new.txt
[root@localhost test]# diff -Naur /root/test/old.txt /root/test/new.txt > txt. patch
#比較兩個文件的不同,同時生成txt.patch補丁文件
[root@localhost test]#vi txt.patch
#查看一下這個文件
--/root/test/old.txt 2012-11-23 05:51:14.347954373 +0800
#前一個文件
+ + + /root/test/new.txt 2012-11-23 05:50:05.772988210 +0800
#后一個文件
@@-2, 3+2, 5@@
school
is
lampbrother
+in
+beijing
#后一個文件比前一個文件多兩行(用+表示)
[root@localhost test]# patch -pn < 補丁文件
#按照補丁文件進行更新
[root@localhost test]# patch -p3 < txt.patch
patching file old.txt
#給old.txt文件打補丁
[root@localhost test]# cat old.txt
#查看一下dd.txt文件的內容
our
school
is
lampbrother
in
Beijing
#多出了in Beijing兩行
這里使用的補丁文件,修補了 apache 代理 FTP 站點時,模塊空指針引用拒絕服務攻擊的漏洞(了解即可,不用深究)。
具體更新步驟如下:[root@localhost ~]# cp mod_proxy_ftp_CVE-2008-2939.diff httpd-2.2.9
[root@localhost ~]# cd httpd-2.2.9
#進入apache源碼目錄
[root@localhost httpd-2.2.9]# vi mod_proxy_ftp_CVE-2008-2939.diff
#查看補丁文件
--modules/proxy/mod_proxy_ftp.c (Revision 682869)
+ + + modules/proxy/mod_proxy_ftp.c (Revision 682870)
…省略部分輸出…
#查看一下補丁文件中記錄的目錄,以便一會兒和當前所在目錄同步
[root@localhost httpd-2.2.9]# patch - p0 < mod_proxy_ftp_CVE-2008-2939.diff
#打入補丁
[root@localhost httpd-2.2.9]# make
[root@localhost httpd-2.2.9]# make install
注意,如果未安裝過 httpd-2.2.9,就需要先打入補丁,再依次執行 "./configure"、"make"、
"make install" 命令。
[root@localhost httpd-2.2.9]# patch -R < modjDroxy_ftp_CVE-2008-2939.diff
-R(大寫)選項表示還原補丁。新聞熱點
疑難解答