真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

linux補(bǔ)丁命令,linux打補(bǔ)丁方法

linux patch 如何用

patch 命令用于打補(bǔ)丁,補(bǔ)丁文件是使用diff產(chǎn)生的.

成都創(chuàng)新互聯(lián)專業(yè)為企業(yè)提供丹陽網(wǎng)站建設(shè)、丹陽做網(wǎng)站、丹陽網(wǎng)站設(shè)計(jì)、丹陽網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計(jì)與制作、丹陽企業(yè)網(wǎng)站模板建站服務(wù),10年丹陽做網(wǎng)站經(jīng)驗(yàn),不只是建網(wǎng)站,更提供有價(jià)值的思路和整體網(wǎng)絡(luò)服務(wù)。

patch 命令語法 patch [ -b [ -B Prefix ] ] [ -f ] [ -l ] [ -N ] [ -R ] [ -s ] [ -v ] [ -c | -e | -n ] [ -d Directory ] [ -D Define ] [ -F Number ] [ -i PatchFile ] [ -o OutFile ] [ -p Number ] [ -r RejectFile ] [ -x Number ] [ File ]

patch 命令失敗或拒絕接受補(bǔ)丁時(shí),會產(chǎn)生一個(gè)和原文件同名,以".rej"為后綴的差異文件。  

當(dāng)知道 -b 時(shí),會產(chǎn)生一個(gè)和原文件同名,以".orig"為后綴的備份文件。

常使用的 patch 參數(shù):

-p 指定目錄級別(從路徑全稱中除去幾層目錄)

如,如果補(bǔ)丁文件包含路徑名稱 /curds/whey/src/blurfl/blurfl.c,

那么: -p 0 使用完整路徑名

-p 1 除去前導(dǎo)斜杠,留下 curds/whey/src/blurfl/blurfl.c。

-p 4 除去前導(dǎo)斜杠和前三個(gè)目錄,留下 blurfl/blurfl.c。

-d Directory 打補(bǔ)丁前,更改當(dāng)前目錄到指定目錄

-i PatchFile 從指定文件,而不是從標(biāo)準(zhǔn)輸入中讀取補(bǔ)丁信息

-R 逆向補(bǔ)丁

Linux系統(tǒng)有漏洞嗎,若有,如何打補(bǔ)丁?更新升級是自動的嗎,若否,命令是什么?

linux系統(tǒng)當(dāng)然有漏洞,linux的更新是很快的。一般幾個(gè)月半年就有一個(gè)小版本更新,不只是漏洞還有新功能。

一般叫系統(tǒng)更新,可以使用系統(tǒng)自帶的更新工具?;蚴怯脃um upgrade或apt-get 這些命令,看系統(tǒng)而定。當(dāng)然就是全自動了。

當(dāng)然可以手動,但要知道自己想更新什么以及下載所有包,很難找。

一般linux給某個(gè)特定軟件打補(bǔ)丁用patch命令。

linux系統(tǒng)如何打安全補(bǔ)丁

在 CentOS/RHEL7 系統(tǒng)上配置自動安全更新

在 CentOS/RHEL 7/6 系統(tǒng)上,你需要安裝下面的安裝包:

# yum update -y ; yum install yum-cron -y

安裝完成以后,打開/etc/yum/yum-cron.conf,然后找到下面這些行內(nèi)容,你必須確保它們的值和下面展示的一樣

update_messages = yes

download_updates = yes

apply_updates = yes

第一行表明自動更新命令行應(yīng)該像這樣:

# yum --security upgrade

而其它的行保證了能夠通知并自動下載、安裝安全升級。

為了使來自 root@localhost 的通知能夠通過郵件發(fā)送給同一賬戶(再次說明,你可以選擇其他賬戶,如果你想這樣的話),下面這些行也是必須的。 《Linux就該這么學(xué)》 一起學(xué)習(xí)linux

emit_via = email

email_from = root@localhost

email_to = root

在 CentOS/RHEL 6 上啟用自動安全更新

默認(rèn)情況下, cron 任務(wù)被配置成了立即下載并安裝所有更新,但是我們可以通過在 /etc/sysconfig/yum-cron 配置文件中把下面兩個(gè)參數(shù)改為yes,從而改變這種行為。

