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