Apr 24
安裝 Rails – Apple 跟 Linux
icon1 Li Cheng | icon2 Uncategorized | icon4 04 24th, 2007| icon311 Comments »

安裝 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 或是更新的版本。

11 Responses

  1. Dark-Circles Says:

    前陣子發現這個網站的 !<br/>對於 國家高速網路與計算中心 也肯開始支持 ROR ! 真令人高興 !<br/>因為小弟正因為要如何讓 ROR 可以在 CentOS 4 和 Solaris 10 上執行傷透腦筋 !<br/>不知道何時可以看到 相關方面的文章 !<br/><br/>謝謝

  2. qwerblog Says:

    恩,雖然說是推廣,但人力只有我一個而已。我是把學到的東西花些時間分享給大家。以後的方向可能會朝 RoR 跟 Flex 的結合,所以對於 CentOS 跟 Solaris 可能沒機會碰到喔。

  3. Dark-Circles Says:

    您好!<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&lt;br/>這裡是我研究的筆記 ! 還請您多多指教 !!謝謝

  4. qwerblog Says:

    我是沒有弄過 Apache 上的,因為 RoR 好像建議用 Mongrel 來當 server. 下面這個文章有看過嗎?<br/><br/>http://wiki.rubyonrails.org/rails/pages/GettingStartedWithRails&lt;br/><br/>文章裡尋找 “Apache” 關鍵字,它有一些 Apache 設定上的建議。

  5. atlaswu Says:

    謝謝提供這麼詳盡的中文安裝教學。我跑到最後還是出了一點問題 (Tiger Server),可能跟mysql路徑有關?您的.bash_login 設置這篇文章有所不同!

  6. qwerblog Says:

    對,我的是不同沒錯,但是我只是多了這一小串字,其他的都一樣:<br/><br/>/usr/local/mysql/bin:<br/><br/>我為甚麼會多這串字呢?我也不知道,可能是安裝 mysql 時它自己加的吧? <br/><br/>你有甚麼錯誤訊息呢?

  7. atlaswu Says:

    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!

  8. qwerblog Says:

    好,文章我改過了,我不知道那小段會有影響,謝謝通知喔,耽誤了你的時間了。

  9. Dark-Circles Says:

    您好 !<br/>之前研究您的文章研究了很久 !<br/>我總算在 CentOS 以及 Solaris10 + Apache2 + PHP5 + Mysql5 的平臺上,<br/>可以開始嘗試ROR了!<br/>真是感謝您的文章以及您的建議文章 !<br/>http://dark-circles.us/rewrite.php/read-485.html&lt;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.

  10. 請問一下~mac上make指令 Says:

    請問一下 我是10.6的mac使用者

    我再終端機打make並沒有執行compile的動作

    它反而告訴我command not found

    請問一下是為什麼@@? 謝謝^^

  11. Li Cheng Says:

    因為沒有安裝 XCode, 請到上面的 “安裝必要的工具” 看怎麼安裝 XCode :)

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.

| Powered by Wordpress Themes

Copyright © 本網站由臺灣國家高速網路與計算中心 格網技術組 贊助
2008 :)