# 不要安裝,只做檢查(有效值: yes|no)

CHECK_ONLY=yes

# 不要安裝,只做檢查和下載(有效值: yes|no)

# 要求 CHECK_ONLY=yes(先要檢查后才可以知道要下載什么)

DOWNLOAD_ONLY=yes

為了啟用關(guān)于安裝包更新的郵件通知,你需要把MAILTO 參數(shù)設(shè)置為一個(gè)有效的郵件地址。

# 默認(rèn)情況下 MAILTO 是沒有設(shè)置的,crond 會將輸出發(fā)送郵件給自己

# (執(zhí)行 cron 的用戶,這里是 root)

# 例子: MAILTO=root

MAILTO=admin@tecmint.com

最后,打開并啟用yum-cron 服務(wù):

------------- On CentOS/RHEL 7 -------------

systemctl start yum-cron

systemctl enable yum-cron

------------- On CentOS/RHEL 6 -------------

# service yum-cron start

# chkconfig --level 35 yum-cron on

恭喜你,你已經(jīng)成功的在 CentOS/RHEL 7/6 系統(tǒng)上設(shè)置了自動升級。

linux下的patch命令

patch命令用于為特定軟件包打補(bǔ)丁,該命令使用diff命令對源文件進(jìn)行操作。

格式:patch [選項(xiàng)] [原始文件 [補(bǔ)丁文件]]

常用參數(shù):

-r 是一個(gè)遞歸選項(xiàng),設(shè)置了這個(gè)選項(xiàng),diff會將兩個(gè)不同版本源代碼目錄中的所有對應(yīng)文件全部都進(jìn)行一次比較,包括子目錄文件。

-N 選項(xiàng)確保補(bǔ)丁文件將正確地處理已經(jīng)創(chuàng)建或刪除文件的情況。

-u 選項(xiàng)以統(tǒng)一格式創(chuàng)建補(bǔ)丁文件,這種格式比缺省格式更緊湊些。

-p0 選項(xiàng)從當(dāng)前目錄查找目的文件(夾)(直接使用補(bǔ)丁文件里面指定的路徑)

-p1 選項(xiàng)忽略掉第一層目錄,從當(dāng)前目錄查找(去掉補(bǔ)丁文件指定路徑最左的第1個(gè)'/'及前面所有內(nèi)容)。

-E 選項(xiàng)說明如果發(fā)現(xiàn)了空文件,那么就刪除它

-R 選項(xiàng)說明在補(bǔ)丁文件中的“新”文件和“舊”文件現(xiàn)在要調(diào)換過來了(實(shí)際上就是給新版本打補(bǔ)丁,讓它變成老版本)

示例:

1、單個(gè)文件

首先將兩個(gè)文件的內(nèi)容顯示如下:

$ cat test0

00000000

00000000

00000000

$ cat test1

00000000

11111111

00000000

*生成補(bǔ)?。?/p>

$ diff -uN test0 test1 test1.patch

這樣將通過比較,生成test1的補(bǔ)丁文件。這里選項(xiàng)u表示使用同一格式輸出這樣產(chǎn)生的輸出便于閱讀易于修改,N表示把不存在的文件看做empty的.就算文件test0不存在,也會生成補(bǔ)丁。

*把test0通過打補(bǔ)丁變成test1文件:

$ patch -p0 test1.patch

或$patch test1.patch

這樣,test0的內(nèi)容將和test1的內(nèi)容一樣,但是文件名稱還是test0。關(guān)于patch的選項(xiàng)見后面多文件有說明。當(dāng)前目錄下可以有test1.如果比較的時(shí)候test0是不存在的,那么這時(shí)候會生成一個(gè)test0文件。

*把打過補(bǔ)丁的test0還原:

$ patch -RE -p0test1.patch

或$patch -R test1.patch

這樣,test0的內(nèi)容將還原為原來沒有打過補(bǔ)丁的狀態(tài)。當(dāng)前目錄下可以有test1.這里的-E選項(xiàng)是要求patch在文件為空的時(shí)候刪除文件,這個(gè)選項(xiàng)是不必要的因?yàn)閜atch是根據(jù)時(shí)間戳來判斷一個(gè)文件是否存在。如果比較的時(shí)候test0是不存在的,這將會刪除test0文件。

