當(dāng)前部署Linux.NET環(huán)境的方式可謂是五花八門,既有傳統(tǒng)的源碼編譯的方式、又有各式各樣的一鍵安裝腳本、還有綠色包安裝方式,而隨著Mono官方的新站上線,更增加了采用RPM包的部署方式。那對于一名Linux.NET的初學(xué)者來說,我們又該如何選擇?下面,本文將對這幾種的安裝方式進(jìn)行優(yōu)缺點(diǎn)的比較,從而協(xié)助各位讀者選擇出最佳的部署方式。

本文中,我們將對下列的部署方式展開討論:

1、源碼編譯

2、一鍵安裝腳本

3、RPM包

4、綠色包

一、源碼編譯

通過源代碼編譯安裝部署Linux.NET可謂是最傳統(tǒng)并且最原始可靠的方式,通過獲取源代碼,并在物理機(jī)(虛擬機(jī))中進(jìn)行編譯,編譯器能夠有針對性的給機(jī)器編譯出最適合改機(jī)器運(yùn)行的二進(jìn)制執(zhí)行文件。同時,通過源代碼編譯的方式也是所有部署方式中最穩(wěn)定靠譜的方式。同時,采用源碼編譯的方式部署也是最靈活的。要想深入學(xué)習(xí)的讀者必須要掌握此方式部署。

想要通過源碼編譯的方式安裝部署Linux.NET,我們需要事先Get到一份源代碼,目前獲得Mono源代碼的方式主要分為兩種,一種是通過GitHub將Mono的托管代碼Pull下來執(zhí)行autogen再執(zhí)行make install的方式進(jìn)行編譯安裝部署,另外一種則是通過Mono/Source所發(fā)行的源碼包(tar.gz或者tar.bz2包)進(jìn)行./Configuration再執(zhí)行make install的方式編譯。

事實(shí)上,如果讀者們采用前者(也就是Git Pull的方式)來編譯部署環(huán)境,所獲取到的版本一般都會比從Mono/Source中發(fā)行的版本高(當(dāng)然在能夠編譯的情況下),對希望能夠盡快使用最高版本或者想嘗鮮的讀者,使用這種方式不失為一個好選擇。但選擇這個方式也有一定的缺點(diǎn),那就是我們在編譯之前需要先進(jìn)行Git Clone或者Git Pull代碼,這將使我們可能面臨上G的Git代碼倉庫需要下載,同時由于Mono中的external目錄下又包含了其他.NET項(xiàng)目的GIT倉庫,執(zhí)行autogen時,系統(tǒng)會檢查包括external目錄的代碼是否完整,因此編譯時系統(tǒng)也有可能再次的執(zhí)行Git Pull拉去相關(guān)代碼。另外還有一點(diǎn),在我們進(jìn)行Git Pull Master之后,我們也未必可以編譯通過。所幸的是,文章發(fā)布之后,LexLi給予了一些提醒,通過他的思路,我們發(fā)現(xiàn)了其實(shí)GitHub/Mono的Readmd中是有一盞當(dāng)前代碼是否能夠編譯的“提示燈”,通過觀察此“燈”所顯示的顏色我們就可以知道當(dāng)前的代碼是否可以編譯,另外在這里也有一個版本編譯測試歷史記錄,我們也可以根據(jù)它的編譯測試記錄獲知那一個提交版本的的源碼是可以編譯,然后只需把代碼ReSet到此版本即可再次進(jìn)行編譯。

而采用Mono/Source所發(fā)行的源碼包編譯的讀者,可靠性則大幅度提高,畢竟這個是Release版本。雖然當(dāng)中有個別的發(fā)行包因?yàn)槲募笔o法編譯,但是總得來說還是最可靠的,并且源碼包發(fā)行版大小一般都在百兆以內(nèi),相比于Git倉庫的上G代碼可謂是小巧得多。

最后,各位讀者無論是采用以上兩種方式中的那種,都需要花費(fèi)一段或漫長或短暫的編譯等待時間,并且編譯時可能會遇到一些Make Error的現(xiàn)象,這都需要各位讀者自己進(jìn)行克服處理。但無論怎么樣,這還是對想深入學(xué)習(xí)Linux.NET的讀者要求必須掌握的部署方式。

二、一鍵安裝腳本

由于采用源碼編譯方式都是直接采用Shell命令來操作,因此有不少的人士將這些Shell命令提取出來重新組裝成一個Shell腳本,只要執(zhí)行該腳本即可完成環(huán)境的部署,其中更有愛好者別出心裁,在命令行的基礎(chǔ)上加以改進(jìn),提供類似“界面”之流的方式,給予了較好的與用戶的交互。采用腳本式部署環(huán)境是解放生產(chǎn)力的標(biāo)志。

