© 2024 WebHive

Если не собирается ruby из RVM

После выхода ruby версии 2.1.1 решил проверить как оно. Обновил RVM и получил засаду — после обновления не смог установить ruby. И даже хуже — старые версии так-же перестали собираться.

В логах компиляции ruby обнаружил вот такое:

1
2
3
4
5
6
7
readline.c:1886:26: ошибка: «Function» undeclared (first use in this function)
rl_pre_input_hook = (Function *)readline_pre_input_hook;
^
readline.c:1886:26: замечание: each undeclared identifier is reported only once for each function it appears in
readline.c:1886:36: ошибка: expected expression before «)» token
rl_pre_input_hook = (Function *)readline_pre_input_hook;

Очевидно, что проблема с библиотекой readline. Видимо системная версия библиотеки оказалась не совместимой с требованиями для ruby.

На наше счастье RVM предоставляет возможность установить собственные версии библиотек-зависимостей. В частности readline и openssl.

Ставим readline

1
$ rvm pkg install readline

После этого у меня получилось установить ruby 2.1.1.

1
$ rvm install 2.1.1

Но при сборке версии 2.0.0 по прежнему возникала та-же ошибка. Решение — явно указать где искать нужную версию readline.

1
$ rvm install ruby-2.0.0-p353  -C --with-readline-dir=$HOME/.rvm/usr

Комментарии