Linux初學者Patch使用指南(轉)

ba發表於2007-08-11
Linux初學者Patch使用指南(轉)[@more@]  簡介

   本文的目的是向Linux新手介紹一種無價的資源,Larry Wall的patch程式。patch是用來查詢檔案之間差異的GNU diff命令的一個介面;diff有很多選項,但是該命令最常用的用途是用來生成一個檔案,該檔案中列出了內容發生改變的行,顯示兩個原始檔案、修改過的行以及由於內容沒有變化而忽略掉的行。patch典型地用於把一個目錄下的原始碼檔案更新到新的版本,從而就避免了下載整個新的原始碼檔案的必要。下載一個有效的patch僅僅需要下載發生變化的那些程式碼行就可以了。

   patch最初源自十年前,那時網路頻寬的限制促進了patch的發展,然而和當時的很多Unix工具一樣,直到現在,patch還在廣泛應用。在Dr. Dobb之旅的2月份的程式設計師雜誌中,Larry Wall對早期的patch做了一些很有趣的說明:

   DDJ:順便問一下,patch和diff哪個出現的早?

   LW:從很長一段時間來說,diff出現地比較早。我想diff大約比patch早10年出現,一回想起來,我就納悶為什麼沒有人早些想到使用patch呢?

   但是我想我知道這中間的原因。這很大程度上是心理因素使然。當開發出diff時,程式設計師增加了一個e選項,我想就是這個選項的原因,該選項後來滋生為一個ed指令碼,因此大家都會對自己說,"嗯,如果我想自動使用diff,那麼我就使用這個選項。"因此從來都沒有人編寫一個計算機程式來獲取其它格式的輸出並使用這些結果。或者是那些設計diff的人員,或者是那些使用diff格式而受益的人員太沉迷其中了,因為你可以對那些已經修改過的內容使用diff操作並讓這些內容正常工作都是很容易的。

   現在回想起來,這個問題是顯而易見的。但是平心而論,與其說這是一個天才的靈感的閃現,還不如說這是自信心的體現。我開發出rn的第一個版本,然後繼續為它編寫補丁,這整個事情就是一團亂麻。你不可能強制使用者使用補丁,因為他們可以手工完成這些工作。因此,他們就會省略一些自己認為不必要的工作,他們把新的修改加諸於原來的程式之上,因此而使得程式混亂。我編寫補丁,這樣就沒有人找藉口說這很難了。

   我不清楚是否事實就是如此,但是多年以來,我一直對別人講patch對於計算機文化的影響比rn和Perl的影響都要大。現在Internet的速度比原來有大幅度的提高,把整個發行版本分散到世界各地也變得更加簡單,似乎只有在開發者之間才需要傳送補丁。我已經很多年沒有傳送Perl的patch工具包了。我認為雖然patch整體上的重要性在逐漸降低,但是仍然是開發者交流思想的一種方法。但是就那一段時間而言,patch真正在相當大的程度上都影響了軟體的開發方式。

   Larry Wall針對patch對於計算機業界總體上重要性正在降低的評價可能是正確的,但是在自由軟體世界中,patch仍然是一種必不可少的工具。無處不在的patch使得新手和非程式設計師能夠簡單地參與軟體的alpha測試和beta測試,這對於整個計算機業界是十分有益的。

   在我留意到在Linux核心郵件列表中會週期性的出現這樣一件事情時就產生了寫這篇文章的念頭。大約每三個月就會有人張貼要求把Linux核心原始碼的發行版本獨立出來的文章,據說這是因為有些人只對i386的程式碼和IDE的磁碟驅動感興趣,他們並不想為每個核心發行版本都下載Alpha、Sparc等等的檔案和眾多的SCSI驅動程式。這篇文章後面緊跟的是一些耐心的回覆文章(有些文章則並沒有耐心),大部分文章都是在討論原來的使用有關patch來更新核心原始碼。接著Linus Torvalds就會再次宣告自己沒有興趣投身於這種把核心源程式切割成小塊的繁雜的勞動,但是如果有人願意,他們可以自由地開展這項獨立的工程。到現在為止都沒有志願者出現。我並不想譴責那些核心駭客不能耐心等待,卻把生活變得複雜;我猜想直接使用核心工作可能比檢查整個核心的發行版本方案要更加有趣、更富有挑戰性。下載11M的核心源程式包可是件非常耗費時間的事情(對於那些按照時間上網的人來說,這是很昂貴的),但是核心patch才只有幾十K大小,很少會超過1M。我的硬碟上的2.1.99開發核心源程式經過patch的升級,已經升級到了2.1.119版本,我懷疑如果我緊隨核心的發展而不斷升級,那麼也許我就要完整地下載每一個發行版本了。

   使用patch

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

  
QUOTE:

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/10617731/viewspace-947352/,如需轉載,請註明出處,否則將追究法律責任。

Linux初學者Patch使用指南(轉)
請登入後發表評論 登入
全部評論

相關文章