事のあらまし
- arch linux で、
- rvm install 2.1.1 をやってみたところ
- エラーになってインストールに失敗する
少し細かく見てみると
- rvm install 2.0.0 でも同様に失敗する
- それ以下のバージョンをインストールしてみると問題ない
- どうやら途中でコンパイルエラーになっている模様。以下コンパイルエラー時のログ。
readline.c: In function 'Init_readline':
readline.c:1886:26: error: 'Function' undeclared (first use in this function)
rl_pre_input_hook = (Function *)readline_pre_input_hook;
^
readline.c:1886:26: note: each undeclared identifier is reported only once for each function it appears in
readline.c:1886:36: error: expected expression before ')' token
rl_pre_input_hook = (Function *)readline_pre_input_hook;
^
readline.c: At top level:
readline.c:530:1: warning: 'readline_pre_input_hook' defined but not used [-Wunused-function]
readline_pre_input_hook(void)
^
Makefile:227: recipe for target 'readline.o' failed
make[2]: *** [readline.o] Error 1
make[2]: Leaving directory '/home/aka/.rvm/src/ruby-2.0.0-p451/ext/readline'
exts.mk:180: recipe for target 'ext/readline/all' failed
make[1]: *** [ext/readline/all] Error 2
make[1]: Leaving directory '/home/aka/.rvm/src/ruby-2.0.0-p451'
uncommon.mk:179: recipe for target 'build-ext' failed
make: *** [build-ext] Error 2
解決策
↓の投稿では rbenv で同様ことが起こっている模様。
rbenv installで失敗する問題を解消 on Arch Linux
参考にさせていただきました。ありがとうございました。
以下、rvm を使っている場合の修正方法。
パッチを入手してあてる
以下にて修正パッチが公開されているので、あててもよし、見ながら直してもよし
https://projects.archlinux.org/svntogit/packages.git/tree/ruby/trunk/0001-Fix-undeclared-identifier-error-by-using-the-actual-.patch?id=d54cc2645013754f6a303075eb22df1eecb7676aあらためてビルドするとおそらく通る
$ cd [ソースがダウンロードされているディレクトリ]/src
$ make
$ make install
ビルドが通っても、rvm use 2.1.1 とやって使う対象に設定しようとするとgemsetがどうのと言われて設定できない
何とかする。 rvm use 2.1.1@newgemset --create --default とやると gemset がよしなに作られる。
rvm use 2.1.1 を改めて実行。今度はきっとうまく行く。
Ruby -v で Rubyのバージョンを確認
2.1.1 になっていたらあとはEnjoy。