**

2、多個(gè)文件的:

首先查看文件結(jié)構(gòu)如下:

1)外層目錄列表:

$ ls -p

prj0/ prj1/

2)子目錄prj0列表:

$ ls -p prj0

prj0name test0

3)子目錄prj1列表:

$ ls -p prj1

prj1name test1

4)文件prj0/prj0name:

$ cat prj0/prj0name

--------

prj0/prj0name

--------

5)文件prj1/prj1name:

$ cat prj1/prj1name

---------

prj1/prj1name

---------

6)文件prj0/test0:

$ cat prj0/test0

0000000

0000000

0000000

0000000

0000000

0000000

0000000

7)文件prj1/test1:

$ cat prj1/test1

1111111

1111111

1111111

1111111

1111111

1111111

1111111

*創(chuàng)建補(bǔ)丁:

$ diff -uNr prj0 prj1 prj1.patch

這里項(xiàng)u表示使用同一格式輸出這樣產(chǎn)生的輸出便于閱讀易于修改,N表示把不存在的文件看做empty的,r表示遞歸地比較子目錄,比較的結(jié)果被標(biāo)準(zhǔn)重定向到文件prj1.patch中了。

運(yùn)行之后,輸出的就是一個(gè)補(bǔ)丁,描述了兩個(gè)文件的不同,這個(gè)補(bǔ)丁就是把diff參數(shù)的第一個(gè)文件打補(bǔ)丁變成第二個(gè)文件的補(bǔ)丁文件。

實(shí)際過程依次比較兩個(gè)目錄下的同名文件,如果這里不加-N就會指明prj0name和test0只在prj0中存在,prj1name和test1只在prj1中存在,這就無法比較了,所以這里為了能夠比較,加上了-N選項(xiàng)。

為了便于理解,這里給出prj1.patch文件的內(nèi)容:

$ cat prj1.patch

diff -uNr prj0/prj0name prj1/prj0name

--- prj0/prj0name 2009-08-24 10:44:19.000000000 +0800

+++ prj1/prj0name 1970-01-01 08:00:00.000000000 +0800

@@ -1,5 +0,0 @@

---------

-

-prj0/prj0name

-

---------

diff -uNr prj0/prj1name prj1/prj1name

--- prj0/prj1name 1970-01-01 08:00:00.000000000 +0800

+++ prj1/prj1name 2009-08-24 10:45:05.000000000 +0800

@@ -0,0 +1,5 @@

+---------

+

+prj1/prj1name

+

+---------

diff -uNr prj0/test0 prj1/test0

--- prj0/test0 2009-08-24 11:21:12.000000000 +0800

+++ prj1/test0 1970-01-01 08:00:00.000000000 +0800

@@ -1,7 +0,0 @@

-0000000

-0000000

-0000000

-0000000

-0000000

-0000000

-0000000

diff -uNr prj0/test1 prj1/test1

--- prj0/test1 1970-01-01 08:00:00.000000000 +0800

+++ prj1/test1 2009-08-24 11:21:33.000000000 +0800

@@ -0,0 +1,7 @@

+1111111

+1111111

+1111111

+1111111

+1111111

+1111111

+1111111

*將prj0中的所有文件打補(bǔ)丁成為prj1中的所有文件:

步驟如下:

1)$ cp prj1.patch ./prj0

2)$ cd prj0

3)$ patch -p1 prj1.patch

這里,把補(bǔ)丁文件復(fù)制到了prj0下面,然后將該文件夾下面的文件"變成"prj1下的文件了.

$ ls -p

prj1name prj1.patch test1

關(guān)于patch命令的-p選項(xiàng)接數(shù)字n,意思是去掉補(bǔ)丁文件里指定路徑的前n個(gè)'/'前綴.

例如補(bǔ)丁文件中指定路徑是/u/howard/src/blurfl/blurfl.c,那么p0選項(xiàng)處理之后的路徑還是原來路徑不變,而p1選項(xiàng)處理之后的路徑是u/howard/src/blurfl/blurfl.c,同理p4處理之后的路徑是:blurfl/blurfl.c.

