What have you found for these years?

2010-01-06

裝 ultraviolet

需要裝 oniguruma..

> sudo port install oniguruma5
但是 oniguruma 不支援 ruby 1.9, 因此用 mac system ruby

> /usr/bin/gem install oniguruma
會失敗,因為 mac system ruby 不認得 /opt/local
需要 patch extconf.rb... 方法有點麻煩 :(

> gem fetch oniguruma
取得 oniguruma-1.1.0.gem

> mkdir oniguruma
> tar -zxf oniguruma-1.1.0.gem -C oniguruma
可以取得 data.tar.gz 和 metadata.gz

> cd oniguruma
> tar -zxf data.tar.gz
取出所有 gem files

> zcat metadata.gz |
ruby -e 'puts Gem::Specification.from_yaml(
$stdin.read).to_ruby' > oniguruma.gemspec
這個 metadata.gz 其實是 gemspec 的 yaml 格式...
這樣做可以還原 gemspec. 千萬別想說用 rake 產出來,超麻煩。
還要裝 hoe 啦,什麼鬼啦什麼的... 直接用抽的比較快。

> vim ext/extconf.rb
開始動手腳。$CFLAGS 加入:
'-arch i386 -arch x86_64 -I/opt/local/include'
我不知道為什麼需要 -arch, 但沒加直接 make 會有問題。
還有追加:$LDFLAGS='-L/opt/local/lib -lonig'

> gem build oniguruma.gemspec
把 hack 包回 .gem

> /usr/bin/gem install oniguruma-1.1.0.gem
裝 hack 版。其中會執行:
/usr/bin/ruby ext/extconf.rb 產生 ext/Makefile
有改過 $CFLAGS 後就能正確找到 oniguruma 的 header.

> /usr/bin/gem install ultraviolet
終於可以正常裝好了。

垃圾自己清... 應該是這些吧?
> cd ..
> rm -r oniguruma # 工作目錄
> rm oniguruma-1.1.0.gem # 網路抓的
> rm data.tar.gz # 上面拆出來的
> rm metadata.gz # 同上

0 retries:

Post a Comment

All texts are licensed under CC Attribution 3.0