在上一篇提到 FreeBSD 上暫時因為 RubyGems 版本問題,沒辦法裝 Merb 1.0,我決定自己來惡搞...
一開始是想裝 Ruby 1.9,據說內建 RubyGems,但裝上去後發現內建的版本是 RubyGems 1.0.1,比 FreeBSD Ports 的還舊,還是自己動手把 Ports 裡的 RubyGems 升級好了...
要將 FreeBSD Ports 裡的 RubyGems 更新到 1.3.1,最麻煩的是要生出 pkg-plist,這點由 ports maintainer jw at innerewut.de 做的差不多了,他寫了 x-generate-plist 會幫你產生 pkg-plist,所以很容易就把 pkg-plist 做完然後 send-pr。(參考 ports/128731: [PATCH] devel/ruby-gems: update to 1.3.1,裡面有 patch file)
升級完成後就是要裝 Merb 了...
我的打算是等 clsung 更新 www/rubygem-merb 前都先完全用 gem 管理 RubyGems 套件,而不透過 Ports 管理 (他是這個 ports 的 maintainer)。所以接下來就是跑 sudo gem install merb
。
跑到一半會喊 sqlite3.h
不存在,先把 databases/sqlite3 裝進系統,再用 sudo gem install do_sqlite3 --with-sqlite3-dir=/usr/local
把 do_sqlite3 裝進去。接著繼續跑 sudo gem install merb
把剩下的套件都裝完。
然後裝一些一定會用到的東西,像是對 MySQL 的支援套件:sudo gem install do_mysql
。
大致上就是這樣...
Update:還少了 sudo gem install json
,剛剛要 merb-gen app project
的時候發現會說少了 Json::Iconv 而不能跑 XD
Update:跑 merb 的時候發現還少了 DataMapper,所以要再裝 sudo gem install datamapper
。
Update:結果還是一直喊找不到 dm-types...
Update:還少了 sudo gem install mongrel
。
Update:dm-types 的問題可以在這篇回報看到一個 patch,這個 patch 預定在 1.0.1 會修正,在還沒修正前需要自己更新:I have dm-types gem installed but still get - FATAL: The gem dm-types (= 0.9.7, runtime), [] was not found。
我最後是用
sudo gem install do_sqlite3 -- --with-sqlite3-dir=/usr/local
才把 do_sqlite3 裝上去的 :)
後來發現這招一勞永逸
sudo thor merb:stack:install --edge