注意:如果在外層目錄運(yùn)行這個(gè)命令,那么會在外層目錄創(chuàng)建兩個(gè)prj1name和test1文件。

*將打好補(bǔ)丁的prj0中的所有文件還原成為原來打補(bǔ)丁之前的文件:

$ patch -R -p1 prj1.patch

運(yùn)行之后文件變成原來的文件了,如下:

$ ls -p

prj0name prj1.patch test0

*將prj1中的所有文件反向打補(bǔ)丁成為prj0中的所有文件:

$ patch -R -p1 prj1.patch

運(yùn)行之后prj1中的文件變成prj0的文件了,如下:

$ ls -p

prj0name prj1.patch test0

*將prj1中反打補(bǔ)丁后的文件還原成原來的prj1中的文件:

$ patch -p1 prj1.patch

運(yùn)行之后,prj1中的文件被還原了,如下:

$ ls -p

prj1name prj1.patch test1

*在外層目錄把prj0的內(nèi)容打補(bǔ)丁成prj1的內(nèi)容:

$ls -p

prj0/ prj1.patch

$patch -p0 prj1.patch

這樣prj0中的內(nèi)容變成了prj1中的內(nèi)容,但是prj0的目錄名仍舊是prj0,如下:

$ls -p prj0

prj1name test1

注意:當(dāng)前文件夾下面不能prj1目錄,否則會出現(xiàn)一些警告提示。

*在外層目錄把prj0的內(nèi)容反打補(bǔ)丁還原成原來prj0的內(nèi)容:

$ patch -R -p0 prj1.patch

這樣原來的文件如下:

$ ls -p prj0

prj0name test0

**

linux查看補(bǔ)丁的方法

linux下patch命令使用詳解---linux打補(bǔ)丁命令

功能說明:修補(bǔ)文件。

語法:patch [-bceEflnNRstTuvZ][-B 備份字首字符串][-d 工作目錄][-D 標(biāo)示符號][-F 監(jiān)別列數(shù)][-g 控制數(shù)值][-i 修補(bǔ)文件][-o 輸出文件][-p 剝離層級][-r 拒絕文件][-V 備份方式][-Y 備份字首字符串][-z 備份字尾字符串][--backup-if -mismatch][--binary][--help][--nobackup-if-mismatch][--verbose][原始文件 修補(bǔ)文件] 或 path [-p 剝離層級] [修補(bǔ)文件]

補(bǔ)充說明:patch指令讓用戶利用設(shè)置修補(bǔ)文件的方式,修改,更新原始文件。倘若一次僅修改一個(gè)文件,可直接在指令列中下達(dá)指令依序執(zhí)行。如果配合修補(bǔ)文件的方式則能一次修補(bǔ)大批文件,這也是Linux系統(tǒng)核心的升級方法之一。

