2か月ぶりに,Rubyの最新版スナップショットと安定版スナップショットをビルドしてみると,なんだか失敗していしました.
ビルドには,自作のruby-installコマンドを使っています.
ともあれ,メッセージをたどっていくと,snapshot.tar.gzとstable-snapshot.tar.gzのダウンロードは成功,伸張も成功,その後で失敗しているようです.
以前,すなわち7月上旬までは,伸張して作られるディレクトリ名が,「snapshot」と「stable-snapshot」でした.しかし昨日は,最新版スナップショットは「ruby-2.1.0-r42910」,安定版スナップショットは「ruby-2.0.0-r42915」となっていました.
これだけならディレクトリ名を変更して,configure,make,make installと実行していけばいいのですが,今後,リビジョン番号はどんどん上がっていくわけですし,「2.1.0」「2.0.0」といったバージョンのところも変わり得ます.そうなっても,ruby-installを実行するだけで,ビルドできるようにしたいところです.
そのあたりに注意して,https://gist.github.com/takehiko/5066720のスクリプトを編集しました.
最新版スナップショットをもとに(安定版でも同様です),ディレクトリ名・ファイル名がどのようになるかを解説しますと:
- ~/src のディレクトリに移動します.
- "wget -O $tgz $uri" により,ftp://ftp.ruby-lang.org/pub/ruby/snapshot.tar.gz をダウンロードし,ruby-sn-20130912.tgz というファイル名で保存します.
- "mkdir $dir1" により,ディレクトリ ruby-sn-20130912_tmp を作ります.
- "tar xvzfC $tgz $dir1" により,ディレクトリ ruby-sn-20130912_tmp の下に,ruby-sn-20130912.tgz を伸張します.ディレクトリ ruby-sn-20130912_tmp/ruby-2.1.0-r42910 が新たにでき,その下にディレクトリやファイルが多数,作られます.
- "mv $dir1/r* $dir2" により,ディレクトリ名 ruby-sn-20130912_tmp/ruby-2.1.0-r42910 を ruby-sn-20130912 に移動および変更します.「r*」のおかげで,rubyのバージョンやリビジョン番号を問いません.
- "rmdir $dir1" により,用済みとなったディレクトリ ruby-sn-20130912_tmp を削除します.
そしてあとは,"cd $dir2" でディレクトリを移動させて,configureとなるわけです.
手元のいくつかのCygwinおよびLinux環境で,ビルドの動作確認,そしてrubyのバージョンアップをしました.
いきなりですが問題です.
さっそくですが解答2つです.tarコマンドの引数だけでは良い方法がなさそうで.次のようにしました.
tar tvzf ruby-sn-20130912.tgz | head -n 1 | sed -e 's/ \+/ /g' | cut -d ' ' -f 6 | sed -e 's,/,,'
tar tvzf ruby-sn-20130912.tgz | ruby -pe 'print $_.split(/ +/)[-1].sub(%r!/!){''};break'