線上使用者

目前共有 0 位註冊使用者2 位訪客 在線上。

新會員

  • xyz
  • arsisthesis
  • selly
  • cxm1234
  • joyce

書籍推薦

如何使用 Patch 檔 ?

Arthur Yu 的照片
Average: 5 (7 votes)

阿舍在很久以前,大概是一個月之前吧 ! 就有試著要為一個模組來更新 pacth 檔,那時候就有想要寫一篇如何使用 Patch 的說明,不過,一拖之後就給它忘了,呵.....呵。

直到這一、二天鱷魚兄問有一個有關 cache_menu 的問題,因為需要用 patch 檔來更新才能解決,這才讓阿舍又想起來要寫這篇文哩.....。

首先,還是簡單說明一下什麼是 Pacth ? 以中文來說,就是俗稱的 "補丁",還是有聽沒有懂 ? OK,事情這樣子的,大部的軟體都一直更新版本,而更新版本的主要目的有二個,第一個是增加新功能,第二個就是要解決上一個或現有的版本問題 ( 俗稱叫 Bug 的東西 ),但是,要更新一個版本是一件不能隨便的事,因為,總是要做很多的測試,等確定都沒問題的時候才會發出一個新版本。

但是,這種方式會產生一種情況,就是,在版本和版本正式發行的中間,有使用者遇到幾個嚴重問題,或者是,有一些只會發生在某些特定情況的問題時,那要怎麼辦 ? 這時,就是利用 Patch 來修正此類型的問題,最典型的範例就屬 Windows 的更新了,每次更新的便是 Patch,只是更新的方式和 Drupal 完全不同的,但是觀念卻是一樣的。

在 Drupal 上,Patch 是一個標準的文字檔,裡面所放的資訊便是說明要去改那一個模組程式檔或是包含檔的那一行和那一段程式碼,在 Patch 檔裡的 +++ 和 --- 符號就是用來說明要在那裡增加或刪除程式碼的,所以,就算不用程式去做 Patch 更新的動作,也是可以由大德自己手動去複製 & 貼上來達到效果的,只不過,有效 Patch 檔可能會讓大德用手調到抽筋哩 ! 所以,還是用工具比較好吧...-___-!!。

在 Linux 或是 Unix 上,這個動作相對於 Windows 是比簡單的,因為 Patch 這支程式,本來就有的,而 Windows 則是沒有的,所以要花點時來選一選。

Drupal 官網上建議給 Windows 的 Patch 程式有三支,阿舍大概評估了一下,還是那支 GNU 出的 Patch 比較好用,所以本文就是用這支來紹囉 !!

開始之前,還是要提醒各位大德們,要更新任 Patch 之前,還是先架個測試環境會比較安全有保隌哩 !!

詳細作法說明如下:

1.下載 GNU 的 Patch 程式。
請到這裡下載 Patch 的壓縮檔
http://gnuwin32.sourceforge.net/downlinks/patch-bin-zip.php

說明一下,Patch 的網站上也可提供可以執行 Setup 的版本,但是,阿舍不太建議用那個方式,因為,阿舍有試著去安裝,但是,裝好之後,實在看不出有什麼特別用處哩 !

2.解壓縮。
把下載的檔案解壓縮到一個目錄裡,最好是直接在根目錄下,待會操作的時候會比較方便。

阿舍是把下載來的 patch-2.5.9-7-bin.zip 檔,解壓縮到 c:\patch 放。

3.下載 Patch 檔。
依阿舍的經驗來說,Patch 檔大都是在官網的論壇裡發現的,阿舍還沒不知道是否有專門可以下載的地方可以下載,如果各位大德有人知曉的話,就請不吝告知一下囉 ! 多謝 !!

4.開始更新。
再來便是重頭戲了,要準備開始更新哩 !

4-1 進入命令列視窗 ( 就是俗稱的 DOS 視窗 )
請按右下角的「開始」>「執行」> 打入「cmd」後,按確定,應該就會跳出一個黑底白字的視窗來。

4-2 切換路徑到 drupal 的安裝目錄
在 DOS 視窗下打入 "cd drupal 的安裝目錄",以阿舍的 drupal 為例,阿舍的 Drupal 6 是裝在

\drupal\TWAPMS_D62\TWAPMS\Apache\htdocs\drupal62"

