わさっきhb

大学(教育研究)とか ,親馬鹿とか,和歌山とか,とか,とか.

Rubyのスナップショットをビルド―ruby-2.?.0-r*対応―

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スクリプトを編集しました.
最新版スナップショットをもとに(安定版でも同様です),ディレクトリ名・ファイル名がどのようになるかを解説しますと:

そしてあとは,"cd $dir2" でディレクトリを移動させて,configureとなるわけです.
手元のいくつかのCygwinおよびLinux環境で,ビルドの動作確認,そしてrubyのバージョンアップをしました.


いきなりですが問題です.

tarballのファイル名を入力にとり,「伸張して作られるディレクトリ名」だけを出力するワンライナーを作ってください.

さっそくですが解答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'