但即便如此,采用腳本安裝的方式仍然存在著相當(dāng)?shù)牟蛔悖潜闶遣捎媚_本安裝其實(shí)只是一個“禮盒”,“禮盒”里面的內(nèi)容依然是源代碼編譯方式,因此,采用腳本安裝所遇到的問題不會比采用源碼安裝的少。同時,采用腳本安裝仍然存在這“兼容性”的問題,這里值得注意,所謂的“兼容性”并不是指腳本的命令行不通用,而是由源碼編譯所“繼承”下來的“不兼容”,也就是環(huán)境的復(fù)雜性造成不同的Make Error所帶來的“不兼容”。此外,由于每個人都有自己的安裝風(fēng)格,有的人可能喜歡將東西安裝在“/usr”中(像宇內(nèi)、善友的教程等),有人喜歡安裝到“/usr/local/”中,也有人喜歡安裝到“/opt”中……總而言之,腳本中所編寫的安裝路徑純屬由撰寫者決定,安裝目錄可能并不是各位讀者所希望的路徑,這點(diǎn)也有一定的不足。

三、RPM包

伴隨著Mono新版官網(wǎng)的上線,依賴于Yum的RPM安裝方式也悄悄的出現(xiàn)在各位讀者的視野,一段時間以來,不少朋友開始或是為了嘗鮮(沒辦法,體驗(yàn)到Y(jié)um的甜頭之后恐怕很難回頭了)或是收到“官方”的指引紛紛采用了此種辦法部署Linux.NET環(huán)境。

我沒有嘗試過這種方式(懶得自己添加鏡像源),不過從不少朋友反(bao)饋(yuan)回(ma)來(niang)的信息來看,這種方式似乎是幾種方法中最殘(zi)念(sha)的了。由于RPM包隸屬于二進(jìn)制包的一種,安裝路徑已經(jīng)在包中預(yù)配置,無法更改,我們也無法獲知它到底安裝到哪里(只能find了),從一些通過此方式安裝的朋友所提供的資料來看,基本上會安裝到“/opt”目錄中(不過沒有具體目錄,有“/opt/”、“/opt/mono”甚至“/opt/201408xx/”目錄)。此外,采用RPM包方式安裝還有一項(xiàng)非常嚴(yán)重的問題,那就是采用此種方式安裝竟然沒有向環(huán)境變量注冊Mono/bin路徑,導(dǎo)致系統(tǒng)無法找到mono。

因此,我個人尤其不推薦此中安裝方式。

四、綠色包(jws.mono)

以上三種方式都有一個共同的特點(diǎn),那就是都需要在有網(wǎng)絡(luò)條件的情況下進(jìn)行。而綠色包與前者不同,綠色包是從使用源碼編譯好的機(jī)器中進(jìn)行抽取重組并進(jìn)行適當(dāng)?shù)男薷淖兂尚碌慕鈮杭纯蛇\(yùn)行的綠色版的Linux.NET運(yùn)行環(huán)境。

使用綠色包具有以下的幾項(xiàng)優(yōu)點(diǎn):

(1)、快速部署,由于采用此方式部署僅僅需要執(zhí)行一條解壓命令(有需要的可自行注冊環(huán)境變量),沒有編譯過程,大大節(jié)省了因?yàn)榄h(huán)境部署所需要消耗的寶貴時間。

(2)、針對性強(qiáng):由于每一款的綠色包都是針對其標(biāo)注的Linux發(fā)行版進(jìn)行編譯,因此綠色包具有比較強(qiáng)的發(fā)行版針對性。

(3)、精致而不失功能:使用過綠色包的讀者可能會發(fā)現(xiàn),它的打包文件大小甚至?xí)萂ono/Source所發(fā)行的源碼包還會小,但功能卻又沒有減少。這個秘密就在于Mono與MS.NET不同,Mono的庫是向下兼容的,因此,在每款的綠色包中,我們都會對“重復(fù)”的庫進(jìn)行剔除,讓包變得足夠精致。

但金無足赤,綠色包同樣也面臨一些問題,第一就是它無法升級(這項(xiàng)即將得到改善,在下個發(fā)行包中提供可用于升級的腳本),第二就是制作發(fā)行包是一項(xiàng)工作量大且耗時的活。我們需要對應(yīng)編譯并制作相應(yīng)發(fā)行版的包。

不過對于初學(xué)者和需要快速部署、大規(guī)模部署的讀者來說,綠色包還是最佳選擇,因?yàn)樗銐蛉菀?,因?yàn)樗銐蚩臁?

原文來自:jhonge.net

  哈爾濱品用軟件有限公司致力于為哈爾濱的中小企業(yè)制作大氣、美觀的優(yōu)秀網(wǎng)站,并且能夠搭建符合百度排名規(guī)范的網(wǎng)站基底,使您的網(wǎng)站無需額外費(fèi)用,即可穩(wěn)步提升排名至首頁。歡迎體驗(yàn)最佳的哈爾濱網(wǎng)站建設(shè)。