如何獲取合適的Squid版本
Squid開發(fā)者定期發(fā)布源代碼。每一個發(fā)布版有一個版本號,例如2.5.STABLE4。版本號的第三部分以STABLE或DEVEL(短期開發(fā)版本)開頭。
也許你能猜到,DEVEL版本傾向于擁有更新,更試驗性的功能。但也許它們有更多的bugs。無經(jīng)驗的用戶不應該運行DEVEL版本。假如你選擇運行一個DEVEL版本,并且遇到了問題,請將問題報告給Squid維護者。
在一段時間的開發(fā)期后,Squid版本號變?yōu)镾TABLE。該版本適合于普通用戶。當然,即使穩(wěn)定版可能也有一些bugs。高的穩(wěn)定版本(例如STABLE3,STABLE4)應該bugs更少。假如你特別關心穩(wěn)定性,你應該使用這些最近發(fā)布版本中的一個。
使用源代碼
為什么你不能copy一份預編譯的二進制代碼到你的系統(tǒng)中,并且期望它運行良好呢?主要理由是squid的代碼需要知道特定操作系統(tǒng)的參數(shù)。實際上,最重要的參數(shù)是打開文件描述符的***數(shù)量。Squid的./configure腳本在編譯之前偵察這些值。假如你獲取一個已編譯的使用某個參數(shù)值的squid到另一個使用不同參數(shù)值的系統(tǒng)中,可能會遇到問題。
另一個理由是許多squid功能在編譯時必須被激活。假如你獲取一個別人已編譯的squid文件,它不包含你所需要的功能,那么你又得再編譯一遍。
***,共享庫的問題可能使得在系統(tǒng)之間共享可執(zhí)行文件困難。共享庫在運行時被裝載,如已知的動態(tài)鏈接一樣。squid在編譯時會偵察你系統(tǒng)中的C庫的某些功能(例如它們是否被提供,是否能運行等)。盡管庫功能不常改變,但兩個不同的系統(tǒng)的C庫之間可能有明顯的區(qū)別。如果兩個系統(tǒng)差別太大,就會對Squid造成問題。
獲取squid的源代碼是非常容易的。請訪問squid的首頁:http://www.squid-cache.org。首頁有鏈接指向不同的穩(wěn)定版和開發(fā)版。假如你不在美國,那么請訪問squid的眾多鏡像站點中的一個。鏡像站點通常以"wwwN.CC.squid-cache.org"命名,N是數(shù)字,CC是國家的兩位代碼。例如,www1.au.squid-cache.org是澳大利亞的鏡像站點,在主頁上有鏈接指向不同的鏡像站點。
每一個squid發(fā)布版分支(例如Squid-2.5)有它自己的HTML頁面。該頁面有鏈接指向源代碼,以及與其他發(fā)布版的差別。假如你從一個發(fā)布版升級到下一個,你應該下載這些差別文件,并且打上補丁,請見3.7章節(jié)中的描述。每個版本的發(fā)布頁描述新功能和重要的改進,也有鏈接指向已經(jīng)修正的bugs。
如果web訪問不可行,你能從ftp://ftp.squid-cache.org的FTP服務器獲取源代碼,或者使用其他FTP鏡像。要獲取當前版本,請訪問pub/squid-2/DEVEL 或 pub/squid-2/STABLE 目錄。FTP鏡像也在許多國家有,你能用同樣的國家代碼去猜測一些FTP鏡像站點,例如ftp1.uk.squid-cache.org。
當前的Squid發(fā)布版本大約1M大小。在下載完壓縮的打包文件后,你能繼續(xù)第3章。
預編譯的二進制文件
一些Unix發(fā)布版可能預包含了Squid的編譯版。對Linux系統(tǒng),你可以找到Squid的RPM包。通常squid RPM包含在你所買的Linux光碟里。Freebsd/Netbsd/OpenBSD也在它們的ports或者packages里面包含了squid。
雖然RPM或者預編譯的packages能節(jié)省你一些時間,但它們也有一些弊端。就像我提過的一樣,在你開始編譯squid之前,某些功能必須被激活或禁止。而你安裝的預編譯的包可能不包含你想要的特定功能。而且,squid的./configure腳本偵察你系統(tǒng)中的特定參數(shù),這些在你系統(tǒng)中的參數(shù)可能與編譯它的機器的參數(shù)不同。
***,假如你想對squid打補丁,你必須等某個人編譯更新的RPM或packages,或者你還得自己找源代碼編譯。
我強烈建議你從源代碼編譯squid,當然怎樣選擇由得你。
匿名CVS
你能匿名訪問squid的CVS文件(只讀)以保持你的源代碼同步更新。使用CVS的有利面是你能輕易獲取當前運行版本的補丁。這樣就容易發(fā)現(xiàn)近來改變了什么。
將這些補丁打到你所運行的版本中,有效的保持你的源代碼和官方版本的同步。
CVS使用樹型索引系統(tǒng),樹干叫做頭分支。對Squid而言,這里也是所有的新改變和新功能的存放之地。頭分支通常包含試驗性的,也許不太穩(wěn)定的代碼。穩(wěn)定的代碼通常在其他分支上。
為了有效的使用squid的匿名CVS,你首先應知道版本和分支是怎樣被標明不同的。例如,版本2.5分支被命名為SQUID_2_5。具體的發(fā)布有長的命名,例如SQUID_2_5_STABLE4。為了得到squid版本2.5.STABLE4,請使用SQUID_2_5_STABLE4標簽;使用SQUID_2_5得到最近的2.5分支的代碼。
為了使用squid匿名CVS服務,你首先必須設置CVSROOT環(huán)境變量:
csh% setenv CVSROOT :pserver:anoncvs@cvs.squid-cache.org:/squid
或者,對Bourne shell用戶:
sh$ CVSROOT=:pserver:anoncvs@cvs.squid-cache.org:/squid sh$ export CVSROOT
然后你就可以登陸到服務器:
% cvs login (Logging in to anoncvs@cvs.squid-cache.org) CVS password:
在提示符下,敲入anoncvs作為密碼。現(xiàn)在你可以用這個命令檢查源代碼樹:
% cvs checkout -r SQUID_2_5 -d squid-2.5 squid
-r選項指定獲取修訂標簽。省略-r選項你將獲得頭分支。-d選項改變存放文件的***目錄名。假如你省略-d選項,***目錄名就與模塊名字一樣。***的命令行參數(shù)(squid)是要檢查的模塊名字。
一旦你檢查完squid源代碼樹,你能運行cvs update命令去升級你的文件,和保持文件同步。其他命令包括:cvs diff, cvs log, 和 cvs annotate。
想獲取更多CVS知識,請訪問:http://www.cvshome.org
devel.squid-cache.org
Squid的開發(fā)者維持一個獨立的站點,當前運行在SourceForge,提供了試驗性的squid功能。請檢查它們在http://devel.squid-cache.org.在這里你能發(fā)現(xiàn)許多正在開發(fā)的工程,它們還未集成到squid的官方源代碼里。你能通過SourceForge的匿名CVS服務來訪問這些工程,或者下載與標準版本不同的差別文件。
【編輯推薦】