參數(shù):

 -b或--backup  備份每一個(gè)原始文件。

 -B備份字首字符串或--prefix=備份字首字符串  設(shè)置文件備份時(shí),附加在文件名稱前面的字首字符串,該字符串可以是路徑名稱。

 -c或--context  把修補(bǔ)數(shù)據(jù)解譯成關(guān)聯(lián)性的差異。

 -d工作目錄或--directory=工作目錄  設(shè)置工作目錄。

 -D標(biāo)示符號或--ifdef=標(biāo)示符號  用指定的符號把改變的地方標(biāo)示出來。

 -e或--ed  把修補(bǔ)數(shù)據(jù)解譯成ed指令可用的敘述文件。

 -E或--remove-empty-files  若修補(bǔ)過后輸出的文件其內(nèi)容是一片空白,則移除該文件。

 -f或--force  此參數(shù)的效果和指定-t參數(shù)類似,但會假設(shè)修補(bǔ)數(shù)據(jù)的版本為新 版本。

 -F監(jiān)別列數(shù)或--fuzz監(jiān)別列數(shù)  設(shè)置監(jiān)別列數(shù)的最大值。

 -g控制數(shù)值或--get=控制數(shù)值  設(shè)置以RSC或SCCS控制修補(bǔ)作業(yè)。

 -i修補(bǔ)文件或--input=修補(bǔ)文件  讀取指定的修補(bǔ)問家你。

 -l或--ignore-whitespace  忽略修補(bǔ)數(shù)據(jù)與輸入數(shù)據(jù)的跳格,空格字符。

 -n或--normal  把修補(bǔ)數(shù)據(jù)解譯成一般性的差異。

 -N或--forward  忽略修補(bǔ)的數(shù)據(jù)較原始文件的版本更舊,或該版本的修補(bǔ)數(shù)據(jù)已使 用過。

 -o輸出文件或--output=輸出文件  設(shè)置輸出文件的名稱,修補(bǔ)過的文件會以該名稱存放。

 -p剝離層級或--strip=剝離層級  設(shè)置欲剝離幾層路徑名稱。

 -f拒絕文件或--reject-file=拒絕文件  設(shè)置保存拒絕修補(bǔ)相關(guān)信息的文件名稱,預(yù)設(shè)的文件名稱為.rej。

 -R或--reverse  假設(shè)修補(bǔ)數(shù)據(jù)是由新舊文件交換位置而產(chǎn)生。

 -s或--quiet或--silent  不顯示指令執(zhí)行過程,除非發(fā)生錯誤。

 -t或--batch  自動略過錯誤,不詢問任何問題。

 -T或--set-time  此參數(shù)的效果和指定-Z參數(shù)類似,但以本地時(shí)間為主。

 -u或--unified  把修補(bǔ)數(shù)據(jù)解譯成一致化的差異。

 -v或--version  顯示版本信息。

 -V備份方式或--version-control=備份方式  用-b參數(shù)備份目標(biāo)文件后,備份文件的字尾會被加上一個(gè)備份字符串,這個(gè)字符串不僅可用-z參數(shù)變更,當(dāng)使用-V參數(shù)指定不同備份方式時(shí),也會產(chǎn)生不同字尾的備份字符串。

 -Y備份字首字符串或--basename-prefix=--備份字首字符串  設(shè)置文件備份時(shí),附加在文件基本名稱開頭的字首字符串。

 -z備份字尾字符串或--suffix=備份字尾字符串  此參數(shù)的效果和指定-B參數(shù)類似,差別在于修補(bǔ)作業(yè)使用的路徑與文件名若為src/linux/fs/super.c,加上backup/字符串后,文件super.c會備份于/src/linux/fs/backup目錄里。

 -Z或--set-utc  把修補(bǔ)過的文件更改,存取時(shí)間設(shè)為UTC。

 --backup-if-mismatch  在修補(bǔ)數(shù)據(jù)不完全吻合,且沒有刻意指定要備份文件時(shí),才備份文件。

 --binary  以二進(jìn)制模式讀寫數(shù)據(jù),而不通過標(biāo)準(zhǔn)輸出設(shè)備。

 --help  在線幫助。

 --nobackup-if-mismatch  在修補(bǔ)數(shù)據(jù)不完全吻合,且沒有刻意指定要備份文件時(shí),不要備份文件。

 --verbose  詳細(xì)顯示指令的執(zhí)行過程。

patch,是打補(bǔ)丁的命令,有很多用法,見幫助#man patch

patch -p0 (“p”指的是路徑,后面的數(shù)字表示去掉路徑的第幾部分。0,表示不去掉,為全路徑)

patch -p1 (“p”后面的數(shù)字1,表示去掉前第一個(gè)路徑)fetch

fetch /sys/dev/bge

fetch ...

patch -p0 ...fetch

patch -p patch-tcp_auto_buf-20061212-RELENG_6.diff

也可以把文件中的目錄全改成系統(tǒng)已在的目錄如/usr/src/sys.....注意:

1,確認(rèn)目錄

然后確認(rèn)目錄,如不在默認(rèn)目錄下,就寫下要打補(bǔ)丁的當(dāng)前絕對目錄。如/usr/src/sys/dev/bge/if_bce.c2,P的使用

可以使用不帶數(shù)字的參數(shù)。

patch 后的軟件安裝

 

