Ruby を Subversion からチェックアウトしてコンパイル
ruby の trunk をそろそろ使い始めようと思い、CentOS 5 で試してみる
$ mkdir -p ~/svn/ruby $ cd ~/svn/ruby $ svn co http://svn.ruby-lang.org/repos/ruby/trunk $ cd trunk $ ./configure --prefix=~/local
ってあれ。configureない。なので autoconf したら
$ autoconf configure.in:5: error: Autoconf version 2.60 or higher is required configure.in:5: the top level autom4te: /usr/bin/m4 failed with exit status: 63
がーん。CentOS5じゃコンパイルできんのか。
てわけで autoconf の最新版を入手。
$ cd ~/src $ wget http://ftp.gnu.org/gnu/autoconf/autoconf-2.63.tar.gz $ tar -xzf autoconf-2.63.tar.gz $ cd autoconf-2.63 $ ./configure --prefix=~/local configure: error: expected an absolute directory name for --prefix: ~/local
フォオオオオ
このへんのレイヤのこと判らないのばればれ。
$ ./configure --prefix=`echo ~/local` $ make $ make install
やっと成功。これで autoconf 使えるはず。
$ cd ~/svn/ruby/trunk $ ~/local/bin/autoconf
これも成功。
$ cd ~/svn/ruby/trunk $ ./configure --prefix=`echo ~`/local/ --program-suffix=_trunk $ make (略) ./miniruby -I./lib -I.ext/common -I./- -r./ext/purelib.rb "./tool/transcode-tblgen.rb" -vo "enc/trans/big5.c" "enc/trans/big5.trans" /home/kat/svn/ruby/trunk/lib/optparse.rb:1626: [BUG] Segmentation fault ruby 1.9.2dev (2009-03-14 trunk 22957) [i686-linux]
ちょ。SEGVった。
報告すべきなんだろうかこれ。
1.9をでやっても起きない。
$ svn co http://svn.ruby-lang.org/repos/ruby/tags/v1_9_1_0 $ cd v1_9_1_0/ $ ./configure --prefix=`echo ~`/local/ --program-suffix=1.9 $ make $ make install $ ~/local/bin/ruby1.9 -e 'puts "hello"' hello
まぁ基本的にrubyの内部コード見たかっただけなのでこれでも良い。
$ ~/local/bin/ruby1.9 --dump=insn -e 'puts "hello"' == disasm: <RubyVM::InstructionSequence:<main>@-e>====================== 0000 trace 1 ( 1) 0002 putnil 0003 putstring "hello" 0005 send :puts, 1, nil, 8, <ic> 0011 leave
仕上げに PATH に ~/local/bin を入れておく。
とりあえず目的達成。