rbenv install ではまった件
先日Ubuntu 12.04にrbenv経由でrubyを入れようとしたところ、
% rbenv install 1.9.3-p429 Downloading yaml-0.1.4.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b -> http://pyyaml.org/download/libyaml/yaml-0.1.4.tar.gz BUILD FAILED Inspect or clean up the working tree at /tmp/ruby-build.20130701184855.7206 Results logged to /tmp/ruby-build.20130701184855.7206.log Last 10 log lines: checksum mismatch: yaml-0.1.4.tar.gz (file is corrupt) expected 36c852831d02cf90508c29852361d01b, got 956baf72fd20659d7045498cc3954bf2 : -q curl: (33) HTTP server doesn't seem to support byte ranges. Cannot resume. checksum mismatch: yaml-0.1.4.tar.gz (file is corrupt) expected 36c852831d02cf90508c29852361d01b, got 956baf72fd20659d7045498cc3954bf2 : -q
と、チェックサム不整合を起こしてビルドが通らない事態に。
Google先生その他に訪ねてみても、これといった回答は得られず。
埒が明かなくなってきたのでruby_buildの中身を見に行く。
すると、~/.rbenv/plugins/ruby_build/bin/ruby_buildに以下のようなコードがあった。
compute_md5() { if type md5 &>/dev/null; then md5 -q elif type openssl &>/dev/null; then local output="$(openssl md5)" echo "${output##* }" elif type md5sum &>/dev/null; then local output="$(md5sum -b)" echo "${output% *}" else return 1 fi }
「md5コマンドがあればそれを使う」となっている。
ここでやっと原因がわかった。$HOME/binに手製のスクリプトを書いてパスを通していたため、間違ってそれが呼び出されていたらしい。
とりあえず$HOME/bin/md5をリネームして再度試す。
% rbenv install 1.9.3-p429 Downloading yaml-0.1.4.tar.gz... -> http://dqw8nmjcqpjn7.cloudfront.net/36c852831d02cf90508c29852361d01b Installing yaml-0.1.4... Installed yaml-0.1.4 to /home/dplusplus/.rbenv/versions/1.9.3-p429 Downloading ruby-1.9.3-p429.tar.gz... -> http://ftp.ruby-lang.org/pub/ruby/1.9/ruby-1.9.3-p429.tar.gz Installing ruby-1.9.3-p429... Installed ruby-1.9.3-p429 to /home/dplusplus/.rbenv/versions/1.9.3-p429
無事インストール終了。
いやはや、間抜けなオチであった。