安裝 Rails – Apple 跟 Linux
在安裝軟體之前,可以趁機考慮用蘋果的作業系統。 記得剛接觸 Rails 的時候,常常看到好多 Rails 範例裡秀的都是用 Mac OSX? 而且用的編輯器都是畫面黑黑的 Textmate? 原因是 DHH用的就是 Textmate,其他學 Rails 的也跟著用了。 Rails 社群裡常見的笑話是:
A: Textmate 好貴,一套要美金 $60 !! B: 那才不貴呢!貴是貴在那台蘋果電腦!
因為 Textmate 只有在 OSX 上面才能跑,很多人為了要用那套軟體來寫 Rails 而跑去買了一台蘋果電腦。 會嘗試 Rails 的人,應該都是 Think Different 的人。 Think Different 當然就是蘋果電腦的座右銘。 DHH 為了用最好的工具,選擇了 Ruby 語言,也選了蘋果電腦。 在此不便開戰平台好壞論,只是要提醒,跟聰明人學習做事,自己也會變聰明喔。 我轉成使用蘋果電腦後,覺得有些作業方法在蘋果電腦上比較容易多了,用的也很開心,只是可以玩的遊戲比較少….
為甚麼要自己由原始碼來 compile 呢? Compile 的好處是,學會了這一套功夫就能打遍蘋果跟 Linux 天下,因為蘋果電腦的作業系統也是架在 unix 系統上的。 並且,安裝好後會有成就感喔。 這套安裝方法是演變 Hivelogic 網頁上教導安裝於蘋果電腦的方法。
文章範圍:
本文章會討論如何利用原始碼來安裝 Rails。 用到的電腦系統為蘋果電腦或 Linux。 安裝後的軟體有: Ruby, Ruby on Rails, Mongrel, MySQL。
/usr/local 的概念
我們會先了解 Linux 跟蘋果系統上軟體檔案應該放那裡,然後我們會安裝 Ruby 需要的工具 readline。 Readline 安裝好後就可以安裝 Ruby 了。 下一步就是安裝 RubyGems,然後利用 RubyGems 來安裝 Rails。
在安裝之前要先考慮到軟體要放哪。 由 Unix 系統來說,最好的,而且唯一的地方就是 /usr/local。 /usr/local 這個路徑是 Unix 系統指定為使用者自己編碼軟體的放置地方。 放在這裡的軟體在系統或別的軟體升級時不會被覆蓋或刪掉。
平常升級軟體時,升級程式會搜尋以前 compile 過的 binary 檔,然後把那個檔案蓋過。 這時候問題就來了。 新升級的軟體有新的功能沒錯,但是它也可能不再支援一些舊的功能了。 如果你的 Rails 程式有用到 一些 Ruby 舊的 method,但新一版的 Ruby 不支援了,那麼 Rails 程式就無法執行。 原本好好的的程式現在壞了,要從哪裡開始除錯? 為了避免這個難搞的陷阱,還是統一把安裝的軟體放在 /usr/local 好,才不會被升級軟體隨便覆蓋。
既然 Ruby 跟 Rails 的執行檔都放在 /usr/local, 我們就得跟系統說如果要用到 Ruby 或 Rails 時,先去 /usr/local 找看有沒有 Ruby 或 Rails 的執行檔。 在你的 home folder 裡有一個隱藏的檔案叫 .bash_login。 我們修改這個檔案就可以指示系統去哪裡找了。 Unix 系統上可以用 vi 來修改:
vi ~/.bash_login
如果你要用別的軟體的話,把 vi 改成那套軟體的名字。 蘋果電腦可以用免費的軟體 TextWrangler . 打開檔案後把這行放在第一行:
export PATH="/usr/local/bin:/usr/local/sbin:$PATH"
一定要放在第一行喔,不然系統可能會跑去別的路徑找。改完後存檔並把檔案執行一次才有效:
. ~/.bash_login
/usr/local/ 這概念跟 Ruby 的檔案有什麼實際關係呢? 當你開始寫 Rails 程式時,會看到一些檔案名稱有 .rb 結尾,這些就是 Ruby 檔案。 打開任何 Ruby 檔,就會在左上角看到 #!/usr/local/bin/ruby 。 這段字的目地是跟系統說,如要執行這一頁 script 的話,用 /usr/local/bin/ruby 目錄底下的 Ruby 程式來執行。
安裝必要的工具
XCode
先安裝 XCode。 這套軟體在蘋果系統的 DVD 可以找到。 如果沒有 DVD 的話,到 <a href=http://connect.apple.com/”> Apple Developer Connection 下載 XCode Tools。 下載後,打開 XcodeTools.mpkg 就可安裝了。 做任何軟體安裝之前都一定要先安裝這套。 現在去安裝吧,安裝好回來再繼續讀。 這個動作在 Linux 電腦上不需要。
readline
在安裝 Ruby 之前先安裝 readline。 沒安裝 readline 的話 Ruby 也安裝不起來。 我們先開個檔案夾來放原始碼。這些指令在任何的檔案夾裡都可以下:
sudo mkdir -p /usr/local/src sudo chgrp admin /usr/local/src sudo chmod -R 775 /usr/local/src cd /usr/local/src
這些指令下完後你就會在 /usr/local/src 檔案夾裡。 我們會把所有的原始碼放在這個檔案夾。
Unix 上安裝軟體步驟都大致相同。 軟體原始碼可直接下指令來下載,configure 後再 compile,然後安裝。
以下的指令一行一行來輸入:
curl -O ftp://ftp.gnu.org/gnu/readline/readline-5.1.tar.gz tar xzvf readline-5.1.tar.gz cd readline-5.1 ./configure --prefix=/usr/local make sudo make install cd ..
來看看上面每一行是做什麼: 1. 下載壓縮過的 readline 的原始檔 2. 解壓縮 3. 進去解壓縮後的檔案夾 4. 把路徑設為 /usr/local 5. compile 原始檔 6. 安裝軟體。 你要有 superuser 的權限才可安裝。 sudo (SuperUser Do) 讓你輸入 root 的密碼。 7. 跳出檔案夾
這些步驟正如剛剛所說的下載,configure,compile,安裝。
在蘋果電腦上如果你有下面著些錯誤訊息就表示你沒有安裝 Xcode:
checking whether make sets $(MAKE)... no checking for gcc... no checking for cc... no checking for cc... no checking for cl... no configure: error: no acceptable C compiler found in $PATH
安裝 Ruby
安裝 Ruby 的步驟也跟 readline 的幾乎一模一樣,只是後面有多加了一個安裝 documentation 的步驟。
curl -O ftp://ftp.ruby-lang.org/pub/ruby/1.8/ruby-1.8.6.tar.gz tar xzvf ruby-1.8.6.tar.gz cd ruby-1.8.6 ./configure --prefix=/usr/local --enable-pthread --with-readline-dir=/usr/local make sudo make install sudo make install-doc cd ..
安裝 RubyGems
RubyGems 是用來安裝 Ruby 寫出來的程式。 因為 Rails 是用 Ruby 寫出來的,所以也可以用 RubyGems 來安裝。 但安裝 Rails 之前,就得先安裝 RubyGems。 下這些指令:
curl -O http://files.rubyforge.mmmultiworks.com/rubygems/rubygems-0.9.2.tgz tar xzvf rubygems-0.9.2.tgz cd rubygems-0.9.2 sudo /usr/local/bin/ruby setup.rb cd ..
這段如安裝不成功就表示 path 沒設好,請再參照上面 ” /usr/local 的概念 “
安裝 Rails
RubyGems 安裝好後下這個指令就可安裝 Rails 了:
sudo gem install rails --include-dependencies
這就是有了 RubyGems 方便的地方。以後有關 Ruby 的程式用同樣的方法也可以安裝。
如果你有以下的錯誤訊息,就表示最前面的 path 沒設好,請回到 “/usr/local 的概念” 再重設一次。
/usr/local/bin/gem:3:in `require': No such file to load -- rubygems (LoadError) from /usr/local/bin/gem:3
安裝MySQL 資料庫
因為 MySQL 自己有替不同的平台做最佳化,所以我們不用自己 compile. 到 http://www.mysql.org/downloads/mysql/ 來下載你的作業系統的版本後安裝。 安裝後使用者的名字是 root,密碼沒有設。 如果是蘋果電腦的話,要注意他有兩套安裝軟體: PowerPC 跟 x86. x86 指的就是最新一代用 Intel Processor 的電腦。
下載後,在蘋果電腦上除了安裝 MySQL 之外 (看起來應該像 mysql-5.0.37-osx10.4-i686.pkg),要安裝下載檔裡的 MySQLStartupItem.pkg 和 MySQL.prefPane。 MySQLStartupItem.pkg 會讓電腦開動時就跑 MySQL。 MySQL.prefPane 會把 MySQL 加到 System Preferences 上: (看最下面那排)


安裝 MySQL 跟 Ruby 的連結碼 (bindings)
這個連結碼可以不裝,但裝了會快10-15%:
sudo gem install mysql -- --with-mysql-dir=/usr/local/mysql
這個指令下完後就安裝好了。 如果電腦有問你要裝哪一版本的話,微軟的要選 mswin32,其他的要選 mysql 2.7 或是更新的版本。
April 28th, 2007 at 5:21 am
前陣子發現這個網站的 !<br/>對於 國家高速網路與計算中心 也肯開始支持 ROR ! 真令人高興 !<br/>因為小弟正因為要如何讓 ROR 可以在 CentOS 4 和 Solaris 10 上執行傷透腦筋 !<br/>不知道何時可以看到 相關方面的文章 !<br/><br/>謝謝
April 30th, 2007 at 8:42 am
恩,雖然說是推廣,但人力只有我一個而已。我是把學到的東西花些時間分享給大家。以後的方向可能會朝 RoR 跟 Flex 的結合,所以對於 CentOS 跟 Solaris 可能沒機會碰到喔。
April 30th, 2007 at 6:57 pm
您好!<br/>我是臺南大學數位所的學生!<br/>我的問題其實應該說是要怎樣讓 ROR 可以在 Linux 上面執行,<br/>網路上很多都是講解 M$ 的用法 ,<br/>點一點就可以跑了 !<br/>但 ROR 不是推鑑使用 Linux 嗎 ?<br/>而我有成功在Linux 和 Solaris10 上安裝好ROR !<br/>只是對於要怎樣讓 Apache 和 ROR 搭配使用,<br/>一直是個困擾 ! 始終搞不定 . .<br/>網路上又很少這方面的文章 !<br/>所以當發現這裡時才會如此興奮 !<br/>不知您是否有成功在 Linux 上搭配Apache執行過 ?<br/>希望您可以多多指點!感激不盡<br/>最後 . . 我也很努力的在學校裡跟教授還有學生推廣ROR的好!<br/>可惜的是人力也是只有我一個人!<br/><br/>http://dark-circles.us/rewrite.php/category-95.html<br/>這裡是我研究的筆記 ! 還請您多多指教 !!謝謝
May 1st, 2007 at 2:58 am
我是沒有弄過 Apache 上的,因為 RoR 好像建議用 Mongrel 來當 server. 下面這個文章有看過嗎?<br/><br/>http://wiki.rubyonrails.org/rails/pages/GettingStartedWithRails<br/><br/>文章裡尋找 “Apache” 關鍵字,它有一些 Apache 設定上的建議。
May 18th, 2007 at 5:41 am
謝謝提供這麼詳盡的中文安裝教學。我跑到最後還是出了一點問題 (Tiger Server),可能跟mysql路徑有關?您的.bash_login 設置這篇文章有所不同!
May 18th, 2007 at 5:52 am
對,我的是不同沒錯,但是我只是多了這一小串字,其他的都一樣:<br/><br/>/usr/local/mysql/bin:<br/><br/>我為甚麼會多這串字呢?我也不知道,可能是安裝 mysql 時它自己加的吧? <br/><br/>你有甚麼錯誤訊息呢?
May 18th, 2007 at 6:45 am
Tiger Server 10.4.4之後的 mysql.sock 有一些改變,我不曉得有沒有影響到路徑。程序到編譯RubyGem時有點小問題,但可能不影響:<br/>Successfully built RubyGem<br/> Name: sources<br/> Version: 0.0.1<br/> File: sources-0.0.1.gem<br/>Removing old RubyGems RDoc and ri…<br/>Installing rubygems-0.9.3 ri…<br/>Installing rubygems-0.9.3 rdoc…<br/><br/>As of RubyGems 0.8.0, library stubs are no longer needed.<br/>Searching $LOAD_PATH for stubs to optionally delete (may take a while)…<br/>…done.<br/>No library stubs found.<br/><br/>後來進而安裝rails時就停住了:<br/>ERROR: While executing gem … (Gem::GemNotFoundException)<br/> Could not find rails (> 0) in any repository<br/><br/>我將.bash_login 刪掉mysql那句,重新跑一次就OK!
May 18th, 2007 at 7:08 am
好,文章我改過了,我不知道那小段會有影響,謝謝通知喔,耽誤了你的時間了。
May 20th, 2007 at 9:25 pm
您好 !<br/>之前研究您的文章研究了很久 !<br/>我總算在 CentOS 以及 Solaris10 + Apache2 + PHP5 + Mysql5 的平臺上,<br/>可以開始嘗試ROR了!<br/>真是感謝您的文章以及您的建議文章 !<br/>http://dark-circles.us/rewrite.php/read-485.html<br/>過幾天剛好要報專討 !<br/>為了要好好推廣一下ROR,<br/>我挑了這篇Geer D,”Will software developers ride Ruby on Rails to success,” IEEE Computer, vol.39, Issue2, pp.18-20, Feb, 2006.
October 29th, 2009 at 2:52 am
請問一下 我是10.6的mac使用者
我再終端機打make並沒有執行compile的動作
它反而告訴我command not found
請問一下是為什麼@@? 謝謝^^
March 3rd, 2010 at 4:19 pm
因為沒有安裝 XCode, 請到上面的 “安裝必要的工具” 看怎麼安裝 XCode