2014年6月20日

ASP.NET MVC - ASP.NET MVC vNext ( MVC 6 ) 於MAC上跑ASP.NET MVC (上篇) 安裝Mono

前篇介紹了用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了,所以他提示我,已經存在了。

SNAGHTML3a49bdd

接下來,我們要執行這些指令。

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需要這三個套件。
接下來,就用迴圈,將這三個壓縮檔通通解開。

SNAGHTML3a3a75b

完成後的圖如下;接下來就輸入以下指令編譯與安裝。

( 下圖的部分,指令key進去後沒截到圖,但我們可以從下圖看到,這三個套件都已經解開了 )

for i in */configure; do (cd `dirname $i`; ./configure --prefix=$PREFIX && make && make install); done
( 查資料的過程中有發現,有人這三個套件Build不起來,有人建議是要裝xcode…但小弟的Macbook本身就有裝xcode,所以過程是滿順利的…所以過程中有遇到問題,可以死馬當活馬醫,試試看吧… )

螢幕快照 2014-06-17 下午11.21.48

正確安裝完成後,我們要設定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

螢幕快照 2014-06-18 上午12.16.38

完成後,我們就可以使用make編譯了,編譯完成後可以再用make install安裝…

但正式開始使用make指令前,要先下make get-monolite-latest來取得最新的mcs compiler,不然會有錯誤make[6]: gmcs: No such file or directory的錯誤。

取得之後,就可以下make,當make跑了超久跑完之後,就可以下make install了。

( 下圖也沒截圖截到…反正就是跑很久就是了… )

螢幕快照 2014-06-18 上午12.22.05

接下來要調整一下預設的路徑位置,我們要去/private/etc/裡面的paths這個檔案去做修改;但因為這個檔案的權限是644 ( 644代表只有root可以讀寫,其他都只能讀,詳細可以去看Linux的權限設定 ),所以小弟先把它改成777,等改完檔案後,再調整回644。

( 指令如下圖,因為這算是基本的Linux指令,小弟就不多談了,請見諒~ )

螢幕快照 2014-06-18 上午12.37.01

這邊小弟是使用vi直接改了…如果不熟vi的朋友,可能會很吃力…看看能不能用ide的編輯器改…基本上,而如果是使用vi編輯的方法,就是進去vi後,按下i,就可以編輯內容,編輯好後,按下:wq,就可以儲存…如果編輯錯了,可以按下:!q來跳出VI,從新再來一次…

而這邊,我們要把/usr/local/bin放到/usr/bin之上,但這邊也要小心,如果原本/usr/bin有放大量的指令,這樣改,未來系統可能會有問題,不過基本上小弟本來就很少在OSX安裝那些東西,所以我是不怎麼怕啦XDDD。

螢幕快照 2014-06-18 上午12.36.25

編輯完成後,就把剛剛那個檔案改回644。

螢幕快照 2014-06-18 上午12.37.01

然後下Mono --version就可以看到mono的版本,一定要3.6.1以上…

螢幕快照 2014-06-18 上午12.38.12

基本上這樣就完成了~~初步就到這邊,後篇則是要改ASP.NET MVC的project.json檔,來達到可以run在OSX上的目的。

參考資料

2 則留言:

  1. Good! 期待下篇!

    回覆刪除
  2. Hi
    後篇在這邊,希望對您有幫助~~
    http://blog.sanc.idv.tw/2014/06/aspnet-mvc-aspnet-mvc-vnext-mvc-6_637.html

    回覆刪除