所以,就要這樣下

cd \drupal\TWAPMS_D62\TWAPMS\Apache\htdocs\drupal62

然後,應該就會跳到 drupal 的安裝目錄去了。

4-3 執行 Patch

執行的方式如下:

patch -p0 < patch檔名 --verbose --binary

所以,以阿舍把 GNU 的 patch 執行檔放在 c:\patch,而下載的 patch 檔放在 c:\download\mc.patch 來當範例的話,結果就是要這樣下:

c:\patch\bin\patch -p0 < c:\download\mc.patch --verbose --binary

輸入完後,按一下 Enter 鍵,patch 的動作應該就會執行了,大德們就可看到更新的結果了,GNU 的 Patch 程式是會列示做過那些修改的。

5.更新或上傳已經修改的檔案
把修改過的檔案 ( 從 Patch 程式跑完後的畫面可以看出更新過那些檔案 ) 上傳或複製到線上系統 ( 要覆蓋 ),這樣就算大功告成了。

drupal.org 官網上的 Patch 相關教學
http://drupal.org/patch

AACC88 (未確認)
cache_menu不能上傳到虛擬空間

我把drupal 6.x的全部資料庫文件從一個空間上傳到另一個虛擬伺服器空間,惟獨cache_menu上傳後是空的。後來首頁能開啟,但全部路徑都是原來的,也不能進admin。請問應該怎樣解決這個問題?

Arthur Yu
Arthur Yu 的照片
User offline. Last seen 23 小時 29 分鐘 ago. Offline
Joined: 12/17/2007
請參考...

Hello AACC88 兄,

這個問題阿舍沒遇過,所以只能到 Druapl.org 找一些相關的文章,給 AACC88 兄參考囉 !! ^^=。

Database error while importing db - cache_menu db table
http://drupal.org/node/308656

problem duplicating site
http://drupal.org/node/331553

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

SonyMD (未確認)
我想要patch我的signup模

我想要patch我的signup模組,按照上面的步驟卻出現不適regular file是為何呢? 謝謝!!

]

圖檔 http://img253.imageshack.us/my.php?image=001f.jpg

Arthur Yu
Arthur Yu 的照片
User offline. Last seen 23 小時 29 分鐘 ago. Offline
Joined: 12/17/2007
有可能是版本不對的問題....

Hello SonyMD 兄,

阿舍看了一下,阿舍猜,可能是版本的問題,不知 SonyMD 兄是否有確認過,這個 Patch 所補正的 SignUp 模組是那一個版本嗎 ?

供參囉 !! ^^=。

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

大德 (未確認)
install_main()的疑問

阿舍謝謝您分享那麼讚的教學~
我有一問題詢問~
就是啊~我在修改模組的一些建議事項修改。
相關網址:http://drupal.org/files/issues/simpletest_drupal.js_.patch

像如果你已經有架起來drupal了~那為什麼這個模組要建議修改install.php呢?
然後啊~這個要怎加呢?
是有找到install_main()這地方,但是不知要把代碼貼在那裡~怕貼錯~

2. (Optional)
It is hightly recommonded, but not neccessary, that you add the following
code to install.php at the beginning of install_main(). Should look like
7.x branch of Drupal core.

// The user agent header is used to pass a database prefix in the request when
// running tests. However, for security reasons, it is imperative that no
// installation be permitted using such a prefix.
if (preg_match("/^simpletest\d+$/", $_SERVER['HTTP_USER_AGENT'])) {
header($_SERVER['SERVER_PROTOCOL'] . ' 403 Forbidden');
exit;
}

---------------------------------------------

謝謝阿舍

Arthur Yu
Arthur Yu 的照片
User offline. Last seen 23 小時 29 分鐘 ago. Offline
Joined: 12/17/2007
好像是針對 7.x 版的...

Hello,

阿舍看一下,發現它有說這是非必要的修正且只適用 7.x 版,所以大德如果沒用 7.x 版,那應該就可以不用理會了哩 !

供參囉 !! ^^=。

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

阿舍...
阿舍的 Drupal 架站經驗談
http://drupal.soa.tw

BloggerAds

Facebook Page

Drupal 新聞

Translate


訂閱服務...

最新回應

阿舍的隨手....