前篇介紹了用USB將編譯好的ASP.NET MVC網站丟到另外一台機器上,就算沒裝K環境,還是可以正常地跑;但是,大家這樣就滿足了嗎?;下一代的ASP.NET MVC vNext可不只是這樣而已,現在也支援了跨平台執行ASP.NET MVC的應用程式;所以小弟我,這次就來試驗一下,如何跨到Apple的MAC OS上!! ( 第一次覺得小弟的Macbook那麼有用… )
但Mac底下沒有CLR阿…那該怎麼辦呢??,沒錯,就是靠Mono啦…所以這篇,就來教大家,如何安裝Mono…
基本上,在Mac底下安裝Mono說難不難,說簡單也不簡單…基本上只要照著以下指令下,通常都可以成功~
警告!! 目前Mono這個版本,也並非正式釋出,所以也會有很多的bug,小弟是為了興趣而嘗鮮,如要用在正式環境,還是建議等推出正式版本,再來裝設。
PREFIX=/usr/local # Ensure you have write permissions to /usr/local mkdir $PREFIX sudo chown -R `whoami` $PREFIX # Downlaod and build dependencies mkdir ~/Build cd ~/Build curl -O ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz curl -O ftp://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz curl -O ftp://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz for i in *.tar.gz; do tar xzvf $i; done for i in */configure; do (cd `dirname $i`; ./configure --prefix=$PREFIX && make && make install); done PATH=$PREFIX/bin:$PATH git clone https://github.com/mono/mono.git cd mono CC='cc -m32' ./autogen.sh --prefix=$PREFIX --disable-nls --build=i386-apple-darwin11.2.0 make get-monolite-latest make make install
好,現在開始,我們一步一步地做。
首先我們先設一下變數,PREFIX=/usr/local,這樣之後就不怕Key錯路徑了,而且未來的mono所包好的dll也會放到這個目錄之下。
接下來,要建立剛剛我們設定的那個路徑的目錄,並且將我們自己設為這個目錄的owner,所以會下這兩個指令;另外要注意,'whoami’記得換成自己的名稱喔 ( 連單引號都不用Key )。
mkdir $PREFIX sudo chown -R `whoami` $PREFIX
下圖這邊因為我已經建立過usr/local了,所以他提示我,已經存在了。
接下來,我們要執行這些指令。
mkdir ~/Build cd ~/Build curl -O ftp://ftp.gnu.org/gnu/autoconf/autoconf-2.69.tar.gz curl -O ftp://ftp.gnu.org/gnu/automake/automake-1.14.tar.gz curl -O ftp://ftp.gnu.org/gnu/libtool/libtool-2.4.2.tar.gz
for i in *.tar.gz; do tar xzvf $i; done
這些指令就是在家目錄建立一個Build目錄,並且下載三個要用到的套件;分別是autoconf、automake、libtool,這是因為編譯Mono需要這三個套件。
接下來,就用迴圈,將這三個壓縮檔通通解開。
完成後的圖如下;接下來就輸入以下指令編譯與安裝。
( 下圖的部分,指令key進去後沒截到圖,但我們可以從下圖看到,這三個套件都已經解開了 )
for i in */configure; do (cd `dirname $i`; ./configure --prefix=$PREFIX && make && make install); done
( 查資料的過程中有發現,有人這三個套件Build不起來,有人建議是要裝xcode…但小弟的Macbook本身就有裝xcode,所以過程是滿順利的…所以過程中有遇到問題,可以死馬當活馬醫,試試看吧… )
正確安裝完成後,我們要設定PATH這個變數,然後使用git下載最新版本的mono;並且進入mono目錄,來下指令檢查與編譯前準備。
( 注意,mono的source也要放到剛剛上面下載下來的同一個目錄裡面,也就是Build裡面,不然會出錯 )。
PATH=$PREFIX/bin:$PATH git clone https://github.com/mono/mono.git cd mono CC='cc -m32' ./autogen.sh --prefix=$PREFIX --disable-nls --build=i386-apple-darwin11.2.0
完成後,我們就可以使用make編譯了,編譯完成後可以再用make install安裝…
但正式開始使用make指令前,要先下make get-monolite-latest來取得最新的mcs compiler,不然會有錯誤make[6]: gmcs: No such file or directory的錯誤。
取得之後,就可以下make,當make跑了超久跑完之後,就可以下make install了。
( 下圖也沒截圖截到…反正就是跑很久就是了… )
接下來要調整一下預設的路徑位置,我們要去/private/etc/裡面的paths這個檔案去做修改;但因為這個檔案的權限是644 ( 644代表只有root可以讀寫,其他都只能讀,詳細可以去看Linux的權限設定 ),所以小弟先把它改成777,等改完檔案後,再調整回644。
( 指令如下圖,因為這算是基本的Linux指令,小弟就不多談了,請見諒~ )
這邊小弟是使用vi直接改了…如果不熟vi的朋友,可能會很吃力…看看能不能用ide的編輯器改…基本上,而如果是使用vi編輯的方法,就是進去vi後,按下i,就可以編輯內容,編輯好後,按下:wq,就可以儲存…如果編輯錯了,可以按下:!q來跳出VI,從新再來一次…
而這邊,我們要把/usr/local/bin放到/usr/bin之上,但這邊也要小心,如果原本/usr/bin有放大量的指令,這樣改,未來系統可能會有問題,不過基本上小弟本來就很少在OSX安裝那些東西,所以我是不怎麼怕啦XDDD。
編輯完成後,就把剛剛那個檔案改回644。
然後下Mono --version就可以看到mono的版本,一定要3.6.1以上…
基本上這樣就完成了~~初步就到這邊,後篇則是要改ASP.NET MVC的project.json檔,來達到可以run在OSX上的目的。