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

無事インストール終了。


いやはや、間抜けなオチであった。