Почему я получаю ошибку Readline при попытке запустить консоль rails? - PullRequest
3 голосов
/ 14 февраля 2012

ОБНОВЛЕНИЕ: Я вероятно испортил свою систему, пытаясь найти решения где-нибудь еще. Я начал с нуля, и Ruby 1.9.3 установлен без помех. Теперь попробуем получить ree-1.8.7, чтобы играть хорошо вместе с ...


Я пытаюсь установить Ruby 1.9.3, используя RVM на Kubuntu (11.10, я считаю). До сих пор у меня было много проблем с Readline, но я нашел ответ на все вопросы, кроме этого.

Я установил Ruby 1.9.3 следующим образом:

rvm install 1.9.3
# Install of ruby-1.9.3-p0 - #complete 
cd ~/.rvm/src/ruby-1.9.3-p0/ext/readline/
~/.rvm/src/ruby-1.9.3-p0/ext/readline $ ../../ruby extconf.rb --with-editline-dir="/usr" --with-readline-dir="/usr"
# any other way of doing this resulted in simply readline not being loaded when trying to start the console
# I have libreadline6 and libreadline6-dev installed (and all the packages requested in `rvm requirements`
make install
# compiling readline.c                                                                                                                                                                                      
# linking shared-object readline.so                                                                                                                                                                         
# /usr/bin/install -c -m 0755 readline.so /home/mbillard/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/x86_64-linux                                                                                    
# installing default readline libraries 

Пока все выглядит нормально, но когда я пытаюсь запустить консоль, я получаю эту ошибку:

/home/mbillard/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/completion.rb:9:in `require': /home/mbillard/.rvm/usr/lib/libreadline.so.6: undefined symbol: UP - /home/mbillard/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/site_ruby/1.9.1/x86_64-linux/readline.so (LoadError)
  from /home/mbillard/.rvm/rubies/ruby-1.9.3-p0/lib/ruby/1.9.1/irb/completion.rb:9:in `<top (required)>'
  from /home/mbillard/.rvm/gems/ruby-1.9.3-p0@taskman/gems/railties-3.2.1/lib/rails/commands/console.rb:3:in `require'
  from /home/mbillard/.rvm/gems/ruby-1.9.3-p0@taskman/gems/railties-3.2.1/lib/rails/commands/console.rb:3:in `<top (required)>'
  from /home/mbillard/.rvm/gems/ruby-1.9.3-p0@taskman/gems/railties-3.2.1/lib/rails/commands.rb:38:in `require'
  from /home/mbillard/.rvm/gems/ruby-1.9.3-p0@taskman/gems/railties-3.2.1/lib/rails/commands.rb:38:in `<top (required)>'
  from script/rails:6:in `require'
  from script/rails:6:in `<main>'

Я пытался использовать rvm install 1.9.3 --with-readline-dir="$rvm_path/usr" и $rvm_path при компиляции Readline в приведенной выше команде, но это привело к этой ошибке:

checking for tgetnum() in -lncurses... yes
checking for readline/readline.h... yes
checking for readline/history.h... yes
checking for readline() in -lreadline... no
checking for readline() in -ledit... no
checking for editline/readline.h... no

Итак, спасибо за любую помощь, которую вы можете предоставить.

Ответы [ 3 ]

6 голосов
/ 14 февраля 2012

Пожалуйста, прочитайте вывод:

rvm requirements

Он покажет вам список библиотек, которые вам нужно установить, чтобы хорошо использовать Ruby

После установки всех библиотек, установите чистый rvmlibs и переустановите Ruby:

rm -rf $rvm_path/usr
rvm reinstall 1.9.3
5 голосов
/ 14 февраля 2012

Вам необходимо установить пакеты разработки readline. (Вот чем мой ответ отличается от другого существующего):

apt-get install libreadline-dev

После этого вы можете переустановить Ruby (как уже упоминалось @mpapis), и все должно работать.

rvm reinstall 1.9.3
1 голос
/ 08 марта 2014

У меня была похожая проблема.попробуйте

brew link readline --force

, который работал для меня.

Я получил решение здесь:

Rails Console Not Loading

...