telnetd服務(wù)器的問題及補(bǔ)丁 在當(dāng)前FreeBSD所有版本中,也就是FreeBSD 5.0、FreeBSD 4.3、FreeBSD 4.2、FreeBSD 4.1.1、FreeBSD 4.1、FreeBSD 4.0、FreeBSD 3.x、FreeBSD 2.x的版本,其telnetd守護(hù)進(jìn)程中存在一個(gè)致命的緩沖區(qū)溢出漏洞,該問題是由于telnetd在處理telnet協(xié)議選項(xiàng)的函數(shù)中沒有進(jìn)行有效的邊界檢查,當(dāng)使用某些選項(xiàng)(\'AYT\')時(shí),可能發(fā)生緩沖區(qū)溢出。這會導(dǎo)致遠(yuǎn)程root級別的安全威脅。

因此,如果一定要使用telnet服務(wù)的話,必須為服務(wù)器打上最新的patch,該patch可以從以下鏈接獲得: (注:通常有兩個(gè)版本的telnetd服務(wù)器,有crypto及無crypto的版本,因此需要判斷主機(jī)使用的是哪種版本的telnetd,這通常可以通過察看src文件來判斷,比如# ls /usr/src/crypto/telnet/telnetd,如果不存在,則說明使用的是無crypto的版本了,在判別清楚之后再分別下載相關(guān)補(bǔ)丁文件) crypto版本補(bǔ)?。?/p>

patch方法:

# cd /usr/src/

# patch -p /path/to/patch

# cd /usr/src/secure/libexec/telnetd

# make depend make all install 無crypto版本補(bǔ)?。?/p>

patch方法:

# cd /usr/src/

# patch -p /path/to/patch

# cd /usr/src/libexec/telnetd

# make depend make all install 例子來源文件:isp1161-2.6.12.patch(在/root下)

由于patch文件的首行已經(jīng)指明了路徑,所以根據(jù)當(dāng)前所在的目錄,加不同的參數(shù)使用patch命令:

1:如果當(dāng)前的目錄是和linux-2.6.12的同級目錄:

[root@ ]#patch -p0 /root/isp1161-2.6.12.patch

2:如果當(dāng)前的目錄為 linux-2.6.12/:

[root@ ]#patch -p1 /root/isp1161-2.6.12.patch

3:如果當(dāng)前的目錄為 linux-2.6.12/drivers/:

[root@ ]#patch -p2 /root/isp1161-2.6.12.pathc

0,1,2,是指略去的patch文件中的前幾級目錄。

ln 命令的使用

這是linux中一個(gè)非常重要的命令。它的功能是為某一個(gè)文件在另外一個(gè)位置建立一個(gè)不同的鏈接,這個(gè)命令最常用的參數(shù)是-s,具體用法是:ln -s 源文件 目標(biāo)文件。

當(dāng)我們需要在不同的目錄,用到相同的文件時(shí),我們不需要在每一個(gè)需要的目錄下都放一個(gè)必須相同的文件,我們只要在某個(gè)固定的目錄放上該文件,然后在其它的目錄下用ln命令鏈接(link)它就可以,不必重復(fù)的占用磁盤空間。

例如:ln -s /bin/less /usr/local/bin/less

-s 是代號(symbolic)的意思。

這里有兩點(diǎn)要注意:

第一,ln命令會保持每一處鏈接文件的同步性。也就是說,不論你改動了哪一處,其它的文件都會發(fā)生相同的變化。

patch附帶有一個(gè)很好的幫助,其中羅列了很多選項(xiàng),但是99%的時(shí)間只要兩個(gè)選項(xiàng)就能滿足我們的需要:

patch -p1 [patchfile]

patch -R [patchfile] (used to undo a patch)

-p1選項(xiàng)代表patchfile中文件名左邊目錄的層數(shù),頂層目錄在不同的機(jī)器上有所不同。要使用這個(gè)選項(xiàng),就要把你的patch放在要被打補(bǔ)丁的目錄下,然后在這個(gè)目錄中運(yùn)行path -p1 [patchfile]。來自Linux內(nèi)核patch的一個(gè)簡短的引用可以這樣實(shí)現(xiàn):

diff -u --recursive --new-file v2.1.118/linux/mm/swapfile.c linux/mm/swapfile. c--- v2.1.118/linux/mm/swapfile.c Wed Aug 26 11:37:45 1998 +++ linux/mm/swapfile.c Wed Aug 26 16:01:57 1998 @@ -489,7 +489,7 @@

int swap_header_version;

int lock_map_size = PAGE_SIZE;

int nr_good_pages = 0; - char tmp_lock_map = 0; + unsigned long tmp_lock_map = 0;

應(yīng)用來自本段中使用-p1開關(guān)拷貝的patch可以有效地減短patch定位的路徑;patch會查找當(dāng)前目錄下一個(gè)名為/mm的子目錄,接著應(yīng)該會在這兒發(fā)現(xiàn)swapfile.c文件,然后等待打補(bǔ)丁。在這個(gè)過程中,以破折號(“-”號,譯者注)開始的行會被一個(gè)以加號(“+”號,譯者注)開始的行代替。一個(gè)典型的patch會包含對多個(gè)文件的更新,每個(gè)部分中都由對兩個(gè)版本的文件運(yùn)行diff -u命令的輸出結(jié)果組成。

patch在操作時(shí)把自己的輸出結(jié)果顯示在屏幕上,但是這種輸出通常都滾屏太快,來不及觀看。原來準(zhǔn)備patch的文件名為*.orig,新的patch文件會覆蓋這個(gè)初始文件名。

打補(bǔ)丁的問題

使用不同版本的patch問題來源可能不同,所有的版本在網(wǎng)絡(luò)上都是可用的。Larry Wall近年來已經(jīng)不再做很多工作來更新patch了,這可能是由于他最后發(fā)行的一個(gè)版本在大部分情況下都能正常運(yùn)行。最近幾年以來,一直是GNU項(xiàng)目的 FSF程序員發(fā)行新版本的patch。他們首先修訂有問題的patch,但是我最近一直使用沒有問題的2.5版本(這是Debian2.0的發(fā)行版本號)。過去,我的2.1版本也一直運(yùn)行的很好。當(dāng)前的GNU patch的版本可以從GNU FTP站點(diǎn)上獲取,然而大部分人都只使用他們Linux發(fā)行版中所提供的版本。

讓我們假定你已經(jīng)對一個(gè)目錄下的源程序文件進(jìn)行了patch修補(bǔ)工作,但是patch并沒有清晰地發(fā)揮作用。這可能會偶然發(fā)生,在打補(bǔ)丁的過程中會顯示錯誤信息,其中帶有行號,說明哪一個(gè)文件出現(xiàn)了問題。有時(shí)錯誤是很明顯的,例如缺少了分號,??種錯誤可以不費(fèi)多大力氣就能改正。另外一種可能是從 patch部分刪除了產(chǎn)生問題的部分,但是這樣根據(jù)所涉及到的文件的不同可能會正常工作,也可能不能正常工作了。

另外一種常見的錯位為:假設(shè)你有一個(gè)未使用tar打包的內(nèi)核源程序文件,在/linux/arch/下瀏覽各個(gè)子目錄時(shí)你會發(fā)現(xiàn)各種機(jī)器體系結(jié)構(gòu)子目錄,例如alpah、sparc等等。如果你和大多數(shù)Linux用戶一樣,使用的是Intel的處理器(或者是Intel系列),你可以決定刪除這些目錄,這些目錄對于編譯你特殊的內(nèi)核并不需要,只是白白占用了磁盤空間。一段時(shí)間之后發(fā)行了一個(gè)新的內(nèi)核patch,此時(shí)試圖進(jìn)行patch操作,當(dāng)它發(fā)現(xiàn)不能找到自己打補(bǔ)丁需要的Alpha或者PPC文件,就會停頓下來。幸運(yùn)的是patch在這些地方允許用戶參與,它會詢問Skip this patch?回答y,patch就可以按照正確的路徑繼續(xù)執(zhí)行。也許你需要回答這個(gè)問題很多次,因此允許自己不需要的目錄保留在磁盤上是一種很好的方法。


分享名稱:linux補(bǔ)丁命令,linux打補(bǔ)丁方法
轉(zhuǎn)載來源:http://weahome.cn/article/dsehogh.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部