原始碼編譯方式安裝Asterisk
宣告:本文由本人翻譯自Asterisk wiki,如有不妥歡迎指正。
一種流行的安裝Asterisk方式是自己下載原始碼並編譯。這比使用包管理器或使用基於Asterisk的linux發行版要複雜,它允許你自己決定如何構造Asterisk和構造哪些Asterisk模組。
在這一節中,你將學習到如何下載並編譯Asterisk原始碼,以及如何安裝Asterisk。
1. 下載
在一個典型的系統中,你將需要下載以下三個元件:
· Asterisk
· DAHDI
· libpri
libpri庫允許Asterisk與ISDN連線互動(我們將在450.8章節“ISDN PRI和BRI連線簡介”中介紹更多關於
DAHDI庫允許Asterisk與模擬和數字電話以及電話線互動,包括公共電話交換網(Public Switched Telephone Network,簡稱PSTN)。即使你現在暫時不需要連線模擬或數字電話,但也應該在新的系統中安裝DAHDI。
DAHDI
DAHDI為Digium Asterisk Hardware Device Interface簡寫,即Digium公司的Asterisk硬體裝置介面,它集成了一些模擬和數字電話卡的驅動和應用程式,以及其他Digium公司的產品。DAHDI驅動程式獨立於Asterisk,並可以被其他應用使用。
DAHDI原始碼可以分別下載兩個單獨的元件(dahdi-linux是DAHDI的驅動程式,dahdi-tools是DAHDI的應用程式)。也可以下載dahdi-linux-complete完整包,它包含了linux驅動和應用程式兩個部分。
貼士:為什麼DAHDI要分割為兩個不同的元件?
DAHDI被分割為兩個元件(linux驅動和應用),是為了讓第三方可以把DAHDI驅動移植到像FreeBSD這樣的其他作業系統,這樣我們就會有dahdi-linux和dahdi-freebsd等。
最新版本的libpri、DAHDI和Asterisk
2. 系統環境要求
為了順利編譯和安裝Asterisk,你需要在系統中安裝一個C編譯器和一些系統庫。
2.1 編譯器
編譯器是一個使原始碼(Asterisk的原始碼是用C語言編寫的)變成可執行程式的程式。雖然任何C語言編譯器都可以編譯Asterisk原始碼,但是我們強烈建議你使用GCC編譯器。它不僅是Linux和Unix系統下最流行的免費C語言編譯器,也是Asterisk開發者使用的編譯器。
如果GCC編譯器還沒有安裝到你的機器上,你只需使用相應的軟體包管理系統安裝即可。你還需要安裝GCC的C++部分,某些Asterisk模組將會用到它。
2.2 系統庫
除了C語言編譯器,還需要安裝一些系統庫。這些被Asterisk依賴的庫必須在編譯Asterisk之前安裝好。在大多數作業系統中,你需要安裝庫和與之相應的開發包。
貼士:開發庫
對於大多數作業系統,開發包名以-dev或者-devel結尾。例如,在Red Hat Linux系統中,你需要安裝“openssl”和“openssl-devel”兩個包。
你需要安裝的庫清單:
· OpenSSL
· ncurses
· newt
· libxml2
· Kernel headers(編譯DAHDI驅動用到)
我們建議你在編譯和安裝libpri、DAHDI和Asterisk之前,使用作業系統的軟體包管理系統來安裝這些庫。
貼士:找到正確的庫
如果你安裝Asterisk1.6.1.0或者更新的版本,在contrib/scripts子目錄下配備了一個名為install_prereq.sh的shell指令碼。如果執行 install_prereq test,它將輸入在你的作業系統上安裝必須系統庫所需要執行的命令,如果執行 install_prereq install,它將自動嘗試下載並安裝這些必須系統庫。
3. 解壓縮原始碼檔案
你下載到的libpri、DAHDI和Asterisk原始碼副檔名通常為.tar.gz或.tgz。這些檔案被親切的稱作tar包。這個名字來自Unix下的tar(tap archive磁帶歸檔的簡稱)應用。Tar包是為了便於複製而將一些檔案組合為一個檔案,然後通常使用像GZip一樣的工具進行壓縮。
我們使用tar命令從tar包中提取原始碼。下面假設你使用Linux系統,並已經下載了libpri、DAHDI和Asterisk的tar包儲存在/usr/local/src目錄下(你可能需要用root賬戶登陸以使這個目錄可寫)。版本號我們使用X、Y和Z來替代,我們假設你會使用下載下來的tar包中的版本號。另外請注意,我們在這裡展示的命令可能與您的系統命令提示符下的不一樣,不過不用擔心,這些命令應該差不多。
首先,我們切換到下載原始碼的目錄下:
# cd /usr/local/src
然後,使用tar命令逐一從tar包中提取原始碼,使用tar命令的-zxvf引數來告訴它我們要做什麼。Z引數表示先解壓縮再繼續,x引數表示從tar包中提取檔案,v引數表示輸出詳細(在每個檔案提取的時候打印出檔名),f引數表示我們要從一個tar包檔案中提取檔案,而不是從磁帶中。
# tar -zxvf libpri-1.X.Y.tar.gz
# tar -zxvf dahdi-linux-complete-2.X.Y+2.X.Y.tar.gz
# tar -zxvf asterisk-1.8.X.Y.tar.gz
現在,你應當注意到,系統為每一個tar包建立了一個子目錄,每個子目錄中都包含了從相應tar包中提取的檔案。我們接下來就可以編譯並且安裝這些元件了。
4. 編譯和安裝DAHDI
(未完待續。。。)